Harper is a free, open source browsers & extensions project written in Rust and released under Apache-2.0. It has 15,469 GitHub stars, 632 forks and 896 open issues, and was last pushed 7 hours ago. On this registry it ranks #25 of 65 tracked projects in Browsers & Extensions, with 5 head-to-head comparisons available. It gained 163 stars over the last 6 tracked days.

Harper — Fast grammar checking that respects your privacy

What is Harper?

What it is

Harper is offline, privacy-first grammar checker for English. It lives in productivity, browser extension, developer tools, and text editing ecosystem. Project is open source under Apache-2.0. GitHub metadata shows 15373 stars, 627 forks, and 896 open issues. Last push is 2026-09-14. Category is Productivity & Utilities / Browsers & Extensions. It uses Rust for core, WebAssembly for browser loading, language server for editors, JavaScript package for web and Node.js apps. It solves slow, costly, network-dependent grammar checking. It replaces Grammarly and LanguageTool as named in README. Grammarly sends writing to servers, has network round-trip delay, and can use data for model training according to README concern. LanguageTool needs gigabytes of RAM and large n-gram dataset. Harper checks text locally, takes milliseconds to lint, and uses less than 1/50th of LanguageTool memory footprint.

Key capabilities

  • Checks English grammar offline, without server round trip.
  • Runs as Rust binary, language server, browser extension, WebAssembly module, and JavaScript package.
  • Lints moderate-size documents in milliseconds, per README.
  • Uses less than 1/50th of LanguageTool memory footprint.
  • Integrates with Visual Studio Code, Neovim, Helix, Emacs, and Zed through harper-ls.
  • Provides harper.js for Node.js, React, and Svelte web applications.
  • Treats long lint times as bugs and invites performance issue reports.

Who uses it and how

  • Writers use browser extension or WebAssembly build for local grammar review.
  • Developers embed harper.js in Node.js, React, or Svelte interfaces.
  • Editor users run harper-ls for live checks in VS Code, Neovim, Helix, Emacs, and Zed.
  • Obsidian users install plugin to check notes offline.
  • Local users download binaries for command-line or desktop use.

Getting started

Typical methods are GitHub binaries, harper-ls from crates.io, harper.js from npm, Obsidian plugin, Chrome extension, and editor integration docs at writewithharper.com. WebAssembly build can be loaded from website, and docs cover FAQ, Obsidian, language server, editors, and harper.js.

When to use it — and when not to

Use Harper when privacy, offline operation, low memory, and fast linting matter more than broad language coverage, and when users can tolerate English-only checks. Compared with Grammarly and LanguageTool, it avoids server round trips, large RAM, and n-gram dataset download, but README says competition suggestions lacked context and were often wrong. Do not choose it when non-English grammar checking is required, because current support is English only.

project readme (upstream, from github) — read inline

Harper

Harper Binaries Website Checks Crates.io NPM Version Downloads Obsidian Plugin Downloads

Harper is an English grammar checker designed to be just right. I created it after years of dealing with the shortcomings of the competition.

Grammarly was too expensive and too overbearing. Its suggestions lacked context, and were often just plain wrong. Not to mention: it's a privacy nightmare. Everything you write with Grammarly is sent to their servers. Their privacy policy claims they don't sell the data, but that doesn't mean they don't use it to train large language models and god knows what else. Not only that, but the round-trip-time of the network request makes revising your work all the more tedious.

LanguageTool is great, if you have gigabytes of RAM to spare and are willing to download the ~16GB n-gram dataset. Besides the memory requirements, I found LanguageTool too slow: it would take several seconds to lint even a moderate-size document.

That's why I created Harper: it is the grammar checker that fits my needs. Not only does it take milliseconds to lint a document, take less than 1/50th of LanguageTool's memory footprint, but it is also completely private.

Harper is even small enough to load via WebAssembly.

Language Support

Harper currently only supports English, but the core is extensible to support other languages, so we welcome contributions that allow for other language support.

Performance Issues

We consider long lint times bugs. If you encounter any significant performance issues, please create an issue on the topic.

If you find a fix to any performance issue, we would appreciate the contribution. Just please make sure to read our contribution guidelines first.

Links

Huge Thanks

This project would not be possible without the hard work from those who contribute.

Harper's logo was designed by Lukas Werner.

Frequently asked questions

Is Harper free to use?

Harper is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Harper do?

Fast grammar checking that respects your privacy

What is Harper written in?

Harper is primarily written in Rust. Its source is publicly available at https://github.com/automattic/harper, and it has 15,469 GitHub stars.