Commit Message Generator
Generate conventional commit messages following best practices
About this ToolHow it works, benefits & use casesTap to collapse
Compose a properly formatted Conventional Commits message by filling in fields rather than memorising the spec. Pick a type from the eleven conventional types — feat, fix, docs, style, refactor, perf, test, build, ci, chore, or revert — each with an inline description of what it means, add an optional scope, and write a short description. Optional fields cover a longer body, a breaking-change flag that appends the "!" marker and a "BREAKING CHANGE:" footer, and a comma-separated list of issue references that become a "Refs:" footer. The message assembles live as "type(scope): description" with body and footers spaced correctly. A validator runs against the result and flags errors (missing or too-short description, malformed header) and warnings (description starting with a capital, ending in a period, or running long), while a green confirmation appears when the message is clean. Built-in examples can be loaded into the form with one click, and the configuration is captured in a shareable URL.
How to Use
- 1Choose the commit Type from the dropdown — its description updates to explain when to use it.
- 2Optionally add a Scope (the module affected) and write a concise Description in lowercase, imperative mood.
- 3Add a longer Body, tick "This is a breaking change" to add the ! marker and breaking footer, or list issue references for a Refs footer as needed.
- 4Read the generated message as it updates live and check the validation feedback for errors or suggestions.
- 5Copy or download the message, or load one of the built-in examples to see the format applied.
Key Benefits
- Generates spec-compliant Conventional Commits with type, scope, body, and footers
- Eleven commit types each annotated with an inline description of its purpose
- Breaking-change toggle adds the ! marker and a BREAKING CHANGE: footer automatically
- Issue references become a properly formatted Refs: footer, handling #123 and JIRA-456 styles
- Live validation flags errors and warns about capitalisation, trailing periods, and length
- One-click examples load real messages into the form
- Configuration captured in a shareable URL plus copy and download
Common Use Cases
- Writing consistent commit messages on teams that enforce Conventional Commits
- Feeding semantic-release or changelog tools that parse feat/fix/BREAKING CHANGE
- Learning the Conventional Commits format by seeing each field assembled live
- Drafting a breaking-change commit with the correct ! marker and migration footer
- Linking commits to tracker issues with a clean, comma-separated Refs footer
Commit configuration
A new feature
Component or module affected
Brief description of the change (imperative mood, lowercase)
Detailed explanation of the motivation and implementation
Comma-separated list of issue numbers
Updates live as you type
Fill in at least a description to see the generated message.
Examples
feat(auth): add JWT token validation
feat(auth): add JWT token validation
fix(api): handle null response in user endpoint
fix(api): handle null response in user endpoint Refs: #123
feat(ui): redesign dashboard layout
feat(ui)!: redesign dashboard layout BREAKING CHANGE: Dashboard component props have changed
docs: update installation instructions
docs: update installation instructions
Conventional Commits format
type(scope): description [optional body] [optional footer(s)]
- Use lowercase for type and description.
- Keep the header line under 100 characters.
- Use imperative mood in the description.
- Separate subject from body with a blank line.
- Use the body to explain what and why, not how.
Was this tool helpful?
Share Your Experience
Help others discover this tool!
Related tools
- Semantic Versioning HelperParse, bump, and compare semver, plus a range tester (^ ~ x hyphen ||) and changelog generator
- Component Name GeneratorTurn a description into ranked, kind-aware component names with a file scaffold and a name validator (casing, collisions, clarity)
- Heroku Procfile GeneratorBuild a Heroku Procfile and matching app.json — process types, env vars, addons, dyno formation — plus a Procfile parser and audit
- Markdown TOC GeneratorGenerate table of contents for Markdown
- Package.json Scripts GeneratorGenerate common npm scripts for different project types and workflows
- Tailwind Config GeneratorVisually build a Tailwind config - theme extend, colors, spacing, fonts, screens, plugins - and export it as a v3 JS config or a v4 @theme CSS block
All eleven Conventional Commits types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, and revert. Selecting a type shows a short description of when to use it — for example feat is "A new feature" and fix is "A bug fix".
Tick "This is a breaking change" and the generator appends a "!" after the type/scope in the header. If you also fill in the breaking-change description, it adds a "BREAKING CHANGE: …" line to the footer, which is exactly what tooling like semantic-release looks for.

