DevTools Logo

CHANGELOG Generator

CHANGELOG Generator

Write a clean Keep a Changelog entry from grouped notes — in your browser

Release

One change per line under each heading

Examples

Small patch release with one fix

Input
version: 1.2.1
date: 2024-05-15
Added: (empty)
Changed: (empty)
Fixed: Crash when saving an empty form
Output
## [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

Input
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)
Output
## [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

Input
Added:
- New export button on the dashboard
* Dark mode support

Fixed:
  - Crash when saving an empty form
Output
## [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

  1. 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.

  2. 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.

  3. 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.

  4. 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

References & standards