Git Commit Message Helper

Turn a change summary into a clean, structured commit message — Conventional Commits or your own project style, validated as you type, 100% in your browser.

Describe what you changed, pick the type and scope, and this helper assembles a well-formed commit message while checking it against the rules your project lives by — subject length, imperative mood, valid types, breaking-change markers and footer references. Switch to the Check tab to lint an existing message and see exactly what its parts are.

🔒 100% private — nothing is uploaded or stored. Your change summary and every commit message you type or paste are processed entirely in your browser. Nothing is sent to our servers, written to disk, or logged — and the page keeps working if your internet connection drops.

1. Your change

The first line becomes the subject line. The rest is treated as the body.

2. Project style

Match your repo's convention. Pick a preset or set your own — the message and validation update live.

Placeholders: {type} {scope} (becomes (scope)) {breaking} (becomes !) {subject}

3. Your commit message


                    
Subject 0 / 50 characters
    
                        

    The command uses one -m for the subject and one for the body, so line breaks survive the shell.

    Paste a commit message to inspect

    Paste the full message (subject, body and footer). It's parsed into its parts and checked against the Conventional Commits rules below.

    Conventional Commits, in brief

    The Conventional Commits specification gives commit messages a predictable shape: type(scope): subject, with an optional body and footer. Tooling like standard-version and semantic-release reads that shape to auto-generate changelogs and bump your version number — a feat is a minor release, a fix a patch, and a ! or BREAKING CHANGE footer a major. Well-formed messages make that automation reliable instead of guesswork.

    The types

    TypeUse it forExample

    Subject line rules

    • Use the imperative mood — write it like a command: add, not added or adds. Read as “If applied, this commit will add…”
    • Keep it under 50 characters (the default here) so it fits in git log --oneline and GitHub's commit list.
    • Don't end it with a period.
    • State what changed and why in the body — wrap at 72 columns so it reads cleanly in a terminal.
    • Reference issues in the footer: Closes #123, Fixes #456, Refs: PROJ-789.
    • For breaking changes, mark the type with ! and explain in a BREAKING CHANGE: footer.

    Luke Keam
    Thank you for reading. Get in touch
    Luke Keam | techgeek.biz