Conventional Commit Message Generator
Write a tidy, Conventional Commits message without memorizing the spec. Choose a type, add an optional scope and body, flag breaking changes, link issues, and watch the message build live with a header-length guide.
How to write a Conventional Commit message
- Pick a type like feat or fix and add an optional scope such as auth.
- Write a short imperative description, then add a body, breaking change or issue numbers if needed.
- Check the header-length guide, then copy the formatted message into git commit.
Examples
Feature with a scope
{ "type": "feat", "scope": "auth", "description": "add OAuth login" }feat(auth): add OAuth login
Breaking change with an issue reference
{ "type": "feat", "scope": "api", "description": "drop v1 routes", "isBreaking": true, "breakingDescription": "v1 endpoints removed", "issues": ["42"] }feat(api)!: drop v1 routes BREAKING CHANGE: v1 endpoints removed Closes #42
Frequently asked questions
What is a Conventional Commit?
Conventional Commits is a lightweight convention for commit messages. The header reads type(scope): description, for example feat(auth): add OAuth login. A consistent format makes history readable and lets tools generate changelogs and version bumps automatically.
Which commit types can I use?
The standard set is feat, fix, docs, style, refactor, perf, test, build, ci, chore and revert. feat maps to a minor version bump and fix to a patch; the others document intent without an implicit bump.
How do I mark a breaking change?
Toggle the breaking change option. The generator adds a ! before the colon in the header (feat(api)!: ...) and appends a BREAKING CHANGE: footer describing the impact. Either signal tells SemVer tooling to plan a major release.
Why does the tool warn about header length?
The first line is shown in logs, pull requests and git UIs that truncate long subjects. The guide flags 50 characters as the comfortable target and 72 as the hard limit, so your summary stays fully visible.
How do I link issues in the commit?
Enter issue numbers and the generator builds a footer like Closes #12, #15. On GitHub and GitLab those keywords close the referenced issues automatically when the commit lands on the default branch.
Is anything I type sent to a server?
No. The message is assembled entirely in your browser. Nothing you type, including scopes or issue numbers, is uploaded, logged or stored anywhere.
Related tools
Gitignore Generator
Build a .gitignore from Node, Python, Java, Go, Rust, macOS, Windows and more. Pick your stacks, copy or download the file. Runs in your browser.
GitHub Actions Generator
Build a ready-to-use GitHub Actions CI workflow. Pick triggers, language, version matrix and steps, then copy or download the .github/workflows YAML.
Semver Checker
Check whether a version satisfies a semver range like ^1.0.0, ~1.2.0 or >=1.0.0 <2.0.0. See the parsed version parts instantly. Runs in your browser.
.env to JSON
Convert a .env file to JSON, or JSON back to .env. Parses KEY=value lines, comments, quotes and export. Runs entirely in your browser.
Aspect Ratio Calculator
Calculate aspect ratios fast. Enter a ratio like 16:9 and one dimension to get the other, or enter width and height to simplify the ratio.
Base58 Encoder
Encode and decode Base58 online with the Bitcoin alphabet. Convert text to Base58 or back, UTF-8 safe, no confusing 0 O I l. Runs in your browser.