Conventional Commits Linter
Validate commit messages against the Conventional Commits specification. Check type, scope, description, and body format.
About This Tool
The Conventional Commits Linter is a free browser-based tool that validates your Git commit messages against the Conventional Commits specification. Conventional Commits is a lightweight convention on top of commit messages that provides a structured format: a type, an optional scope, a description, an optional body, and optional footers. This structure makes commit histories easier to read, enables automated changelog generation, and integrates cleanly with semantic versioning.
This linter parses each commit message and checks it against a
configurable set of rules. It validates that the commit starts with a
recognized type (feat, fix, docs, chore, etc.), that
an optional scope is enclosed in parentheses, that the type is
followed by a colon and a space, and that the description is
non-empty. It also checks subject line length (default maximum of 72
characters), body line length (maximum 100 characters), breaking
change markers (! or BREAKING CHANGE footer), and footer
format (key: value or key #value).
You can customize the tool to match your project's needs. Add custom
commit types beyond the standard set, adjust the maximum subject
line length with a slider, and enable or disable individual rules.
The bulk mode lets you paste multiple commit messages separated by
--- and validate them all at once, with a summary showing how
many pass and how many fail.
If you work with Git regularly, you may also find the Git Command Builder helpful for constructing complex Git commands, or the .gitignore Generator for creating ignore files. For comparing code changes before committing, try the Diff Viewer.
All processing happens entirely in your browser. Your commit messages are never sent to any server. There are no API calls, no logging, and no third-party services involved. This makes it safe to validate commit messages containing sensitive information such as internal project names or ticket references.
How to Use
- Paste one or more commit messages into the Commit Message(s) textarea on the left.
- View the real-time validation results in the right panel. Each rule shows a green check, red X, or yellow warning.
- To validate multiple commits at once, separate them with a
---line. A Bulk Summary will appear showing pass/fail counts. - Click Options to expand the settings panel. Adjust the Max subject line length slider (default 72).
- Add Custom allowed types by typing comma-separated values (e.g.,
wip, hotfix, release) to extend the default type list. - Toggle individual rules on or off using the checkboxes under Enable / disable rules.
- If a fix suggestion is available, click Copy corrected to copy the auto-fixed message. Press Ctrl+Shift+C to copy the original input.
Popular Conventional Commits Examples
FAQ
What is the Conventional Commits specification?
Conventional Commits is a specification for adding human- and machine-readable meaning to commit messages. It defines a structured format: `type(scope): description`, followed by an optional body and footers. The standard types include feat, fix, docs, style, refactor, perf, test, build, ci, chore, and revert. This convention enables automated tools to generate changelogs, determine semantic version bumps, and communicate the nature of changes to other developers.
What types are allowed by default?
The default allowed types are: feat, fix, docs, style, refactor, perf, test, build, ci, chore, and revert. You can add custom types in the Options panel by entering comma-separated values (e.g., wip, hotfix, release). Custom types are appended to the default list.
How do I indicate a breaking change?
There are two ways to indicate a breaking change in Conventional Commits. First, you can append a `!` after the type/scope and before the colon, like `feat!: remove deprecated API` or `feat(api)!: change response format`. Second, you can add a `BREAKING CHANGE: description` footer in the commit body. Both methods are valid, and you can use them together.
Can I validate multiple commits at once?
Yes. Paste multiple commit messages into the input textarea and separate them with a `---` line on its own. The tool will validate each commit independently and show a Bulk Summary at the top of the results with the total number of passing and failing commits.
What is the recommended subject line length?
The default maximum subject line length is 72 characters, which is the widely accepted convention for Git commit messages. This limit ensures that commit messages display well in terminal output, GitHub, and other Git tools. You can adjust this limit from 50 to 120 characters using the slider in the Options panel.
Is my data safe?
Yes. All validation runs entirely in your browser using JavaScript. No commit messages are sent to any server. You can verify this by checking the Network tab in your browser's developer tools while using the tool. This makes it safe to validate commits containing internal project names, ticket references, or other sensitive information.
What footer formats are supported?
Conventional Commits supports two footer formats: `key: value` (e.g., `Reviewed-by: Alice`) and `key #value` (e.g., `Refs #123`). The special footer `BREAKING CHANGE: description` is used to indicate breaking changes. Footer lines appear after a blank line following the commit body.
Related Tools
Git Command Builder
Build Git commands visually. Select operations, options, and flags to construct the correct git command with explanations.
.gitignore Generator
Generate .gitignore files by selecting languages, frameworks, and IDEs. Combine multiple templates instantly.
Diff Viewer
Compare two texts side by side with line-by-line and character-level diff highlighting.
Regex Tester
Test regular expressions with real-time match highlighting and capture groups.
Git Branch Name Generator
Convert ticket numbers and titles into clean git branch names with configurable naming conventions.
Changelog Generator
Generate CHANGELOG.md from Conventional Commits. Group by type, add version headers, and export in Keep a Changelog format.
Git Commit Message Generator
Generate Conventional Commits messages with a visual form. Select type, scope, description, body, and breaking changes.
Semantic Release Config Builder
Generate semantic-release configuration files visually. Select plugins, configure branches, set release rules, and export as JSON, YAML, or JS.
CONTRIBUTING.md Generator
Generate professional CONTRIBUTING.md files for open source projects with templates for contribution types, commit formats, and PR processes.
Release Notes Generator
Generate professional release notes from version info and change entries. Supports Keep a Changelog, GitHub Release, and Conventional Changelog formats.
Git Command Reference
Comprehensive git command reference organized by workflow. Search, reverse lookup, visual workflow diagram, and copy any command.