Harper: Offline, Privacy-First Grammar Checker
Harper is a Rust-based, offline grammar checker that runs entirely on your machine instead of phoning suggestions to a server. Reach for it if you write English in an editor or terminal and want fast, private linting without a subscription; skip it if you write in another language or need the deeper tone and clarity rewrites a cloud service like Grammarly provides.
Why Harper Was Created
Existing English grammar checkers force a trade-off the README's author ran into directly: Grammarly checks text on a remote server, costs money, and, per the README, sends everything you write over the network — its privacy policy only promises not to sell the data, not that it won't be used to train models. LanguageTool avoids the cloud but, per the README, needs gigabytes of RAM and a roughly 16GB n-gram dataset, and took several seconds to lint even a moderate-size document. Harper's creator built it to sit between those two: fast and local.
What is Harper?
Harper is a Rust grammar checker that ships as a Language Server, a WebAssembly module, and a JavaScript library called harper.js, rather than as one standalone app. It plugs into editors such as VS Code, Neovim, Helix, Emacs, and Zed through the harper-ls language server, and into Obsidian through a separate integration, checking English text locally instead of sending it to a server.
Core Features and Design Principles
- ✓A Rust core compiled to a small WebAssembly build, so the grammar checker can run inside a browser or editor extension without a server round trip.
- ✓Ships as harper-ls, a Language Server Protocol implementation, so any LSP-aware editor can wire it up the same way it wires up a code linter.
- ✓harper.js packages the same engine as a JavaScript library for embedding grammar and syntax checking in a web app or Node.js project.
- ✓Documented integrations for VS Code, Neovim, Helix, Emacs, Zed, and Obsidian, plus a Chrome extension listed among the repo's GitHub topics.
- ✓All linguistic analysis happens locally in Rust rather than in a cloud API.
- ✓Apache-2.0 licensed and open source, so the grammar engine and its rules are auditable rather than opaque.
Integrating Harper into Your Workflow
- •Linting Markdown or plain-text files for English grammar correction before committing docs or a README, without uploading drafts to a third party.
- •Wiring harper-ls into a code editor over the Language Server Protocol for live grammar checking as you write comments or docs.
- •Embedding harper.js in a web app or Node.js tool to add local text editing feedback for user-submitted English content.
- •Checking notes inside Obsidian through Harper's documented Obsidian integration.
Performance and Privacy Advantages
- ✓The README states Harper lints a document in milliseconds, versus the several seconds LanguageTool can take on a moderate-size document.
- ✓The README says Harper's memory footprint is less than 1/50th of LanguageTool's, which it describes as needing gigabytes of RAM and a roughly 16GB n-gram dataset.
- ✓Checks run locally, which makes it a privacy-first grammar tool — no network round trip and no text leaving the machine, unlike a server-side checker.
- ✓Small enough to compile to WebAssembly, per the README, so it stays usable in-browser without a backend service.
Current Language Support and Known Issues
- △English is the only supported language right now; the README says the core is extensible but other languages depend on community contributions that haven't landed.
- △The README gives no install commands or package names for harper-ls, harper.js, or a CLI — you have to follow external documentation links to set it up.
- △It's a grammar and syntax checker, not a full writing assistant with tone or clarity rewrites — the README frames it strictly around grammar.
Considering Other Grammar Checkers
Frequently Asked Questions
Harper currently supports English only. The README notes the core is extensible and welcomes contributions for other languages, but none are built in yet.
Harper is free to use — the project is licensed under Apache-2.0 and published as open source on GitHub.
Harper runs entirely on your device, so a grammar check never turns into a network request carrying your text — unlike tools that send text to a remote server.
Harper integrates into editors through harper-ls, its Language Server Protocol implementation, with documented setups for VS Code, Neovim, Helix, Emacs, and Zed.
The README gives no document-size benchmark, but it says Harper lints in milliseconds versus the several seconds LanguageTool needs on a moderate-size document — a speed claim, not a stated size limit.
Harper runs locally and doesn't send text anywhere, while Grammarly checks run server-side; the README also says Harper's creator found Grammarly's suggestions often lacked context and were sometimes wrong.
How to install / try
The README gives no install commands — no `cargo install`, `npm install`, or download step is shown. It links out to separate documentation pages for the Language Server (harper-ls), harper.js, and each supported editor (VS Code, Neovim, Helix, Emacs, Zed) plus Obsidian, so the install path itself is not clearly documented here.
How to use
Usage isn't clearly documented in the README either — there's no example command or config snippet in it. It points to a Language Server Protocol setup for editors via harper-ls, to harper.js documentation for the JavaScript library, and to a general FAQ page, without a self-contained quick-start.
Who should try it — and who should skip
Try Harper if you write English in an editor, terminal, or a codebase's Markdown files and want grammar suggestions without sending anything to a server. Skip it if you write in a language other than English, need Grammarly-style tone and clarity rewrites, or want a checker with install commands and config spelled out in the main README instead of linked external docs.
