Grammarly sends everything you type to their servers. LanguageTool needs a 16GB n-gram dataset just to get started. There's a third option that most people haven't heard of yet — and it's better than both for most use cases.

What It Is

Harper is an offline grammar checker that runs entirely on your device. No cloud round-trips, no telemetry, no subscription. It ships as a Language Server Protocol binary called harper-ls, which means it integrates directly into any editor that speaks LSP: Neovim, VSCode, Helix, Emacs, Zed. Written in Rust. Responds in under 10ms. Made by Automattic — the people behind WordPress — and fully open source under Apache 2.0.

Why It's Worth Your Time

The competition got this wrong in two different ways.

Grammarly built a cloud product with surveillance-grade data collection baked in. Their business model depends on knowing what you write. They claim they don't sell your data, but that's a different thing from not using it. Every keystroke in every document goes to their servers. The round-trip latency makes revisions tedious. The suggestions lack context and are often just wrong.

LanguageTool went the opposite direction and built something technically powerful but impractical: the full offline version requires gigabytes of n-gram data and significant RAM just to run. It's overkill for most people and slow even when you have it set up.

Harper is neither. Single binary. Fraction of LanguageTool's memory footprint. Completely private.

What makes it genuinely interesting for developers: it doesn't just check .md files. It checks the English inside your code comments — Python docstrings, Rust doc comments, Go comments, Shell scripts, JavaScript, and about 30 more languages. Your inline documentation is fair game too, which is where most developer writing actually happens.

Hands On

Install on Debian/Ubuntu (via Cargo):

cargo install harper-ls --locked

Make sure ~/.cargo/bin is in your $PATH. You may need build-essential on Debian-based distros.

Arch Linux:

sudo pacman -S harper

Homebrew (macOS/Linux):

brew install harper

No Rust? No problem. Pre-built binaries are available on the GitHub releases page.

Neovim + mason.nvim: harper-ls is in the Mason registry — search and install it from there.

VSCode: There's an official extension in the marketplace.

Once installed, Harper creates a plain-text user dictionary at ~/.config/harper-ls/dictionary.txt. When it flags a term you use intentionally — a product name, a technical acronym, a brand — you add it once and Harper stops flagging it. No UI required, just edit the file.

LSP integration means code actions work natively. Hover over a flagged word and your editor offers: fix the spelling, ignore for the session, or add to the user dictionary. It catches capitalization errors, repeated words, wrong a/an usage, standard spelling mistakes. No LLM involved — these are deterministic rules, which means it's fast and predictable.

You can also select a dialect: American, British, Australian, Canadian, or Indian English. Useful if you write for specific audiences.

A sample LSP config for Neovim (using nvim-lspconfig):

require('lspconfig').harper_ls.setup {
  settings = {
    ["harper-ls"] = {
      linters = {
        SpellCheck = true,
        RepeatedWords = true,
        LongSentences = true,
        AnA = true,
      },
      diagnosticSeverity = "hint",
      dialect = "American",
    }
  }
}

This gives you grammar hints in your editor as you type — not blocking errors, just quiet nudges.

Honest Verdict

English-only for now. That's a real limitation — if you write in Arabic, French, or any other language, you'll constantly fight false positives. The team says other languages are planned, but there's no timeline.

The grammar rules are also narrower than Grammarly's full suite. Don't expect it to restructure awkward sentences or suggest better phrasing. Harper catches the mechanical stuff: spelling, repeated words, capitalization, a/an. That's the right scope for a tool running locally with no AI backend.

What it does, it does well and without friction. For anyone who writes documentation, technical blog posts, or just cares about the English in their code comments — this is exactly the kind of tool you install once and forget about until you notice it quietly preventing the same three mistakes you always make.

It's not a Grammarly replacement for heavy prose editing. It's a lightweight, always-on safety net that respects your privacy. That's a useful thing to have.

Go Try It

Install harper-ls and hook it into your editor. Write something. Watch the underlines appear in under 10ms. That response time alone will tell you why this thing exists.

writewithharper.com | GitHub