Git Commit Message Generator
Build conventional commit messages with type, scope, description, body, footer, and breaking change notes. Live preview, subject length check, and copy ready output.
What the Git Commit Message Generator Does
The Git Commit Message Generator builds a conventional commit message from a structured form. Choose a commit type, add an optional scope, write a short description, and the tool assembles a message that follows the Conventional Commits specification. You can also add a body, a footer for issue references, and a breaking change note. The formatted result updates live and can be copied with one click.
Commit messages are documentation for everyone who will read the project history later, including your future self. A consistent format makes that history searchable and lets tools parse it automatically.
The Conventional Commits Format
A conventional commit looks like this: type(scope): description. The type is
required, the scope is optional, and the description is written in the imperative mood,
as if you were telling the codebase what to do: "add token refresh" rather than "added
token refresh". A body and footer can follow after a blank line.
| Type | Meaning | Version Bump |
|---|---|---|
| feat | A new feature for the user | Minor |
| fix | A bug fix for the user | Patch |
| docs | Documentation changes only | None |
| style | Formatting that does not change behavior | None |
| refactor | Code change that neither fixes a bug nor adds a feature | None |
| perf | A change that improves performance | None |
| test | Adding or correcting tests | None |
| build | Build system or dependency changes | None |
| ci | Continuous integration configuration | None |
| chore | Maintenance that touches no source or test files | None |
| revert | Revert a previous commit | Depends |
Why Consistent Commit Messages Matter
- Automated changelogs: tools such as semantic-release and standard-version read commit types to decide the next version number and generate release notes.
- Clear history: a formatted log makes it obvious what changed and why when you review the project weeks later.
- Faster bisecting: when a bug appears, clean messages narrow down which commit introduced it.
- Better reviews: a well explained commit gives reviewers context before they open the diff.
- CI enforcement: commitlint and similar tools reject messages that do not match the agreed convention, so consistency stays automatic.
How to Use the Generator
- Select the commit type that matches your change.
- Add a scope if the change belongs to a specific area, such as auth, api, or ui.
- Write a short description in the imperative mood.
- Optionally add a body that explains what changed and why, and a footer such as Closes #128.
- Tick the breaking change box if the change is not backward compatible, and describe the migration path.
- Copy the generated message into your terminal with git commit.
Writing a Good Subject and Body
Keep the subject under 50 characters when you can and never past 72, because git log shows the subject on one line in most terminals. Do not end the subject with a period. Use the body to explain the reasoning, the trade-offs, and anything a reviewer would otherwise have to ask about. Wrap body lines at 72 characters so the message reads well in a terminal. Together, the subject and body should let a reader understand the change without opening the diff.
Breaking changes deserve extra care. A commit marked with an exclamation mark after the type or scope, and a BREAKING CHANGE footer, tells semantic versioning tools to publish a major release. Describe what changed, what breaks, and how consumers should migrate.
Related Tools
The Git Commands Memo is a quick reference for everyday git commands. To review the changes you are about to commit, the Diff Viewer highlights differences between two texts side by side. When a commit changes configuration files, the Env File Parser checks them for mistakes before you commit.
Frequently Asked Questions
What is the difference between the exclamation mark and the BREAKING CHANGE footer?
Both signal a breaking change. The exclamation mark in the subject is a quick visual flag, and the BREAKING CHANGE footer carries the explanation. Including both is the common convention when a change breaks compatibility.
Should the scope be lowercase?
Yes, scopes are conventionally lowercase and short, such as auth, api, or ui. The generator lowercases the scope and replaces spaces with hyphens so the result stays consistent.
Why should the description use the imperative mood?
Git itself uses the imperative in messages it generates, like "Merge branch" and "Revert commit". Following that style makes the log read as a list of instructions the commit applies to the codebase.
Can I use this format for any repository?
Conventional Commits is a widely adopted specification, but some projects use their own rules. Check the repository's contribution guide first, and adapt the generated message if the project expects a different format.
Is my commit text sent anywhere?
No. The message is composed entirely in your browser with JavaScript. Nothing is uploaded, which means commit details from private or proprietary projects stay on your device.