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.