CHANGELOG Generator
Write a clean Keep a Changelog entry from grouped notes — in your browser
Examples
Small patch release with one fix
version: 1.2.1
date: 2024-05-15
Added: (empty)
Changed: (empty)
Fixed: Crash when saving an empty form## [1.2.1] - 2024-05-15
### Fixed
- Crash when saving an empty form
Empty buckets are dropped entirely, so a single-fix patch produces a clean two-section block with no whitespace.
Major release covering all six buckets
version: 2.0.0
date: 2024-09-01
Added: Multi-user support
Changed: Database migration to PostgreSQL 16
Deprecated: Legacy XML-RPC endpoint
Removed: Support for Node 16
Fixed: Memory leak in worker pool
Security: Updated jsonwebtoken to 9.0.2 (CVE-2022-23529)## [2.0.0] - 2024-09-01
### Added
- Multi-user support
### Changed
- Database migration to PostgreSQL 16
### Deprecated
- Legacy XML-RPC endpoint
### Removed
- Support for Node 16
### Fixed
- Memory leak in worker pool
### Security
- Updated jsonwebtoken to 9.0.2 (CVE-2022-23529)
All six Keep-a-Changelog sections are emitted in their canonical order, each only when non-empty.
Lines that already start with a dash are cleaned up
Added:
- New export button on the dashboard
* Dark mode support
Fixed:
- Crash when saving an empty form## [1.2.0] - 2024-05-15
### Added
- New export button on the dashboard
- Dark mode support
### Fixed
- Crash when saving an empty form
The builder strips leading "- " and "* " from each line and trims whitespace, so you can paste straight from a bulleted list.
About this tool
The CHANGELOG Generator turns the release notes you already have in your head into a clean, Keep-a-Changelog-style entry, ready to paste into CHANGELOG.md. Pick a version, a date, and drop your notes into the six standard buckets — Added, Changed, Deprecated, Removed, Fixed, Security — and the tool emits a versioned Markdown block on the right.
Each bucket is rendered as a Markdown heading only when it has at least one entry, so the output stays tight. Leading dashes, asterisks, and whitespace are trimmed from every line, so you can paste bullet points straight from a pull-request description or commit message without reformatting them.
The tool runs entirely in your browser. Your release notes are never uploaded, saved, or logged — only the rendered Markdown leaves your device, and only when you copy it.
How to use
Set version and date
Type the version (e.g. 1.2.0) and the release date. The date defaults to today; clear it for a version-only heading.
Drop notes into each bucket
Add one note per line under Added, Changed, Deprecated, Removed, Fixed, or Security. Dashes and asterisks at the start of each line are stripped automatically.
Preview the rendered Markdown
The right-hand pane updates as you type. Empty buckets are skipped, so a Fix-only release will not show a blank "### Changed" section.
Copy and append
Click Copy to copy the entire block (the version heading plus all buckets with content) and paste it under ## [Unreleased] or above the next version in CHANGELOG.md.
Use cases
Writing release notes at ship time
Keep a running draft under ## [Unreleased] in CHANGELOG.md while the release is in progress, then drop the final notes into the generator and copy the versioned block when you tag.
Compiling notes from a PR list
Aggregate the bullet points from every merged PR, sort them into the right Keep-a-Changelog bucket, and let the generator produce the final Markdown.
Documenting a security-only release
Patch releases that only touch Security still benefit from a dated version heading — the generator emits just the Security section without empty placeholders.
Pre-release / beta announcements
Use the version field with a pre-release suffix (e.g. 2.0.0-beta.1) and the tool will emit a correctly versioned heading that Semantic Versioning tooling can parse.
Common mistakes
Mistake:Combining multiple notes into one paragraph under a single bucket.
Fix:Use one line per note. The generator splits on newline and emits each note as a separate bullet, which is what downstream tools (release-please, standard-version) parse.
Mistake:Leaving the date field empty and wondering why the heading looks wrong.
Fix:An empty date field is valid — the tool emits just "## [version]" with no trailing dash. Clear the date on purpose for this case, otherwise fill it in.
Mistake:Writing a hotfix under Added instead of Fixed.
Fix:Keep-a-Changelog is strict: anything that repairs existing behavior belongs under Fixed. Use Added only for new user-facing functionality.
Mistake:Forgetting to bump the version in the heading.
Fix:The generator sets the heading from the version field, not from the previous entry. Always update the version field at the start of writing a release.
Mistake:Copying bullet points with leading stars that produce double bullets.
Fix:The builder already strips leading "- " and "* " from each line, so a single bullet is emitted regardless of the source. Paste bulleted lists straight in.
Frequently asked questions
Related guides
Semantic Versioning: How Versions Bump, Compare and Precedence Work
What major/minor/patch actually communicate, how prerelease versions sort, why ^ and ~ matter in package.json, and how to bump correctly.
How to Keep a Changelog Your Users Will Actually Read
The Keep a Changelog conventions — the six standard categories, how they map to semantic versioning, and what to leave out.
References & standards
Related tools
.htaccess Generator
Build an Apache .htaccess — HTTPS redirects, rewrites, error pages, security headers, and basic auth
Ansible Playbook Generator
Build an Ansible playbook — hosts, vars, and tasks with modules — as YAML
Apache Config Generator
Build an Apache 2.4 VirtualHost — ServerName, DocumentRoot, Directory, aliases, and optional SSL
AWS Architecture Diagram
Drag-and-drop AWS service blocks, connect edges and export architecture diagrams as SVG
AWS Pricing Calculator
Estimate monthly AWS costs from static list prices with a Chart.js breakdown
Azure Architecture Diagram
Compose Azure architecture diagrams with VM, Storage, Functions, AKS blocks and SVG export