Best free grammar checker you can run yourself: LanguageTool vs Harper
You want typos and grammar mistakes caught before you publish, without a subscription and without sending your drafts to someone else's server.
- Our pick
- LanguageTool100/100won on tie-breaker
- Why
- Caught 36 of 40 planted mistakes, and its first suggestion fixed all 36. All 10 spelling mistakes and 7 of 8 agreement mistakes caught. 3 false alarms on 20 correct sentences. About 16 ms per sentence, running on your own machine with the network off.
- Not for you if
- you want something tiny that runs inside your editor with no Java and no server (Harper does that, at about 3 ms per sentence), or you need style and tone rewrites rather than mistake-catching.
Short answer: Use LanguageTool's free open-source server (100/100). It caught 36 of our 40 planted mistakes and its first suggestion fixed every one it caught. Harper (100/100) is the runner-up: much lighter and faster, and great at spelling and a/an, but it missed most subject-verb agreement mistakes (2 of 8 caught). Both flagged a few tech words such as Supabase.
The verdict
Winner
LanguageTool
won on tie-breaker
An open-source grammar, style and spell checker for English and many other languages. The free version runs as a small Java server on your own computer.
7 of 7 checks in both runs. Caught 36 of 40 planted mistakes, and its first suggestion fixed all 36: 10 of 10 spelling, 7 of 8 agreement, 6 of 8 wrong words, 6 of 6 a/an. Missed "Their going", "Your welcome", "The results of the test shows" and a double exclamation mark. 3 false alarms on 20 correct sentences (npm, Supabase, "the deploy"). 16 ms per sentence, 678 MB of memory, offline. Score: 100/100.
Runner-up
Harper
An open-source, privacy-first grammar checker written in Rust that runs on-device, in editors, browsers and Node.js.
7 of 7 checks in both runs, the same score. Caught 29 of 40 planted mistakes (fixed 28): 10 of 10 spelling and 6 of 6 a/an, but only 2 of 8 subject-verb agreement mistakes. 3 false alarms on 20 correct sentences (Supabase, "js" in Next.js, "Every one"). About 3 ms per sentence, no Java or server needed. Lost the tie-breaker on mistakes caught. Score: 100/100.
On this page
Quick answers
What's the best free grammar checker that runs offline?
In our test, LanguageTool's open-source server. Running on our own machine with the network off, it caught 36 of 40 planted mistakes and its first suggestion fixed all 36. Harper caught 29. Both scored 100/100 on our checks; LanguageTool won the tie-breaker on mistakes caught.
Is Harper a good grammar checker?
For spelling, a/an and repeated words, yes: it caught all 10 spelling mistakes and all 6 a/an mistakes, at about 3 ms per sentence. It's weaker on grammar: it caught only 2 of 8 subject-verb agreement mistakes such as "Our servers was down", and missed "Its important" and "will not effect".
Does self-hosted LanguageTool work as well as the paid one?
We only tested the free open-source server with its default rules, without the optional n-gram data that LanguageTool says improves word-confusion checks. We didn't test LanguageTool Premium.
Will these tools flag tech words like npm or Supabase?
Sometimes. LanguageTool flagged "npm" and "Supabase"; Harper flagged "Supabase" and the "js" in Next.js. Both let you add your own words: LanguageTool through its spelling_custom.txt file, Harper through its dictionary.
Do my drafts leave my computer?
No, with either tool as we ran them. Both worked with the network switched off. Note that LanguageTool's browser add-on uses LanguageTool's cloud unless you point it at your local server in its settings.
Is there a free, offline Grammarly alternative?
LanguageTool's free open-source server runs on your own machine with the network off. In our test it caught 36 of 40 planted mistakes, with 3 false alarms on 20 correct sentences, at about 16 ms per sentence (100/100). We haven't tested Grammarly, so we can't say how the two compare.
Why
Who this is for: you write landing pages, docs, emails and posts, and want mistakes caught before you hit publish, for free, without your drafts going to anyone’s server. You’re fine running a small local server or an editor plugin.
Our pick: LanguageTool, the free open-source server (100/100). It caught 36 of our 40 planted mistakes, and its first suggestion fixed every one of them, including most of the grammar mistakes the other tool missed.
Runner-up: Harper (100/100). Same score on our checks, and it’s tiny and very fast, but it caught 29 of 40: excellent on spelling and a/an, weak on subject-verb agreement. LanguageTool won the tie-breaker on mistakes caught.
What each one caught
| Planted mistakes | LanguageTool | Harper |
|---|---|---|
| Spelling (10) | 10 | 10 |
| Subject-verb agreement (8) | 7 | 2 |
| Wrong word: its/it’s, their/they’re, effect/affect… (8) | 6 | 4 |
| a / an (6) | 6 | 6 |
| Repeated words, punctuation, capitals (8) | 7 | 7 |
| Total caught (40) | 36 | 29 |
| First suggestion fixes it | 36 | 28 |
| False alarms on 20 correct sentences | 3 | 3 |
| Time per sentence (median) | 16 ms | 3 ms |
| Memory | 678 MB | about 500 MB |
The test set is public, so you can run your own checker against it.
Gotchas
Both: add your product words. LanguageTool flagged “npm” and “Supabase”; Harper flagged “Supabase” and the “js” in Next.js. Add them once: LanguageTool reads spelling_custom.txt in its English resources folder, and Harper has a user dictionary.
LanguageTool: you need Java. The server needs Java 17 or later. After that it’s one command, and it was answering in 2–3 seconds.
LanguageTool: the browser add-on uses the cloud by default. To keep your text local, open the add-on’s settings, then Experimental settings → Local server.
Harper: don’t rely on it for grammar. It missed “Our servers was down”, “There is three steps” and “Each of the plans include”. Read your sentences with plural subjects twice.
Neither catches everything. Both missed “Your welcome to join” and a double exclamation mark.
Scores
Scored with our published rubric. Tested 2026-10-16. Two runs each because the first runs tied; results were identical.
| Criterion | LanguageTool | Harper |
|---|---|---|
| Task success (35) | 5 (7 of 7) | 5 (7 of 7) |
| Effort (15) | 5 (no fixes) | 5 (no fixes) |
| Time (10) | 5 (under 3 minutes) | 5 (under 2 minutes) |
| Cost (10) | 5 ($0, runs locally) | 5 ($0, runs locally) |
| Quality of what you get (10) | 5 (5 of 5) | 5 (5 of 5) |
| Ownership (10) | 5 (LGPL-2.1, local server) | 5 (Apache-2.0) |
| Privacy (10) | 5 (4 of 4) | 5 (4 of 4) |
| Total | 100 | 100 |
Tie-breaker: same checks passed, same number of false alarms (3), then mistakes caught: LanguageTool 36, Harper 29.
The 7 checks: runs locally on all 60 sentences, catches at least 70% of the mistakes, first suggestion fixes at least 60%, catches at least 9 of 10 spelling mistakes, false alarms on at most 3 of 20 correct sentences, median under 200 ms per sentence, and under 2 GB of memory. Both cleared every bar, which is why the table above matters more than the totals.
What it costs
Both are free and open source with no usage limits when you run them yourself. Our runs cost $0. LanguageTool’s open-source server is LGPL-2.1 (LanguageTool also sells a Premium cloud plan, which we didn’t test). Harper is Apache-2.0.
Caveats
- Our own test set. 60 short sentences we wrote, one mistake each. Real drafts have longer sentences and more than one problem at a time. The set is public so you can check our work.
- Default rules, no extras. LanguageTool can use optional n-gram data (a large download) to catch more confused words; we tested without it, as most people first run it.
- Mistake-catching, not style. Neither tool was scored on tone, clarity or rewriting.
- Runs were done by an AI agent following each tool’s official docs, with the network off. The check script is public.
Next step: get the numbers out of your PDFs. See our tested pick for extracting tables from PDFs.
Not tested yet
- Grammarly, LanguageTool Premium, ProWritingAid: paid cloud services that need an account. Queued.
- Vale: a style linter you configure with your own rules rather than a grammar checker out of the box.
Test log
| Date | Agent | Step | Result |
|---|---|---|---|
| Oct 16, 2026 | Lando (agent) | Setup for both: 60 sentences written for this test (40 with one planted mistake each in 5 categories, 20 correct, 5 of them full of builder words), checked one at a time in American English with default rules. Every run had the network switched off. | Test set hashed and frozen before the runs and published. Both tools are open source with no benchmarking restrictions. |
| Oct 16, 2026 | Lando (agent) | LanguageTool 6.6, runs lt-r1 and lt-r2: downloaded the release zip, started the HTTP server with the command from its docs and an empty server.properties, and sent each sentence to /v2/check. | Server up in 2–3 s. 36 of 40 caught, 36 fixed by the first suggestion, 3 false alarms, 16–17 ms per sentence, 678 MB peak. Identical results in both runs. $0. |
| Oct 16, 2026 | Lando (agent) | Harper (harper.js 2.13.0), runs harper-r1 and harper-r2: npm install harper.js, then the LocalLinter with American English, as in its Node.js docs. | 29 of 40 caught, 28 fixed by the first suggestion, 3 false alarms, about 3 ms per sentence, about 500 MB peak. Identical results in both runs. $0. |
Affiliate disclosure
This page has no affiliate links yet. Every link goes to the tool’s own homepage. Affiliate deals never decide a pick, and a tool with no affiliate program can still win. How we make money.
Sources
What to use now
A free weekly email.
We'll email you a link to confirm. We use Kit to send the email. Unsubscribe anytime. Privacy