[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5499":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":36,"readmeContent":37,"aiSummary":38,"trendingCount":16,"starSnapshotCount":16,"syncStatus":39,"lastSyncTime":40,"discoverSource":41},5499,"harper","Automattic\u002Fharper","Automattic","Offline, privacy-first grammar checker. Fast, open-source, Rust-powered","https:\u002F\u002Fwritewithharper.com",null,"Rust",10780,357,26,492,0,9,66,313,38,42.66,"Apache License 2.0",false,"master",true,[27,28,29,30,31,32,33,34,35],"chrome-extension","developer-tools","english-language","grammar-checker","nodejs","react","rust","svelte","webassembly","2026-06-12 02:01:11","\u003Cdiv id=\"header\" align=\"center\">\n    \u003Cimg src=\"logo.svg\" width=\"400px\" \u002F>\n    \u003Ch1>Harper\u003C\u002Fh1>\n\u003C\u002Fdiv>\n\n[![Harper Binaries](https:\u002F\u002Fgithub.com\u002Fautomattic\u002Fharper\u002Factions\u002Fworkflows\u002Fbinaries.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fautomattic\u002Fharper\u002Factions\u002Fworkflows\u002Fbinaries.yml)\n[![Website](https:\u002F\u002Fgithub.com\u002Fautomattic\u002Fharper\u002Factions\u002Fworkflows\u002Fbuild_web.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fautomattic\u002Fharper\u002Factions\u002Fworkflows\u002Fbuild_web.yml)\n[![Checks](https:\u002F\u002Fgithub.com\u002Fautomattic\u002Fharper\u002Factions\u002Fworkflows\u002Fjust_checks.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fautomattic\u002Fharper\u002Factions\u002Fworkflows\u002Fjust_checks.yml)\n[![Crates.io](https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fv\u002Fharper-ls)](https:\u002F\u002Fcrates.io\u002Fcrates\u002Fharper-ls)\n![NPM Version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fharper.js)\n![Downloads](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fautomattic\u002Fharper\u002Ftotal?label=Binary+Downloads)\n![Obsidian Plugin Downloads](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fautomattic\u002Fharper-obsidian-plugin\u002Ftotal?label=Obsidian+Plugin+Downloads)\n\nHarper is an English grammar checker designed to be _just right._\nI created it after years of dealing with the shortcomings of the competition.\n\nGrammarly was too expensive and too overbearing.\nIts suggestions lacked context, and were often just plain _wrong_.\nNot to mention: it's a privacy nightmare.\nEverything you write with Grammarly is sent to their servers.\nTheir 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.\nNot only that, but the round-trip-time of the network request makes revising your work all the more tedious.\n\nLanguageTool is great, if you have gigabytes of RAM to spare and are willing to download the ~16GB n-gram dataset.\nBesides the memory requirements, I found LanguageTool too slow: it would take several seconds to lint even a moderate-size document.\n\nThat's why I created Harper: it is the grammar checker that fits my needs.\nNot only does it take milliseconds to lint a document, take less than 1\u002F50th of LanguageTool's memory footprint,\nbut it is also completely private.\n\nHarper is even small enough to load via [WebAssembly.](https:\u002F\u002Fwritewithharper.com)\n\n## Language Support\n\nHarper currently only supports English, but the core is extensible to support other languages, so we welcome contributions that allow for other language support.\n\n## Performance Issues\n\nWe consider long lint times bugs.\nIf you encounter any significant performance issues, please create an issue on the topic.\n\nIf you find a fix to any performance issue, we would appreciate the contribution.\nJust please make sure to read [our contribution guidelines first.](https:\u002F\u002Fwritewithharper.com\u002Fdocs\u002Fcontributors\u002Fintroduction)\n\n## Links\n\n- [Frequently Asked Questions](https:\u002F\u002Fwritewithharper.com\u002F#faqs)\n- [Obsidian Documentation](https:\u002F\u002Fwritewithharper.com\u002Fdocs\u002Fintegrations\u002Fobsidian)\n- [`harper-ls` Documentation](https:\u002F\u002Fwritewithharper.com\u002Fdocs\u002Fintegrations\u002Flanguage-server)\n- Supported Editors' Documentation\n  - [Visual Studio Code](https:\u002F\u002Fwritewithharper.com\u002Fdocs\u002Fintegrations\u002Fvisual-studio-code)\n  - [Neovim](https:\u002F\u002Fwritewithharper.com\u002Fdocs\u002Fintegrations\u002Fneovim)\n  - [Helix](https:\u002F\u002Fwritewithharper.com\u002Fdocs\u002Fintegrations\u002Fhelix)\n  - [Emacs](https:\u002F\u002Fwritewithharper.com\u002Fdocs\u002Fintegrations\u002Femacs)\n  - [Zed](https:\u002F\u002Fwritewithharper.com\u002Fdocs\u002Fintegrations\u002Fzed)\n- [`harper.js` Documentation](https:\u002F\u002Fwritewithharper.com\u002Fdocs\u002Fharperjs\u002Fintroduction)\n- [Official Discord Server](https:\u002F\u002Fdiscord.com\u002Finvite\u002FJBqcAaKrzQ)\n\n## Huge Thanks\n\nThis project would not be possible without the hard work from those who [contribute](https:\u002F\u002Fwritewithharper.com\u002Fdocs\u002Fcontributors\u002Fintroduction).\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fautomattic\u002Fharper\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=automattic\u002Fharper\" \u002F>\n\u003C\u002Fa>\n\nHarper's logo was designed by [Lukas Werner](https:\u002F\u002Flukaswerner.com\u002F).\n","Harper 是一个离线的、注重隐私的英文语法检查工具。它基于 Rust 语言开发，具有快速响应和低内存占用的特点，仅需几毫秒即可完成文档校验，并且内存消耗仅为同类工具 LanguageTool 的五十分之一左右。通过 WebAssembly 技术，Harper 可以在网页上直接运行，无需将用户数据发送至服务器处理，从而确保了用户的写作内容安全私密。此项目非常适合那些需要高效、私密地进行英文写作或编辑工作的个人及团队使用。",2,"2026-06-11 03:03:39","top_language"]