Changelog Generator

Turn commit lines into clean release-note Markdown.

Markdown output

How to Use

  1. Set the version heading — a release number like 1.4.0, or leave it as Unreleased
  2. Paste your commit subjects or pull request titles, one per line (git log --pretty=%s gives you exactly this)
  3. Read the grouped Markdown on the right — it updates as you type
  4. Copy it into your existing CHANGELOG.md, or download a fresh file

How Commits Map to Changelog Sections

Conventional commits already encode the information a changelog needs — the type prefix before the colon says what kind of change it was. This tool reads that prefix and files each line under the matching heading, in a fixed order so releases always read the same way.

Commit prefixChangelog section
feat, featureAdded
fix, bugfixFixed
perf, refactor, styleChanged
security, secSecurity
docs, docDocumentation
chore, test, ci, buildLeft out of the changelog

Working from messy input

You do not need a clean conventional-commit history. Any line that has no recognisable prefix is filed under Changed, and a leading - or * bullet plus a leading issue reference like #482 is stripped automatically. That means you can paste a raw list of merged pull request titles and still get a readable release note, then edit the wording afterwards.

Frequently Asked Questions

Which commit types are grouped?

feat and feature entries become Added, fix and bugfix become Fixed, perf, refactor, and style become Changed, docs becomes Documentation, and security becomes Security.

Can I paste PR titles instead?

Yes. Lines that are not conventional commits are grouped under Changed, so you can paste a list of pull request titles and still get a clean release note.

Why did some of my commits disappear?

chore, test, ci, and build commits are dropped on purpose. They are housekeeping that readers of a changelog do not care about, so leaving them out keeps the release note focused on user-visible change.

Does it strip bullets and issue numbers?

Yes. A leading - or * and a leading issue reference such as #482 are removed, so you can paste straight from git log or a pull request list without cleaning it up first.

What format is the output?

A Keep a Changelog style Markdown document: a # Changelog title, a ## heading for the version you name, and ### Added / Fixed / Changed / Security / Documentation subsections. Download it as CHANGELOG.md or copy it into an existing file.

Is my commit history uploaded anywhere?

No. Parsing and formatting run entirely in your browser, and your input is autosaved only to this browser local storage.

Related Tools