All Tools View Categories About Contact Privacy

Conventional Commits Message Generator

Pick the type, add a scope, write the subject — get a perfect conventional-commits message ready to paste into git commit, built locally in your browser.

Runs entirely in your browser — your choices never leave this page.
0 / 50
Your message appears here as you type.
0
subject chars
0
body lines
0
total chars
Messages you build are saved here for reuse.

About Conventional Commits Message Generator

Writing a good commit message is a habit, but the format is a rule. Conventional Commits gives teams a fixed shape — type(scope): subject, with optional body and trailer lines — so that every entry in git log reads the same way, changelogs can be generated from history, and version bumps can be derived from what actually changed. The friction is remembering the exact syntax, the right type, and the punctuation at the moment you commit. This generator removes that friction: you pick the parts and get the finished line, ready to paste.

The message is assembled from four real choices. First the type — feat for a new feature, fix for a bug repair, then docs, style, refactor, perf, test, build, ci, chore and revert, each described so the choice is unambiguous. Second an optional scope in parentheses, such as auth, api or db, which says where the change lives. Third the subject — the imperative sentence with no trailing period that summarises the change. A live counter keeps it under the classic 50-character soft limit and the 72-character maximum, turning amber and then red as you approach them. Fourth the body and footer: a few lines explaining what changed and why, a Breaking change flag that emits the machine-readable BREAKING CHANGE: trailer, and issue references like Closes #123 or Ref #456.

Two toggles shape the output for different conventions. Turn on emoji prefixes to use the Gitmoji map — 🚀 feat, 🐛 fix, 📖 docs — which many teams prefer for a scannable history. Turn on Uppercase type to match projects that write Feat:a or FIX:. The preview updates on every keystroke, and the statistics show the final length of the subject, body and total message so you can spot a too-long line before it lands in history.

Because everything runs in the browser — the type catalog, the emoji map and the formatter are all bundled with the page — the generator never uploads a character, works offline, and is safe even for proprietary work. When the message reads right, one click copies the full text including body and trailers. Recent messages are stored locally in your browser and shown beneath the preview, so the feat(auth): log users out message you sent yesterday is right there to reuse. The result is a commit history that reads like a well-edited changelog — and the team convention stops being a wall of rules and becomes the path of least resistance.

Features

  • All 11 conventional types — feat, fix, docs, style, refactor, perf, test, build, ci, chore and revert, each with a clear description.
  • Optional scope — wrap any module name in type(scope): subject with one keystroke.
  • Subject length counter — live 50/72 guidance that turns amber and red as you type.
  • Breaking change flag — emits the machine-readable BREAKING CHANGE: trailer.
  • Issue footer builder — Closes #, Ref # and related links formatted automatically.
  • Gitmoji prefixes — optional 🚀 / 🐛 / 📖 style rendered by type.
  • Live preview and statistics — subject, body and total lengths update on every change.
  • Recent messages — the last ten builds are saved in local storage for instant reuse.
  • Copy and download — paste the message into git commit in one click, fully client-side.

How to Use

  1. Pick a type — feat, fix, docs, style, refactor, perf, test, build, ci, chore or revert.
  2. Add an optional scope such as auth or api — or clear the box for type: subject.
  3. Write the subject in imperative mood and watch the length counter.
  4. Describe the change in the body, mark it breaking if required, and add issue references.
  5. Read the preview and the statistics to check the final length.
  6. Copy or download the message and paste it into git commit — done.

Examples

Example 1 — Bug fix. Type fix, scope auth, subject handle token expiry, body explains the stale-cache cause, footer Closes #482. Output: fix(auth): handle token expiry, followed by the body and the trailer.

Example 2 — New feature with Gitmoji. Type feat, emoji on, scope api, subject add pagination to list endpoint. Output: 🚀 feat(api): add pagination to list endpoint.

Example 3 — Breaking refactor. Type refactor, scope db, subject merge query builders, Breaking change ticked with the description on the trailer line.

Example 4 — Chore without scope. Type chore, scope empty, subject update editorconfig. Output: chore: update editorconfig.

Example 5 — Docs with issues. Type docs, subject clarify install instructions, footer Ref #50. Output: docs: clarify install instructions, then Ref #50.

Example 6 — Uppercase house style. Turn on Uppercase type to produce FIX(auth): ... for a repository that prefixes with a capital letter.

Benefits

  • Consistent history — every message follows the same machine-readable shape.
  • Faster commits — no fumbling with parentheses, colons or trailer syntax at the terminal.
  • Changelog-ready — conventional histories feed automatic changelog and version tools.
  • Right length, always — the counter prevents the wall-of-text subject.
  • Team-friendly — new contributors learn the convention by building messages, not reading a guide.
  • Nothing uploaded — generation runs entirely in the browser, safe for private work.
  • One-click reuse — recent messages persist across sessions in local storage.

Frequently Asked Questions

What is the Conventional Commits format?
A short standard for commit messages: <type>(<scope>): <subject>. For example fix(auth): handle token expiry. Optional body lines explain what and why, and trailers like BREAKING CHANGE: or Closes #123 add structured metadata that tools read automatically.
How do I build a message with this tool?
Pick a commit type, type an optional scope, write a subject under the recommended length, add a body if the change needs explanation, mark it breaking if needed, and the formatted message appears instantly. Copy it or download it and paste into git commit.
What are the allowed types?
feat (new feature), fix (bug fix), docs, style, refactor, perf, test, build, ci, chore and revert. If you turn on emoji prefixes, the matching Gitmoji is added to each type automatically.
What does “breaking change” mean?
A change that breaks existing behaviour, for instance a renamed endpoint or a dropped function. It is recorded with BREAKING CHANGE: <description> in the trailer, and versioning tools bump the major version when they spot it.
How long should the subject be?
Keep it short — 50 characters is the classic hard limit and 72 the maximum for the full first line including the prefix. The counter turns amber around 50 and red past 72.
Is my message sent anywhere?
No. The generator runs entirely in your browser: the type catalog, emoji map and formatter are bundled with the page, and nothing is uploaded. It works offline.
Can I reuse recent messages?
Yes. The last ten messages you build are kept in the browser's local storage and shown below the preview, so copying a similar commit later is one click away.
Do the emoji prefixes follow a standard?
They follow the popular Gitmoji map — 🚀 for feat, 🐛 for fix, 📖 for docs, 🧩 for refactor and so on — which many teams adopt for scannable log view.