// git tooling

Git Commit to Changelog Generator

Paste your git log and get a clean, human-readable changelog. Works with Conventional Commits or messy history, on GitHub, GitLab, Bitbucket, or any git workflow.

The problem with raw commit messages

Git commit messages are written for other developers in the moment — fix: null ref in auth middleware, refactor session store, wip. They're a record of how the code changed, not what changed for the user. Pasting them straight into a changelog gives you something nobody outside your team can read.

A git-commit-to-changelog generator does the translation step: it reads your commit history and rewrites it into release notes a user can understand. fix: null ref in auth middleware becomes "Fixed a login error affecting users with expired sessions." That single translation is the whole job — and it's the part nobody enjoys doing by hand after every release.

How to get your commit log

You don't need to connect a repository — just copy your commits as text. A clean one-line-per-commit log is ideal:

terminal
git log --oneline -20 # or, for a specific range since the last tag: git log v2.3.0..HEAD --oneline

Paste the output into ChangelogAI and pick your format. That's it — no OAuth, no API token, no repo access.

From commits to changelog — a real example

input — git log --oneline
a1f3c9 fix: null ref in auth middleware 8b2e1d feat: add CSV export to dashboard 4c7a90 perf: lazy-load report charts 2d9f44 chore: bump deps e6b108 fix: safari upload crash 1a0c72 wip dark mode
output — generated changelog
## v2.4.0 ### Added - Export any dashboard view to CSV ### Improved - Reports now load noticeably faster ### Fixed - Login error for users with expired sessions - Crash when uploading images on Safari

Notice what happened: the chore: bump deps and wip dark mode noise was filtered or held back, the technical phrasing was rewritten for users, and everything was grouped by impact. That's the difference between a commit log and a changelog.

Conventional Commits vs messy history

If your team uses Conventional Commits (feat:, fix:, perf:, docs:), the generator uses those prefixes to group changes accurately — feat becomes a feature, fix becomes a bug fix, and so on.

But most real repositories aren't that disciplined, and that's fine. If your history is full of wip, fix stuff, and misc, turn on improve mode — it cleans up vague messages and infers intent from the change before generating. You don't need to have followed a commit convention for a year to get a usable changelog today.

Works with any git host

Because you paste the log as text, it's host-agnostic. The same workflow covers GitHub, GitLab, Bitbucket, self-hosted Git, or even svn log output reformatted. There's nothing to install and nothing to authorize.

FAQ

Do I have to use Conventional Commits?

No. The generator works best with structured prefixes like feat: and fix:, but it handles unstructured history too — use improve mode to clean up vague messages first.

Does it connect to my repo?

No. You paste commit text manually, so there's no OAuth, no token, and no repository access. Your code never leaves your browser except as the commit text you choose to send for generation.

How many commits can I paste at once?

A typical release of 10–30 commits works well. For very large ranges, generate per milestone or tag rather than dumping hundreds of commits at once — the output stays sharper.

What's the difference between this and the GitHub release notes generator?

They share the same engine. This page focuses on the raw git log → changelog workflow; the GitHub release notes generator formats the output specifically for a GitHub Release.

Turn your commits into a changelog

Paste your git log, pick a format, and copy the result. No account, no repo connection.

try free →