Stop Writing Changelogs by Hand
This changelog generator turns a pasted list of commits into a properly structured, Keep a Changelog format document in one step, no manually copying commit messages into headers and bullet points. Paste your commits and generate changelog from commits content instantly: entries are grouped, breaking changes are called out separately, and the result is ready to drop straight into your repository's CHANGELOG.md. This is a genuinely automatic conventional commits to changelog pipeline, not a template you fill in by hand.
How to Use This Changelog Generator
Paste your commits one per line, this markdown changelog generator accepts raw git log --oneline output directly, commit hashes and leading bullet markers are stripped automatically so you don't need to clean up the paste first. Optionally set a version number and date for a dated release heading, leave both blank for an "Unreleased" section instead. Click Generate, then copy the result or download it as CHANGELOG.md.
How Commits Get Grouped Into Sections
Each commit's Conventional Commits type maps to a specific changelog section automatically, so a changelog.md generator run against a real commit history reads like it was organized by hand. As an auto changelog generator, it doesn't require you to categorize anything yourself, the type prefix already tells it exactly which section an entry belongs in.
| Commit Type | Changelog Section |
|---|---|
| feat | Added |
| fix | Fixed |
| perf | Performance |
| refactor, style, chore | Changed |
| docs | Documentation |
| test | Tests |
| build | Build |
| ci | CI |
| revert | Reverted |
| ! or an inline BREAKING CHANGE note | Breaking Changes (listed first) |
| anything else | Other |
What Format Does This Expect?
This tool expects one commit per line, matching what git log --oneline naturally produces, so building a changelog from git log output is as simple as copying that command's output directly into the input. It automatically strips a leading commit hash and a leading -/* bullet marker if either is present. What it doesn't do: parse a full multi-line commit message body or a footer-style BREAKING CHANGE: trailer on its own line, only the ! shorthand in the header or a BREAKING CHANGE mention on the same line as the commit subject is detected. If your team relies on footer-style breaking-change notes, add the ! marker to the header line instead before pasting.