AI Commit Message Generator
Paste a git diff and get three Conventional Commits messages, checked against the rules.
Try before you buy.
- Free preview: the first suggestion’s first line, with its type and scope.
- Locked until you unlock it: copy.
- Unlock: Pro pass, ₹179 for 30 days or ₹79 for 1 week, a one-time payment that never renews. Unlock: Pro pass, $5.99 for 30 days or $2.99 for 1 week, a one-time payment that never renews.
Ways to unlock shows how to get the full result.
Printing this result is locked in the free preview.
Run git diff --staged in your repository and paste what it prints, or drop a .diff or .patch file here. The diff stays on this device.
What the diff shows
Hints from the paths
When your device can't answer, this goes to MySmartCoPilot's cloud AI. Personal details such as email addresses and phone numbers are masked first, and we don't keep it. How AI works
Choose how to run this
Stopping may still count toward today's free server AI.
Free server AI today (estimate):
Suggestions
Your diff or options changed: press Generate messages for new ones.
Locked in the free preview. Opens the ways to unlock this result.
Locked in the free preview. Batch runs unlock with a pass.
Locked in the free preview. Query results unlock with a pass.
About the AI Commit Message Generator
Paste the output of git diff --staged (or drop a .diff or .patch file) and get three commit messages in the Conventional Commits 1.0.0 format: type(scope): subject, a body that says what changed and why, and the ! and BREAKING CHANGE footer when the change breaks existing users.
Rules read the diff first: which files changed and how much, a type when the paths decide it (only documentation is docs, only tests is test, only CI files is ci, only build files or lockfiles is build), a scope from the folder the files share, and public functions that were removed and not added back. An AI on your device then writes the messages, and every one is checked against the Conventional Commits rules: the type on your list and in lower case, a subject in the imperative mood without a full stop, a first line of at most 72 characters, a blank line before the body, body lines wrapped at 72 and a breaking change written so that tools read it. What the rules can fix safely (the type’s case, a full stop, a missing blank line, long lines) is fixed; anything else goes back to the AI once with the broken rules named, and a message that still breaks one is shown with what to change.
The free preview shows the first suggestion’s first line with its type and scope; the full messages, the other suggestions and Copy come with a Pro pass. Your diff never leaves this browser.
How to use it
- In your repository, stage the change and run
git diff --staged; paste the output into the box, or drop a .diff or .patch file onto it. - Open Options to give your project’s own types or scopes, or to leave the body out.
- Press Generate messages (Ctrl+Enter). The summary shows the files, the lines added and removed, and the type, scope and breaking-change hints the rules found.
- Read the three suggestions: each one says whether it passes every check, or what is left to change.
- With a Pro pass, press Copy on the message you want and paste it into
git commit; without one, the free preview shows the first suggestion’s first line.
Examples
A new file src/parser/arrays.ts with an exported parseArray(), its test, and one line in src/parser/index.ts
feat(parser): add array parsing Read "[1, 2, 3]" as a list of values and export parseArray from the parser.
The scope comes from the folder every changed file shares; the test file does not change the type.
export function parseList(…) removed from src/parser/index.ts, nothing named parseList added back
feat(parser)!: replace parseList with parseArray BREAKING CHANGE: parseList is removed; call parseArray instead.
The rules flag the removed public function as a possible breaking change, and the message carries the ! and the footer.
Changes to README.md and docs/install.md only
docs: explain the install steps for Windows
When every changed file is documentation, the type is docs whatever the AI would have guessed.
How the type and scope are chosen
- From the paths first. Every file is sorted by its path: code, tests, documentation, CI configuration, build files, tool settings or lockfiles. When all of them are of one kind, that kind decides the type:
docs,test,ci,build(lockfiles count as build) orchorefor tool settings; when only spaces and line breaks changed,style. - Then from the changes. When code changed, the AI chooses between
feat(a new feature),fix(a bug fix),refactor,perfand the other types from what the lines show, using only the types on your list. - The scope is the folder the changed files share, below generic folders such as
srcorlib, or the package of a monorepo (packages/api/…givesapi). With your own list of scopes, only a scope from it is used. - Breaking changes: a public function, class or constant that a removed line declared and no added line declares again (JavaScript and TypeScript exports, Python, Go, Rust, Java, Kotlin, C# and PHP), or a
!or BREAKING CHANGE in a patch’s own message, is shown as a possible breaking change.
Privacy: the diff stays on your device
The diff is read and checked in this browser, and the AI that writes the messages runs on your device too: your browser’s built-in AI where it has one, or, on a computer, a small coding model from MySmartCoPilot that your browser keeps after the first use. Nothing of your code, your file names or the messages is sent to MySmartCoPilot or anyone else, and the page keeps none of it after you close it. Lockfiles and binary files are named to the AI, never shown to it.
Limitations
- Large diffs are summarised: the AI reads the file list, the hints and the changed lines with a line of context, code first, as much as fits; the rest is counted, not read. For a commit that touches many files, a message per smaller commit usually reads better anyway.
- Binary files and lockfiles are named only: their content is never shown to the AI.
- The messages are written in English, and the AI can misread a change: read the message before you commit it, especially the type and any breaking change.
- The AI needs your browser’s built-in AI or a computer that can run a small coding model; on phones, tablets and other devices the page writes one message from the file names and the hints, without AI.
Privacy
On this device; the AI model downloads once
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot. Your diff stays in this browser and is never sent to MySmartCoPilot. The AI runs on your device: your browser’s built-in AI where it has one, or, on a computer, a small coding model from MySmartCoPilot that your browser keeps after the first use (the first time takes a little longer while it gets ready).
Frequently asked questions
What do I get without a pass?
Without a pass, AI Commit Message Generator shows the first suggestion’s first line, with its type and scope. Until you unlock it, the result can’t be copied. A Pro, Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.
What is a Conventional Commit?
A commit message whose first line is type(scope): subject, such as fix(parser): handle empty arrays, with an optional body and footers. The types tell people and tools what kind of change it is (feat for a feature, fix for a bug fix), and ! or a BREAKING CHANGE footer marks a change that breaks existing users, so release tools can work out the next version and the changelog from the history.
Does my code leave my computer?
No. The diff is read in your browser and the AI runs on your device: your browser’s built-in AI, or, on a computer, a small coding model from MySmartCoPilot that your browser keeps after the first use. Nothing of the diff is sent anywhere.
Can I use my team’s own types and scopes?
Yes. Under Options, list the types your team uses (for example feat, fix, deps, docs) and, if you keep one, your list of scopes. The AI is held to them, and every message is checked against them.
Why are some messages marked as fixed?
Every message is checked against the Conventional Commits rules. What can be fixed without changing a word — a type in capitals, a full stop at the end, a missing blank line, body lines over 72 characters — is fixed and listed. Anything else, such as “added” instead of “add”, goes back to the AI once with the rule named; a message that still breaks a rule is shown with what to change.
Which command gives the right diff?
git diff --staged shows exactly what the next commit will hold. git diff shows changes you have not staged yet, and git show or git format-patch -1 an existing commit, if you want a better message for one you already made; the Git Patch Viewer reads the same files.