Changelog generator

Last updated 20 August 2026.

Paste commit messages or pull request titles below and get a formatted changelog back. It runs in your browser, nothing is uploaded anywhere, and there is no sign-up. Conventional commit prefixes are grouped automatically; anything else is sorted by its leading verb.

Nothing yet. Paste some lines above and press Generate.

What it does with each line

The rules are deliberately simple and visible, so you can predict the output rather than guess at it:

  1. Conventional commits are grouped by type. `feat` becomes New, `fix` becomes Fixed, `perf` becomes Improved. A `!` before the colon, or a BREAKING CHANGE marker, moves the line to Breaking changes regardless of its type.
  2. Anything that is not a conventional commit is sorted by its first word. Add, Added, Introduce and Support become New; Fix, Fixed and Resolve become Fixed; Improve, Update, Speed and Optimise become Improved; Remove, Removed, Drop and Deprecate become Removed. Anything else lands in Other for you to sort out by hand.
  3. Noise is stripped: a trailing pull request number, a `Merge pull request ...` line, a scope in parentheses, and the conventional type prefix itself. The remaining sentence is capitalised.
  4. With the filter on, `chore`, `ci`, `test`, `build`, `style` and `refactor` lines are dropped, along with anything that looks like a dependency bump. This is the single biggest difference between a changelog people read and one they stop reading.

What it cannot do

It rewrites the shape of your commit messages, not their content. If a commit says `fix: race in MembershipCache.resolve()` then that is what comes out, and it is still a sentence about your code rather than about the user's experience. Turning "race in MembershipCache" into "invited members no longer see an empty dashboard" needs to know what the change did, which is the part a generator cannot infer from a commit subject line.

So treat the output as a first pass: correct structure, correct grouping, internal noise already gone, wording still yours to fix.

Common questions

Does anything I paste get uploaded?

No. The generator is a script on this page; the text never leaves your browser and there is no request to us when you press Generate. You can confirm that with the network tab open.

Do I have to use conventional commits?

No. Lines that follow the convention get grouped more accurately, and everything else falls back to the leading verb. A repository with ordinary sentence commit messages still produces a usable draft.

How do I get this from my repository automatically?

For a one-off, `git log --pretty=format:%s v1.2.0..HEAD` gives you exactly the input this expects. For something ongoing, git-cliff and github-changelog-generator both build a changelog file in CI from your commit history, and Changeloop drafts a user-facing entry per merged pull request and holds it for review.

Why is my output full of Other?

The leading verbs did not match anything known, which usually means commit subjects that start with a noun or a ticket id. Either edit them in the box before generating, or move the Other lines by hand afterwards.

Further reading: from conventional commits to a changelog, on what the commit format buys and where it stops.

The version that writes the sentences too

Changeloop reads the title and description of each merged pull request, not just the subject line, and drafts an entry about what changed for the user. It filters out the dependency bumps and refactors on its own, and holds every draft for you to edit before it is published. Free for one repository, no card.

Start free

or read the developer docs