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

  1. Paste one or more commit messages into the Commit Message(s) textarea on the left.
  2. View the real-time validation results in the right panel. Each rule shows a green check, red X, or yellow warning.
  3. To validate multiple commits at once, separate them with a --- line. A Bulk Summary will appear showing pass/fail counts.
  4. Click Options to expand the settings panel. Adjust the Max subject line length slider (default 72).
  5. Add Custom allowed types by typing comma-separated values (e.g., wip, hotfix, release) to extend the default type list.
  6. Toggle individual rules on or off using the checkboxes under Enable / disable rules.
  7. 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

View all 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.