Commit Message Generator

Write Conventional Commits messages with length and style checks.

About this tool

Choose the type (feat, fix, docs, refactor and so on), add an optional scope, write a short subject and optional body, mark breaking changes, and add footers such as Closes #123. The message is assembled with the body wrapped at 72 columns, checked against common rules, and given as a ready git commit command.

Writing good commit messages

A commit message is a note to everyone who reads the history later, including you. The Conventional Commits format, type(scope): subject, lets tools such as semantic-release, release-please and commitlint calculate version numbers and write changelogs automatically. The main types are feat (a new feature, minor version) and fix (a bug fix, patch version). An ! or a BREAKING CHANGE footer signals a major version. Beyond the format, a few habits make history easy to read. Keep the subject under 50 characters (72 at most), because git log --oneline and GitHub truncate longer ones. Write in the imperative mood ("add passkey sign-in", completing "this commit willโ€ฆ") and leave off the full stop. In the body, wrapped at 72 columns, explain what changed and why, since the diff already shows how. Reference issues in footers (Closes #482) so trackers link and close them. Honest limits: types other than feat and fix are conventions, so follow your team's commitlint rules. A clear message can't rescue a commit that mixes unrelated changes, so keep commits focused. The changelog generator, the .gitignore generator and the SemVer calculator are related.

Frequently asked questions

What is a Conventional Commit?

A message like feat(auth): add passkey sign-in: a type, an optional scope and a short imperative subject.

How long should a commit subject be?

Ideally 50 characters or fewer, and never more than 72.

How do I mark a breaking change?

Add ! after the type (feat!:) and a BREAKING CHANGE: footer explaining it.

Is anything uploaded?

No. The file is generated in your browser and nothing is stored or sent.