Changelog Generator
Generate a structured CHANGELOG.md from Conventional Commits with auto-grouping, breaking changes detection, and multiple output formats.
About This Tool
The Changelog Generator is a free, browser-based tool that transforms Conventional Commits into a well-structured CHANGELOG.md file. Instead of manually sorting through your Git history and writing release notes by hand, paste your commit messages and get a ready-to-publish changelog in seconds.
The tool parses each line using the
Conventional Commits specification.
Commit types like feat, fix, docs, perf, refactor,
test, build, ci, and chore are automatically recognized
and grouped into human-friendly sections. Scoped commits such as
feat(auth): add OAuth2 retain their scope as a bold prefix so readers
can quickly scan which part of the codebase changed. Breaking changes
are detected from the ! marker (e.g. feat!:) or from a
BREAKING CHANGE footer and promoted to a prominent section at the top.
Three output formats are supported. Keep a Changelog follows the popular keepachangelog.com convention with Added, Changed, Fixed, and Removed sections. Simple outputs a clean, flat list grouped by the original commit type labels. GitHub Releases generates markdown optimized for pasting into a GitHub release body, including a blockquote for breaking changes and a compare link placeholder.
The tool pairs well with other DevToolbox utilities. Use the
Diff Viewer to compare two changelog versions,
the Markdown Preview to render the generated
markdown in real time, or the
Git Command Builder to construct the
git log command that extracts commits between two tags.
All processing happens entirely in your browser. Your commit messages are never sent to any server — there are no network requests, no logging, and no third-party services involved. This makes the tool safe to use with private repository histories and unreleased feature details.
How to Use
- Paste your commit messages into the Commit Messages textarea on the left, one commit per line. Each line should follow the Conventional Commits format:
type(scope): description. - Enter the Version number for the release (e.g.
1.2.0) in the version input field. - Select or adjust the Date using the date picker. It defaults to today.
- Choose an Output Format: Keep a Changelog, Simple, or GitHub Releases.
- The CHANGELOG.md output updates automatically in the right panel. Review the grouped sections and breaking changes.
- Click Preview to toggle between raw markdown and a rendered preview. Click Copy or press Ctrl+Shift+C to copy the output to your clipboard.
- Click the .md button to download the generated changelog as a
CHANGELOG.mdfile. Use Sample to load example commits and Clear to reset.
Popular Changelog Examples
FAQ
What is the Conventional Commits format?
Conventional Commits is a specification for writing standardized commit messages. Each message follows the pattern: type(scope): description. The type indicates the kind of change (feat, fix, docs, etc.), the optional scope narrows the affected area, and the description summarizes the change. An exclamation mark before the colon (feat!:) denotes a breaking change.
Which commit types are supported?
The tool recognizes the standard types: feat (Features), fix (Bug Fixes), docs (Documentation), style (Styles), refactor (Code Refactoring), perf (Performance Improvements), test (Tests), build (Build System), ci (CI/CD), chore (Chores), and revert (Reverts). Unknown types are still parsed and included under their original name.
How are breaking changes detected?
Breaking changes are detected in two ways: (1) an exclamation mark before the colon, such as feat!: or fix(api)!:, and (2) the presence of BREAKING CHANGE or BREAKING-CHANGE anywhere in the commit line. Detected breaking changes are grouped into a dedicated section at the top of the changelog.
What output formats are available?
Three formats are available. Keep a Changelog follows the keepachangelog.com specification with Added, Changed, Fixed, and Removed sections. Simple produces a flat grouped list using the original commit type labels like Features and Bug Fixes. GitHub Releases generates markdown suitable for pasting into a GitHub release body with blockquote-styled breaking changes and a compare link.
Can I use this with commits that are not in Conventional Commits format?
Lines that do not match the Conventional Commits pattern (type(scope): description) are skipped. The stats bar at the bottom shows how many lines were parsed versus skipped, so you can identify non-conforming commits and correct them. The tool requires at least one valid commit to generate output.
Is my data safe?
Yes. All parsing and markdown generation runs entirely in your browser using JavaScript. No data is sent to any server. You can verify this by opening the Network tab in your browser's developer tools while using the tool. Your commit messages and repository details stay completely private.
How do I get commit messages from my Git repository?
Run git log --oneline --no-decorate v1.0.0..HEAD in your terminal to get commits between a tag and HEAD. You can also use git log --pretty=format:'%s' for just the subject lines. Paste the output directly into the tool. The Git Command Builder tool on this site can help you construct the exact command.
Related Tools
Git Command Builder
Build Git commands visually. Select operations, options, and flags to construct the correct git command with explanations.
Diff Viewer
Compare two texts side by side with line-by-line and character-level diff highlighting.
Markdown Preview
Write and preview Markdown in real time with GFM support, tables, task lists, and HTML export.
Conventional Commits Linter
Validate commit messages against the Conventional Commits specification. Check type, scope, description, and body format.
Git Branch Name Generator
Convert ticket numbers and titles into clean git branch names with configurable naming conventions.
.gitignore Generator
Generate .gitignore files by selecting languages, frameworks, and IDEs. Combine multiple templates instantly.
Git Commit Message Generator
Generate Conventional Commits messages with a visual form. Select type, scope, description, body, and breaking changes.
Semantic Release Config Builder
Generate semantic-release configuration files visually. Select plugins, configure branches, set release rules, and export as JSON, YAML, or JS.
README Generator
Generate professional README.md files from a simple form. Choose templates, add badges, sections, and download instantly.
Code of Conduct Generator
Generate CODE_OF_CONDUCT.md files from Contributor Covenant, Citizen, Django, or custom templates with customizable sections.
Issue Template Builder
Build GitHub and GitLab issue templates visually. Generate YAML issue forms or classic Markdown templates with custom sections, labels, and assignees.
Release Notes Generator
Generate professional release notes from version info and change entries. Supports Keep a Changelog, GitHub Release, and Conventional Changelog formats.
CONTRIBUTING.md Generator
Generate professional CONTRIBUTING.md files for open source projects with templates for contribution types, commit formats, and PR processes.
Semver Calculator
Check semver range matches, compare versions, calculate increments, and batch-test version lists with semantic versioning rules.