Conventional commit message generator with git command

Pick a commit type, add an optional scope and a short description, and the tool formats a Conventional Commits message, checks the header length and gives you a ready git commit command.

Live demo · real result from this tool

Commit message

feat(parser): add CSV export Exports line items with one row per item and a totals row. Refs: #142 

As a command (POSIX shell)

git commit -m 'feat(parser): add CSV export' -m 'Exports line items with one row per item and a totals row.' -m 'Refs: #142'
Header length28 characters

Processed on your device — nothing is uploaded.

How to use the conventional commit generator

  1. Choose the Type, for example feat — A new feature or fix — A bug fix.
  2. Add a Scope (optional), such as the module name parser, and a short Description in the imperative (“add”, not “added”).
  3. Write a Body (optional) that explains why the change was made.
  4. Tick Breaking change if users must change something, and say what in What breaks.
  5. Add Issue references (comma-separated) and Co-authors (Name <email>, one per line), then copy the message or the command.

What it does and when to use it

Conventional Commits is a simple agreement about the first line of a commit message: type(scope): description. Because the format is predictable, tools can build release notes and pick the next version number from your history.

Use this tool while you learn the format, or when a repository enforces it with commitlint and your commits keep failing the check. The commitlint config generator sets up those rules. Messages in this style also make it quicker to fill in a release entry with the changelog generator, and the GitHub Actions generator can run the checks on every push.

How it works

The tool builds the message in three parts, separated by blank lines:

  • Header: type, the scope in brackets (spaces and brackets removed), ! for a breaking change, a colon and the description. A trailing full stop is dropped.
  • Body: your text, unchanged.
  • Footers: BREAKING CHANGE: …, then one line per issue, then Co-authored-by: lines. A plain number or #142 becomes Refs: #142. A reference that already starts with Refs, Closes, Fixes or Resolves is kept as you typed it.

The command version passes each paragraph with its own -m, so Git keeps the blank lines.

Worked examples

Feature with scope, body and issue (default values).

feat(parser): add CSV export

Exports line items with one row per item and a totals row.

Refs: #142

The header length is 28 characters.

Breaking fix that closes an issue. Type fix, no scope, description drop deprecated flag, Breaking change ticked, What breaks the --legacy flag was removed, issues closes #88. The header becomes fix!: drop deprecated flag, and the footer holds BREAKING CHANGE: the --legacy flag was removed followed by closes #88.

A capital letter. Type docs, scope readme, description Fix typo in install section, one co-author. The message is still built, with a Co-authored-by: Lena Park <lena@example.com> footer, but a warning says commitlint rejects a description in sentence case.

Limits and tips

  • One logical change per commit. If the description needs “and”, consider two commits.
  • The type list is fixed to the 11 common types. Custom types need a matching commitlint rule.
  • The tool does not run Git or read your repository; it only writes text.

Frequently asked questions

What is the difference between feat, fix and chore?
feat adds something users can use, fix repairs a bug, and chore covers housekeeping that does not touch source or tests. Release tools that follow Semantic Versioning usually turn feat into a minor release and fix into a patch release.
How do I mark a breaking change?
Tick Breaking change. The tool adds "!" after the type or scope, and if you fill in What breaks it also adds a "BREAKING CHANGE:" footer that explains it.
Why do I get a sentence-case warning?
The widely used @commitlint/config-conventional rules reject a description that starts with a capital letter, such as "Fix typo". Start it lower-case. Words in all capitals, such as "API", do not trigger the warning.
Can I paste the command into Windows Command Prompt?
The command uses single quotes, which work in bash, zsh and Git Bash. In Command Prompt, copy the message itself and use git commit without -m, or paste it into your editor.
How long should the header be?
The tool counts the header characters. It warns above 72, where many tools cut the line off, and again above 100, which commitlint's conventional config rejects.

Written by the ToolsRift team · Last updated

Pages are drafted with AI assistance and checked by automated tests. How we write and check pages.

Was this tool useful?

Report a problem

Start typing to search every tool.

↑ ↓ to moveEnter to openEsc to close