The standard CHANGELOG.md template
The Keep a Changelog format is the most widely adopted convention. It uses six fixed section types and reverse-chronological versioning.
Minimal template (just the sections you need)
Most releases only use two or three sections. You don't have to include empty sections — only add the ones with content.
The six section types explained
- Added — New features. Anything a user can do now that they couldn't before.
- Changed — Existing features that work differently. Includes UI changes.
- Deprecated — Features that still work but will be removed. Give users time to migrate.
- Removed — Features that no longer exist. Say what to use instead.
- Fixed — Bug fixes. Describe the symptom, not the implementation.
- Security — Vulnerability fixes. Link to the CVE where applicable.
Rules for good changelog entries
- Write for users, not developers. "Fix NPE in AuthController" is a commit message. "Fix crash when logging in with a Google account" is a changelog entry.
- One line per change. If an entry needs more than one sentence, it's probably two changes.
- Most recent version at the top. Readers want to know what changed now, not in 2023.
- Keep [Unreleased] at the top. It collects changes for the next release as you go.
- Date every version.
[1.2.0] - 2026-06-01gives context about the pace of development.
FAQ
Where should CHANGELOG.md live?
In the root of your repository, alongside README.md. GitHub renders it automatically.
Should I maintain a changelog for every project?
For anything with external users or dependents, yes. For internal tools or personal projects, it's optional but worth it — changelogs are as useful to your future self as they are to others.
What's the difference between a changelog and release notes?
A changelog is the cumulative record in CHANGELOG.md. Release notes are platform-specific communications for each release. They often cover the same content but in different formats. See the full comparison.
Is ChangelogAI free?
Yes — completely free. Unlimited generations, no account required.
Generate from your commits automatically
Paste your git log and get a formatted CHANGELOG.md entry in seconds. Completely free, no account needed.
generate free →No account · No limits · Works with any git workflow