Conventional Commit Generator
Generate standardized Git commit messages.
Copy the message above and paste it into your terminal: git commit -m "..."
What are Conventional Commits?
Conventional Commits is a lightweight specification for writing standardized commit messages. Every commit begins with a type, an optional scope in parentheses, and a short description, in the form type(scope): description. The predictable structure makes commit history easier to read and, more importantly, easier for automated tools to parse.
The generator supports eleven types: feat for a new feature, fix for a bug fix, chore for build or tooling changes, docs for documentation, refactor for code changes that neither fix a bug nor add a feature, test for tests, style for formatting-only changes, perf for performance improvements, ci for continuous-integration changes, build for build-system or dependency changes, and revert for reverting a previous commit.
After the header line you can add an optional body, an optional BREAKING CHANGE note, and an optional footer. The tool places a blank line before each of these blocks, so the final message reads: header, blank line, body, blank line, BREAKING CHANGE, blank line, footer. Only the header — the type and description — is required.
The page pre-fills a complete example, feat(auth): add login with Google OAuth with a body and the footer Closes #123, #456, and regenerates the message live as you type. Copy it with one click and paste it into your terminal. All processing is client-side.
Key Concepts
- Type — a keyword such as
feat,fix, ordocsthat classifies the change. - Scope — an optional noun describing the affected area, e.g.
authorapi. - Description — a short, imperative summary after the colon.
- Body — optional details, separated from the header by a blank line.
- BREAKING CHANGE — optional notice of an incompatible change.
- Footer — optional metadata such as issue references.
How to Use
- Choose a type — Select one of the eleven commit types from the Type dropdown.
- Add an optional scope — Enter the part of the codebase affected, such as
auth,api, ornavbar. - Write the description — Add a short, imperative summary. The type and description are required for output.
- Add optional body, breaking change, and footer — Expand the message with details, a
BREAKING CHANGEnote, or issue references. - Copy the message — Click Copy and paste the result into
git commit. The Example button loads a ready-made message.
Commit Type Reference
| Type | Purpose |
|---|---|
| feat | A new feature |
| fix | A bug fix |
| chore | Build process or auxiliary tool changes |
| docs | Documentation only changes |
| refactor | A code change that neither fixes a bug nor adds a feature |
| test | Adding or correcting tests |
| style | Formatting changes that do not affect meaning |
| perf | A change that improves performance |
| ci | Changes to CI configuration or scripts |
| build | Changes to the build system or dependencies |
| revert | Reverts a previous commit |
Worked Examples
- Feature with scope, body, and footer —
feat(auth): add login with Google OAuth, followed by a description body and the footerCloses #123, #456. - Bug fix without extras —
fix(api): handle null response, with no body, breaking change, or footer. - Documentation change with no scope —
docs: update README installation steps. - Breaking refactor —
refactor(core): extract parser, then aBREAKING CHANGE: removed parseLegacy()line. - Dependency update —
build(deps): bump eslint to v9. - Reverting a commit —
revert: feat(auth): add login with Google OAuth.
Tips and Common Mistakes
- Type and description are required — without both, the output shows a placeholder comment instead of a message.
- Use the imperative present tense — write
add, notaddedoradds. - Keep the description short and lowercase — save the detail for the body and skip a trailing period.
- Flag incompatible changes — use the Breaking Change field so major version bumps and changelogs are detected.
- Reference issues in the footer — for example
Closes #123, #456to link commits to tickets. - Add a scope only when it helps — omit it for changes that span the whole project.
Common Use Cases
Conventional Commits are widely adopted because a consistent message format pays off across the whole development workflow. Here are some of the most common reasons to use them.
- Team commit standards — give every commit a consistent, reviewable shape.
- Automated versioning — tools like semantic-release map types to major, minor, and patch bumps.
- Changelog generation — produce release notes directly from the commit history.
- Searchable history — filter commits by type or scope when investigating changes.
- Contributor onboarding — make it obvious how to describe a change correctly.
- Issue traceability — link commits to tickets through footer references.
Frequently Asked Questions
What is the difference between feat and fix?
feat introduces a new user-facing feature, while fix repairs a bug. Types like chore, docs, and style describe changes that do not alter user-facing behavior.
Does this tool require internet access?
No. The message is generated entirely in your browser and works offline after the page loads.
Can I use this with semantic-release?
Yes. Conventional Commits are the standard input for semantic-release; the commit types determine version bumps and changelog entries.
How do I signal a breaking change?
Enter the note in the Breaking Change field. The tool outputs a BREAKING CHANGE: line separated from the previous block by a blank line.
Is a scope required?
No. The scope is optional; omit it for changes that span the whole project or do not map to a single area.
Which commit types are supported?
Eleven types: feat, fix, chore, docs, refactor, test, style, perf, ci, build, and revert.
Are my commit messages sent to a server?
No. Everything runs client-side and nothing is transmitted, stored, or logged.
How does the output separate sections?
A blank line is inserted before the body, before the BREAKING CHANGE line, and before the footer, exactly as the specification expects.
Related Developer Tools
Changelog Generator
Generate CHANGELOG.md from commits
Git Log Formatter
Format and visualize git logs
Git Cheat Sheet
Browse common Git commands
Diff Checker
Compare text and code side by side
Slug Generator
Convert text to URL-friendly slugs
.gitignore Generator
Generate .gitignore files