Keep a Changelog generator

Keep a Changelog is the most common format for a CHANGELOG.md: one section per version, newest first, with the date and changes grouped as Added, Changed, Deprecated, Removed, Fixed and Security. It is written for humans, not machines.

1. Paste commits

Tip: git log --oneline v1.4.2..HEAD or git log --format=%s. Conventional Commits work best, but plain messages are sorted by their first word.

2. Version

3. Release notes

Semantic version calculator

Saved you some time? Leave a tip, entirely optional.

ChangelogMaker produces exactly that block for your next release, including a version link reference to the compare view when you add your repository URL. Paste it at the top of your existing file under Unreleased.

How commits are sorted

Each line you paste is read as one commit. A leading hash from git log --oneline is kept separately, bullets are removed and merge commits are skipped. Conventional Commits are split into type, scope and subject; a ! after the type, or a following line that starts with “BREAKING CHANGE:”, marks the commit as breaking. Plain messages are classified by their first word: “Add” and “Implement” become features, “Fix” and “Resolve” become fixes, “Remove” and “Drop” become removals, and “Update” or “Improve” become changes.

For Keep a Changelog, features go under Added, fixes under Fixed, deprecations and removals under their own headings, anything mentioning security, CVEs or XSS under Security, and other user-visible changes under Changed. Docs, chores, CI, tests, build and style commits are hidden unless you include them.

Choosing the next version

ChangelogMaker follows semantic versioning. Any breaking change means a major bump, any new feature means a minor bump, and anything else is a patch. Before 1.0.0, breaking changes bump the minor number instead. You can always type your own release version, and the compare link and headings will use it.

Private by design

ChangelogMaker has no accounts, no server-side processing and never asks for repository access. Your commits stay in this browser and the latest input is saved in local storage on this device only.

Frequently asked questions

Which commits go under Changed?

Performance, refactoring and other non-feature changes that users may notice. Housekeeping such as chores and CI stays out unless you include it.

Can I keep an Unreleased section?

Yes. Clear the version and leave the current version empty and the heading becomes “Unreleased”.

Is Keep a Changelog the same as semantic versioning?

They are separate but designed to work together: the changelog lists what changed and semver says how big the change is.

Is ChangelogMaker free?

Yes. The changelog generator, release note formats and semver calculator are free with no account.

Are my commits uploaded?

No. Everything runs in your browser and your last input is saved only on this device.

More tools