Use case
A grammar checker for developers that leaves your code alone
Clear English for PR descriptions, commit messages, review comments and tickets. Select the text in VS Code, Xcode, GitHub, Linear or Jira, press ⌘⌥E, and your backticks, identifiers and links come back exactly as they were.
Updated October 24, 2026
The English half of the job
For many engineers, the code is the easy part to get right in a second language. Then comes the writing around it: a PR description for a reviewer in another time zone, a comment on someone else’s code, a bug report that has to make sense to QA, an update in the incident channel at 2 a.m.
Small things cause real friction here. A review comment translated literally can sound harsh and start an argument. A vague ticket costs a round trip. A commit message nobody can parse a year from now doesn’t help anyone. AI Grammatic fixes the English and leaves the engineering to you.
Pull requests and commit messages
Write the description fast, in your own words, then select it and press the shortcut before you click Create. The same goes for the commit message box in VS Code or Xcode.
deleted: fixinserted: Fix bug deleted: when user can not logininserted: where users can't log in after deleted: changeinserted: changing their password
“Log in” is the verb, “login” is the noun. And “after changing”, not “after change”.
This PR adds deleted: possibilityinserted: the ability to filter orders by deleted: the date.
“Possibility” is a calque. In English a feature gives you the “ability”, or simply “lets you”.
I deleted: made refactoring ofinserted: refactored the payment module, please review it deleted: attentivelyinserted: carefully.
“Made refactoring” turns a verb into a noun, and “attentively” is a literal translation from Russian.
Tests are failing because of inserted: a race condition in deleted: cache, I willinserted: the cache. I'll fix it in inserted: a separate PR.
Three missing articles. The kind of thing reviewers notice and nobody mentions.
Review comments that don’t sound harsh
Code review is where tone matters most and where literal translation hurts most. In many languages a direct question is just a question. In English, “Why you did it like this?” reads as an accusation, even from someone who meant it as curiosity. The rewrite keeps your point and drops the edge.
Why inserted: did you deleted: didinserted: do it deleted: like this inserted: way? deleted: It is notinserted: I don't think this is correct.
Question word order, and “I don’t think” keeps the point without the edge.
deleted: Here mustinserted: There should be inserted: a null check inserted: here, otherwise it will crash.
“Must” reads as an order. “Should” is how reviewers suggest a change.
Nit: deleted: better toinserted: I'd rename this variable, inserted: the name deleted: is notinserted: isn't very clear.
“Better to” is a common calque. “I’d” turns it into a suggestion.
Reviewing for an open source project, or for a team you don’t know well yet? Add ⇧ for the formal version: ⇧⌘⌥E.
Tickets, docs and Slack
The same shortcut works on a Jira or Linear ticket, a README, a Notion page or a message in Slack.
When deleted: user press buttoninserted: a user presses "Save" deleted: two timesinserted: twice, inserted: the order is created deleted: two timesinserted: twice.
A bug report: articles, verb agreement and “twice”.
deleted: For toinserted: To run the testsinserted: , you need deleted: before to install inserted: the dependencies inserted: first.
Docs: a leftover “for” and word order, common for Spanish and Portuguese speakers.
deleted: Deployinserted: The deploy is stuckdeleted: , somebody caninserted: . Can someone take a look?
Slack: question word order. Short and clear wins in an incident channel.
Can you please deleted: make the review deleted: of my PR deleted: untilinserted: by the end of inserted: the day?
Slack: “review” works as a verb, and a deadline takes “by”.
Code, identifiers and links stay put
A rewrite only changes the English. Code in backticks, function and variable names, links, issue numbers and @mentions come back as you wrote them, and so do the formatting and line breaks of your PR template. The result is about the same length as your draft, and it doesn’t add greetings, sign-offs or em dashes.
deleted: thisinserted: This PR deleted: fixinserted: fixes `getUserById` returning null when inserted: the id inserted: is passed as inserted: a string. Closes #482
You can also write in your own language and get English out. Translation is built in, and it’s rewritten the way a native speaker would say it, not word for word.
поправил таймауты в ретраях, теперь на медленной сети не падает
Fixed the retry timeouts, so it no longer fails on slow networks.
If your team writes docs in German or another language, add the custom instruction “Keep technical terms in English” so terms like pull request or feature flag don’t get translated. Custom instructions take up to 500 characters on every plan, so you can add your team’s conventions too, for example “Write commit subjects in the imperative”.
Where it works
Anywhere you can select text: VS Code, Xcode, GitHub in Safari, Chrome or Arc, Linear, Jira, Slack and Notion. It’s a global shortcut that runs from the menu bar on macOS 14 or later, so there’s no extension to install per editor and nothing to configure per repo. The text is replaced in place in about a second, and since it’s a normal paste, ⌘Z brings back your original.
Each language gets its own shortcut (your default plus up to five more), and you can pick the rewrite style: neutral, professional, casual or concise. Concise works well for commit messages and tickets. Want to see a rewrite before installing anything? Try the live demo.
Where your text goes, and whose API key
Developers tend to ask about this first, so here it is plainly. On Pro ($29 a year) you connect your own OpenAI, Anthropic Claude, Google Gemini or DeepSeek API key. Your text goes straight from your Mac to your provider account, with no limit on rewrites.
On Free (10 rewrites a day, no account) and Premium ($69 a year, €59 in the EU, 50,000 words a day with your choice of model), the text passes through our server to the AI provider and is discarded after the rewrite. We only keep daily usage counts.
If your company has rules about sending internal text to AI services, check them first and pick the plan that fits. Details are in how we handle your text and on the pricing page.