Changelog generator: turn git commits into release notes

A changelog generator turns the commits or pull request titles of a release into notes your users can read: grouped into new, improved and fixed, with the internal noise left out. Free, no signup, and it runs in your browser.

Tip: git log --oneline v2.3.0..HEAD and paste the output. Nothing leaves your browser.

v2.4.0 — October 9, 2026

Breaking changes

  • Editor: Markdown shortcuts replace the old toolbar (#137)

New

  • Billing: Annual plans with 2 months free (#142)
  • Dark mode

Improved

  • Search: Results load 3x faster on large workspaces
  • Improve onboarding checklist copy

Fixed

  • Crash when uploading images larger than 10 MB (#139)
  • Calendar: Events showing in the wrong timezone for users in Asia

Removed

  • Legacy CSV importer

12 lines → 8 user-facing changes · 3 internal hidden · 1 merge skipped

Now tell the people who asked for it.

Post this changelog in Melonhelp Feedback and everyone who requested or voted for a change gets an email. Free plan, no card.

Publish it free

Get your commits in one command

Paste whatever your history looks like. Hashes, bullets, list numbers and(HEAD -> main)decorations are stripped, and duplicate lines are merged.

Everything since your last tag

git log --oneline --no-merges v2.3.0..HEAD

The last two weeks

git log --oneline --no-merges --since="2 weeks ago"

Merged pull requests (GitHub CLI)

gh pr list --state merged --limit 50 --json number,title --jq '.[] | "\(.title) (#\(.number))"'

How each line gets sorted

Conventional Commits prefixes win. Lines without one are sorted by their first verb, and anything that matches nothing lands in Improved. To move a line, add a prefix like fix: in the box.

  • feat:, feat(scope):, or a line that starts with add, introduce, support→ New
  • perf:, or improve, update, speed up, redesign, rename→ Improved
  • fix:, or fix, resolve, prevent, handle→ Fixed
  • remove, drop, delete, deprecate→ Removed
  • feat!:, fix!:, or a BREAKING CHANGE note→ Breaking changes
  • chore, ci, test, docs, build, style, refactor, version and dependency bumps→ Internal (hidden)
  • Merge pull request…, Merge branch…→ Skipped

What makes a changelog worth reading

  • Say what the user can do now. “Export invoices as CSV” beats “Add CSV serializer to InvoiceService”. Commit messages describe code; changelog lines describe outcomes. Edit the generated lines where the two differ.
  • One line per change, newest release on top. Nobody scrolls past the first screen. Put the version and the date on every release so support can answer “is this fixed in my version?”.
  • Keep the plumbing out. Dependency bumps, CI fixes and refactors matter to you, not to the person paying for the product. If a refactor made something faster, write the “faster” part.
  • Close the loop with whoever asked. A changelog on a page gets read by the few who visit it. The users who requested a feature or reported a bug should hear about it directly; that is what turns a changelog into retention. Melonhelp Feedback does it by emailing the people who asked for or voted on each change when you publish it.

Changelog generator FAQ

What is a changelog?

A dated list of the changes in each version of a product, written for the people who use it. A good one groups changes into new features, improvements and fixes, and leaves out internal work like refactors, CI tweaks and dependency bumps.

What's the difference between a changelog and release notes?

Mostly scope. A changelog is the running history of every version, usually one page you keep adding to. Release notes cover a single release and often add context, screenshots or upgrade steps. The output of this tool works as either: paste one release's commits and you get that release's notes, ready to add on top of your changelog.

Does this tool send my commits anywhere?

No. It runs entirely in your browser with fixed rules, no AI and no server calls, so private repository history never leaves the page.

Does it support Conventional Commits?

Yes. feat goes to New, fix to Fixed, perf to Improved, and a type with ! or a BREAKING CHANGE note goes to Breaking changes. chore, ci, test, docs, build, style and refactor are treated as internal and hidden unless you turn them on. Scopes like feat(billing) become a bold label. Commits without a prefix are sorted by their first verb: add, fix, remove, improve and so on.

How do I generate a changelog from GitHub pull requests?

Run gh pr list --state merged --limit 50 --json number,title --jq '.[] | "\(.title) (#\(.number))"' with the GitHub CLI, paste the output, and add your repo as owner/repo so every #number links to its pull request.

Is it compatible with Keep a Changelog?

It follows the same idea: newest version first, a date on every release and changes grouped by type. Keep a Changelog names its groups Added, Changed, Deprecated, Removed, Fixed and Security; this tool uses New, Improved, Fixed and Removed, plus Breaking changes, which read better for end users. Rename the headings if you need the exact spec.

Keep exploring

Free Changelog Generator: Turn Git Commits into Release Notes