Automattic/harperPublic

Offline, privacy-first grammar checker. Fast, open-source, Rust-powered

AI summary: A lightning-fast, privacy-first grammar checker built in Rust for developers and writers.

Stars
16.1K
+60 today
Forks
698
Watchers
46
Open issues
795
Open PRs
171
Contributors
~149
Commits
4.7K
Branches
34

RustApache-2.0Created Oct 22, 2023Last push 1d agoLatest release v2.12.0+224 stars this week+1.2K this month

Quick answers

What is harper?
A lightning-fast, privacy-first grammar checker built in Rust for developers and writers.
What does harper do?
Harper is a highly performant grammar and spell-checking engine designed to operate entirely offline, guaranteeing absolute user privacy. Written completely in Rust, it provides a significantly faster alternative to cloud-based tools like Grammarly, while demanding only a fraction of the memory footprint of local tools like LanguageTool. It is engineered to provide 'just right' suggestions, avoiding overly pedantic stylistic corrections in favor of meaningful, context-aware fixes. The core engine is highly versatile, compiling seamlessly to WebAssembly for browser use or running as a native language server in modern IDEs.
Who is harper for?
Privacy-conscious writers, developers, and enterprises who require fast, reliable grammar checking without sacrificing data security.
How do I get started with harper?
cargo build --release
How popular is harper on GitHub?
Automattic/harper has 16,119 stars and 698 forks on GitHub, and gained 224 stars in the last 7 days.
What license does harper use?
Automattic/harper is released under the Apache-2.0 license.

Star history

since Jul 28, 2026
05K10K15KJul 2026Aug 2026Sep 2026Oct 2026
16.1K stars as of Oct 3, 2026. Measured daily since Jul 28, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-10-05: 0 commits2025-10-06: 7 commits2025-10-07: 5 commits2025-10-08: 1 commit2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 2 commits2025-10-14: 2 commits2025-10-15: 2 commits2025-10-16: 3 commits2025-10-17: 1 commit2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 12 commits2025-10-23: 3 commits2025-10-24: 5 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 7 commits2025-10-28: 0 commits2025-10-29: 5 commits2025-10-30: 0 commits2025-10-31: 2 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 4 commits2025-11-04: 7 commits2025-11-05: 9 commits2025-11-06: 6 commits2025-11-07: 1 commit2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 7 commits2025-11-11: 5 commits2025-11-12: 5 commits2025-11-13: 8 commits2025-11-14: 6 commits2025-11-15: 1 commit2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 8 commits2025-11-19: 12 commits2025-11-20: 4 commits2025-11-21: 9 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 9 commits2025-11-25: 1 commit2025-11-26: 8 commits2025-11-27: 0 commits2025-11-28: 11 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 7 commits2025-12-02: 9 commits2025-12-03: 9 commits2025-12-04: 2 commits2025-12-05: 5 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 6 commits2025-12-09: 1 commit2025-12-10: 6 commits2025-12-11: 9 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 3 commits2025-12-17: 5 commits2025-12-18: 0 commits2025-12-19: 7 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 8 commits2025-12-23: 6 commits2025-12-24: 1 commit2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 4 commits2025-12-31: 4 commits2026-01-01: 4 commits2026-01-02: 4 commits2026-01-03: 1 commit2026-01-04: 0 commits2026-01-05: 9 commits2026-01-06: 5 commits2026-01-07: 1 commit2026-01-08: 4 commits2026-01-09: 8 commits2026-01-10: 2 commits2026-01-11: 0 commits2026-01-12: 8 commits2026-01-13: 4 commits2026-01-14: 6 commits2026-01-15: 5 commits2026-01-16: 8 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 10 commits2026-01-21: 12 commits2026-01-22: 11 commits2026-01-23: 1 commit2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 14 commits2026-01-27: 8 commits2026-01-28: 1 commit2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 12 commits2026-02-04: 8 commits2026-02-05: 4 commits2026-02-06: 1 commit2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 5 commits2026-02-10: 5 commits2026-02-11: 9 commits2026-02-12: 4 commits2026-02-13: 7 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 11 commits2026-02-17: 3 commits2026-02-18: 8 commits2026-02-19: 3 commits2026-02-20: 7 commits2026-02-21: 1 commit2026-02-22: 0 commits2026-02-23: 6 commits2026-02-24: 4 commits2026-02-25: 3 commits2026-02-26: 9 commits2026-02-27: 13 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 9 commits2026-03-03: 1 commit2026-03-04: 4 commits2026-03-05: 4 commits2026-03-06: 5 commits2026-03-07: 1 commit2026-03-08: 0 commits2026-03-09: 4 commits2026-03-10: 10 commits2026-03-11: 8 commits2026-03-12: 4 commits2026-03-13: 3 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 8 commits2026-03-17: 6 commits2026-03-18: 2 commits2026-03-19: 13 commits2026-03-20: 10 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 10 commits2026-03-24: 16 commits2026-03-25: 2 commits2026-03-26: 3 commits2026-03-27: 1 commit2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 12 commits2026-03-31: 3 commits2026-04-01: 7 commits2026-04-02: 0 commits2026-04-03: 4 commits2026-04-04: 1 commit2026-04-05: 0 commits2026-04-06: 10 commits2026-04-07: 8 commits2026-04-08: 5 commits2026-04-09: 3 commits2026-04-10: 7 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 8 commits2026-04-14: 2 commits2026-04-15: 1 commit2026-04-16: 3 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 4 commits2026-04-21: 1 commit2026-04-22: 2 commits2026-04-23: 3 commits2026-04-24: 3 commits2026-04-25: 1 commit2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 8 commits2026-05-01: 4 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 1 commit2026-05-05: 6 commits2026-05-06: 2 commits2026-05-07: 3 commits2026-05-08: 1 commit2026-05-09: 3 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 5 commits2026-05-13: 5 commits2026-05-14: 5 commits2026-05-15: 9 commits2026-05-16: 1 commit2026-05-17: 0 commits2026-05-18: 10 commits2026-05-19: 8 commits2026-05-20: 0 commits2026-05-21: 6 commits2026-05-22: 5 commits2026-05-23: 1 commit2026-05-24: 0 commits2026-05-25: 10 commits2026-05-26: 7 commits2026-05-27: 1 commit2026-05-28: 6 commits2026-05-29: 9 commits2026-05-30: 3 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 11 commits2026-06-04: 10 commits2026-06-05: 10 commits2026-06-06: 3 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 5 commits2026-06-11: 16 commits2026-06-12: 5 commits2026-06-13: 1 commit2026-06-14: 0 commits2026-06-15: 4 commits2026-06-16: 9 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 3 commits2026-06-20: 3 commits2026-06-21: 2 commits2026-06-22: 2 commits2026-06-23: 3 commits2026-06-24: 5 commits2026-06-25: 22 commits2026-06-26: 2 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 5 commits2026-06-30: 4 commits2026-07-01: 7 commits2026-07-02: 5 commits2026-07-03: 4 commits2026-07-04: 5 commits2026-07-05: 1 commit2026-07-06: 2 commits2026-07-07: 1 commit2026-07-08: 1 commit2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 1 commit2026-07-15: 1 commit2026-07-16: 0 commits2026-07-17: 4 commits2026-07-18: 3 commits2026-07-19: 0 commits2026-07-20: 2 commits2026-07-21: 1 commit2026-07-22: 11 commits2026-07-23: 4 commits2026-07-24: 1 commit2026-07-25: 0 commits2026-07-26: 2 commits2026-07-27: 6 commits2026-07-28: 7 commits2026-07-29: 8 commits2026-07-30: 3 commits2026-07-31: 7 commits2026-08-01: 3 commits2026-08-02: 0 commits2026-08-03: 2 commits2026-08-04: 1 commit2026-08-05: 4 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 1 commit2026-08-09: 1 commit2026-08-10: 5 commits2026-08-11: 7 commits2026-08-12: 5 commits2026-08-13: 9 commits2026-08-14: 0 commits2026-08-15: 1 commit2026-08-16: 4 commits2026-08-17: 0 commits2026-08-18: 3 commits2026-08-19: 3 commits2026-08-20: 18 commits2026-08-21: 0 commits2026-08-22: 3 commits2026-08-23: 0 commits2026-08-24: 3 commits2026-08-25: 1 commit2026-08-26: 2 commits2026-08-27: 3 commits2026-08-28: 13 commits2026-08-29: 5 commits2026-08-30: 0 commits2026-08-31: 6 commits2026-09-01: 2 commits2026-09-02: 9 commits2026-09-03: 6 commits2026-09-04: 1 commit2026-09-05: 7 commits2026-09-06: 2 commits2026-09-07: 7 commits2026-09-08: 8 commits2026-09-09: 8 commits2026-09-10: 2 commits2026-09-11: 4 commits2026-09-12: 4 commits2026-09-13: 3 commits2026-09-14: 2 commits2026-09-15: 1 commit2026-09-16: 10 commits2026-09-17: 1 commit2026-09-18: 0 commits2026-09-19: 1 commit2026-09-20: 0 commits2026-09-21: 3 commits2026-09-22: 4 commits2026-09-23: 2 commits2026-09-24: 7 commits2026-09-25: 2 commits2026-09-26: 4 commits2026-09-27: 0 commits2026-09-28: 7 commits2026-09-29: 3 commits2026-09-30: 4 commits2026-10-01: 6 commits2026-10-02: 0 commits2026-10-03: 1 commit
1,286 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    16,119 stars

  • Very active

    1,286 commits in 52 weeks

  • Community-driven

    ~149 contributors

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

  • Repeat trending

    3 trending appearances

What harper does

Harper is a highly performant grammar and spell-checking engine designed to operate entirely offline, guaranteeing absolute user privacy. Written completely in Rust, it provides a significantly faster alternative to cloud-based tools like Grammarly, while demanding only a fraction of the memory footprint of local tools like LanguageTool. It is engineered to provide 'just right' suggestions, avoiding overly pedantic stylistic corrections in favor of meaningful, context-aware fixes. The core engine is highly versatile, compiling seamlessly to WebAssembly for browser use or running as a native language server in modern IDEs.

Privacy-conscious writers, developers, and enterprises who require fast, reliable grammar checking without sacrificing data security.

  • Offline analysis: Processes all text locally on the user's machine to ensure sensitive data is never transmitted to the cloud.
  • Rust-powered performance: Delivers near-instantaneous grammar validation with an exceptionally low memory footprint.
  • WebAssembly compilation: Allows for seamless integration directly into web applications, text areas, and browser extensions.
  • Language server protocol: Integrates natively into modern code editors to provide developers with real-time feedback on documentation.
  • Nuanced rule set: Focuses on delivering contextually meaningful corrections while ignoring overly aggressive stylistic dictates.

Where teams use it

Secure document drafting

Professionals handling sensitive corporate or legal documents can check grammar without exposing data to third-party servers.

Developer workflow integration

Software engineers can receive real-time spell checking for their code comments and documentation directly within their IDE.

Lightweight browser checking

Users can run a fast, local alternative to mainstream grammar extensions for everyday typing and email drafting.

Automated CI/CD validation

Teams can integrate the engine into their build pipelines to reliably lint markdown documentation before publishing.

Getting started: cargo build --release

README

master branch

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.

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 97

Releases and announcements

116 total
  1. v2.12.0v2.12.0Oct 1, 20261.7K downloads

    ## What's Changed * feat: flag redundant "almost" + "nearly" by @hippietrail in https://github.com/Automattic/harper/pull/4408 * fix(desktop): only update the tray icon when the service state changes by @willherr72 in https://github.com/Automattic/harper/pull/4017 * build(deps): bump pnpm/action-setup from 6.0.10 to 6.1.0 in the actions-minor-patch group across 1 directory by @dependabot[bot] in https://github.com/Automattic/harper/pull/4382 * feat(web): brand-new Chrome Extension "Installed!" page by @elijah-potter in https://github.com/Automattic/harper/pull/4419 * feat: condensated → condensed by @hippietrail in https://github.com/Automattic/harper/pull/4439 * feat: adds suggestions to `QuoteSpacing` by @hippietrail in https://github.com/Automattic/harper/pull/3724 * feat(core): capture range for `SequenceExpr` by @86xsk in https://github.com/Automattic/harper/pull/2994 * fix(core): someone being pedantic in my presentation by @elijah-potter in https://github.com/Automattic/harper/pull/4443 * build(deps): bump rustls-webpki from 0.103.10 to 0.103.13 by @dependabot[bot] in https://github.com/Automattic/harper/pull/3221 * build(deps): bump is-macro from 0.3.7 to 0.3.8 by

  2. v2.11.0v2.11.0Sep 16, 202619.7K downloads

    ## What's Changed * fix(web): color of the logo used in loading animation by @elijah-potter in https://github.com/Automattic/harper/pull/4349 * feat: mixing up "bane" (of one's existence) and "bain" (marie) by @hippietrail in https://github.com/Automattic/harper/pull/4353 * feat: hi-jack/high jack → hijack by @hippietrail in https://github.com/Automattic/harper/pull/4355 * feat: such shame → such a shame by @hippietrail in https://github.com/Automattic/harper/pull/4359 * chore: dictionary curation by @hippietrail in https://github.com/Automattic/harper/pull/4360 * feat: mixing up summary and summery by @hippietrail in https://github.com/Automattic/harper/pull/4363 * feat(web): count update check requests by @elijah-potter in https://github.com/Automattic/harper/pull/4362 * fix(harper-tex): mask horizontal whitespace before % comments by @jurajkl in https://github.com/Automattic/harper/pull/3108 * chore: enhance `SummarySummery` and `ThenThan` by @hippietrail in https://github.com/Automattic/harper/pull/4366 * feat: add "FFT" and "BWT" transforms to `RedundantAcronyms` by @hippietrail in https://github.com/Automattic/harper/pull/4369 * feat: bare-bone → bare-bones by @hip

  3. v2.10.0v2.10.0Sep 9, 202612.4K downloads

    ## What's Changed * feat: a jar & a kimbo → ajar & akimbo by @hippietrail in https://github.com/Automattic/harper/pull/4249 * feat: final nail on the coffin → in by @hippietrail in https://github.com/Automattic/harper/pull/4251 * build(deps): bump cargo-bins/cargo-binstall from 910d9e4456ce4b039662d2a02a34ef1d23c3c50c to 5aafaaca52423a22d83a812fa3ca77492e2895db by @dependabot[bot] in https://github.com/Automattic/harper/pull/4259 * build(deps): bump redhat-actions/buildah-build from 2.13 to 3 in the actions-major group by @dependabot[bot] in https://github.com/Automattic/harper/pull/4258 * feat: take control over→take control of by @hippietrail in https://github.com/Automattic/harper/pull/4262 * feat: remove redundant relative pronoun after which- pronouns by @hippietrail in https://github.com/Automattic/harper/pull/4254 * refactor: convert two linter pairs to use `OneOfMany` by @hippietrail in https://github.com/Automattic/harper/pull/4211 * feat: take pride of → take pride in by @hippietrail in https://github.com/Automattic/harper/pull/4273 * feat: legit → legitimate by @hippietrail in https://github.com/Automattic/harper/pull/4271 * build(deps): bump itertools from 0.1

  4. v2.9.1v2.9.1Sep 1, 20268.1K downloads

    ## What's Changed * chore: more irregular plurals by @hippietrail in https://github.com/Automattic/harper/pull/4040 * feat: look-a-like→lookalike/look-alike by @hippietrail in https://github.com/Automattic/harper/pull/4074 * chore: add "first founded" to `RedundantFirsts` by @hippietrail in https://github.com/Automattic/harper/pull/4072 * feat: curious on/of→curious about by @hippietrail in https://github.com/Automattic/harper/pull/4080 * feat: finish touches→finishing touches by @hippietrail in https://github.com/Automattic/harper/pull/4081 * fix(core): do not flag Dickens as a swear by @mauropereiira in https://github.com/Automattic/harper/pull/4031 * feat: surrealness→surreality by @hippietrail in https://github.com/Automattic/harper/pull/4101 * feat: enhance the `ToTo` linter by @hippietrail in https://github.com/Automattic/harper/pull/4100 * Update build tooling (fastlane to 2.238.0, Ruby 3.4.9, Xcode 26.6) by @mokagio in https://github.com/Automattic/harper/pull/4099 * fix(desktop): repair application picker by @mauropereiira in https://github.com/Automattic/harper/pull/4024 * fix(web): fix problems with the footer by @elijah-potter in https://github.com/Automatt

  5. v2.8.0v2.8.0Aug 13, 202611.6K downloads

    ## What's Changed * feat(core): create pool of instantiated linters to amortize construction cost by @elijah-potter in https://github.com/Automattic/harper/pull/3904 * build(deps): bump regex from 1.12.3 to 1.13.1 by @dependabot[bot] in https://github.com/Automattic/harper/pull/3784 * feat(web): produce graphs and tables for reports by @elijah-potter in https://github.com/Automattic/harper/pull/3858 * fix(chrome-ext): do not allow lint updates to run at the same time or get dropped by @elijah-potter in https://github.com/Automattic/harper/pull/3908 * feat: PCB board redundancy by @hippietrail in https://github.com/Automattic/harper/pull/3919 * feat(dictionary): add entries for 'precess' and derivatives by @Silzinc in https://github.com/Automattic/harper/pull/3877 * build(deps): bump serde_with from 3.20.0 to 3.21.0 by @dependabot[bot] in https://github.com/Automattic/harper/pull/3831 * feat: take care about→take care of by @hippietrail in https://github.com/Automattic/harper/pull/3927 * fix(core): more adjustments to SplitWords by @elijah-potter in https://github.com/Automattic/harper/pull/3922 * feat: don't lint `.DS_Store` or `.json` files in dirs in `harper-cli lint` a

Code frequency

additions and deletions
+60.2K-60.2KWeek of 2025-10-05: +469 linesWeek of 2025-10-05: -144 linesWeek of 2025-10-12: +1,647 linesWeek of 2025-10-12: -85 linesWeek of 2025-10-19: +4,376 linesWeek of 2025-10-19: -1,743 linesWeek of 2025-10-26: +2,508 linesWeek of 2025-10-26: -431 linesWeek of 2025-11-02: +5,729 linesWeek of 2025-11-02: -1,351 linesWeek of 2025-11-09: +3,570 linesWeek of 2025-11-09: -2,077 linesWeek of 2025-11-16: +12,633 linesWeek of 2025-11-16: -9,166 linesWeek of 2025-11-23: +5,075 linesWeek of 2025-11-23: -2,166 linesWeek of 2025-11-30: +6,369 linesWeek of 2025-11-30: -3,030 linesWeek of 2025-12-07: +2,926 linesWeek of 2025-12-07: -1,105 linesWeek of 2025-12-14: +173 linesWeek of 2025-12-14: -42 linesWeek of 2025-12-21: +3,774 linesWeek of 2025-12-21: -2,964 linesWeek of 2025-12-28: +3,666 linesWeek of 2025-12-28: -2,749 linesWeek of 2026-01-04: +3,672 linesWeek of 2026-01-04: -1,622 linesWeek of 2026-01-11: +60,196 linesWeek of 2026-01-11: -5,169 linesWeek of 2026-01-18: +3,331 linesWeek of 2026-01-18: -1,077 linesWeek of 2026-01-25: +1,261 linesWeek of 2026-01-25: -415 linesWeek of 2026-02-01: +4,060 linesWeek of 2026-02-01: -1,423 linesWeek of 2026-02-08: +2,660 linesWeek of 2026-02-08: -937 linesWeek of 2026-02-15: +4,948 linesWeek of 2026-02-15: -1,025 linesWeek of 2026-02-22: +2,491 linesWeek of 2026-02-22: -448 linesWeek of 2026-03-01: +2,808 linesWeek of 2026-03-01: -427 linesWeek of 2026-03-08: +8,546 linesWeek of 2026-03-08: -3,775 linesWeek of 2026-03-15: +8,539 linesWeek of 2026-03-15: -6,487 linesWeek of 2026-03-22: +5,719 linesWeek of 2026-03-22: -4,165 linesWeek of 2026-03-29: +2,861 linesWeek of 2026-03-29: -464 linesWeek of 2026-04-05: +14,167 linesWeek of 2026-04-05: -3,201 linesWeek of 2026-04-12: +1,392 linesWeek of 2026-04-12: -570 linesWeek of 2026-04-19: +576 linesWeek of 2026-04-19: -374 linesWeek of 2026-04-26: +989 linesWeek of 2026-04-26: -418 linesWeek of 2026-05-03: +4,015 linesWeek of 2026-05-03: -428 linesWeek of 2026-05-10: +15,566 linesWeek of 2026-05-10: -750 linesWeek of 2026-05-17: +5,402 linesWeek of 2026-05-17: -1,124 linesWeek of 2026-05-24: +2,549 linesWeek of 2026-05-24: -554 linesWeek of 2026-05-31: +3,326 linesWeek of 2026-05-31: -1,003 linesWeek of 2026-06-07: +2,105 linesWeek of 2026-06-07: -921 linesWeek of 2026-06-14: +2,507 linesWeek of 2026-06-14: -501 linesWeek of 2026-06-21: +2,962 linesWeek of 2026-06-21: -708 linesWeek of 2026-06-28: +5,607 linesWeek of 2026-06-28: -3,437 linesWeek of 2026-07-05: +229 linesWeek of 2026-07-05: -15 linesWeek of 2026-07-12: +1,928 linesWeek of 2026-07-12: -504 linesWeek of 2026-07-19: +5,753 linesWeek of 2026-07-19: -2,399 linesWeek of 2026-07-26: +5,135 linesWeek of 2026-07-26: -3,423 linesWeek of 2026-08-02: +1,492 linesWeek of 2026-08-02: -1,465 linesWeek of 2026-08-09: +4,336 linesWeek of 2026-08-09: -3,284 linesWeek of 2026-08-16: +2,507 linesWeek of 2026-08-16: -327 linesWeek of 2026-08-23: +3,832 linesWeek of 2026-08-23: -1,133 linesWeek of 2026-08-30: +7,493 linesWeek of 2026-08-30: -5,571 linesWeek of 2026-09-06: +3,275 linesWeek of 2026-09-06: -262 linesWeek of 2026-09-13: +12,613 linesWeek of 2026-09-13: -5,805 linesWeek of 2026-09-20: +1,986 linesWeek of 2026-09-20: -544 linesWeek of 2026-09-27: +1,836 linesWeek of 2026-09-27: -825 linesOct 5, 2025Sep 27, 2026
+277.6K lines added, -94K removed over the last year.

Commits per week

last 52 weeks
390Week of 2025-10-05: 13 commitsWeek of 2025-10-12: 10 commitsWeek of 2025-10-19: 20 commitsWeek of 2025-10-26: 14 commitsWeek of 2025-11-02: 27 commitsWeek of 2025-11-09: 32 commitsWeek of 2025-11-16: 33 commitsWeek of 2025-11-23: 29 commitsWeek of 2025-11-30: 32 commitsWeek of 2025-12-07: 22 commitsWeek of 2025-12-14: 15 commitsWeek of 2025-12-21: 15 commitsWeek of 2025-12-28: 17 commitsWeek of 2026-01-04: 29 commitsWeek of 2026-01-11: 31 commitsWeek of 2026-01-18: 34 commitsWeek of 2026-01-25: 23 commitsWeek of 2026-02-01: 25 commitsWeek of 2026-02-08: 30 commitsWeek of 2026-02-15: 33 commitsWeek of 2026-02-22: 35 commitsWeek of 2026-03-01: 24 commitsWeek of 2026-03-08: 29 commitsWeek of 2026-03-15: 39 commitsWeek of 2026-03-22: 32 commitsWeek of 2026-03-29: 27 commitsWeek of 2026-04-05: 33 commitsWeek of 2026-04-12: 14 commitsWeek of 2026-04-19: 14 commitsWeek of 2026-04-26: 12 commitsWeek of 2026-05-03: 16 commitsWeek of 2026-05-10: 25 commitsWeek of 2026-05-17: 30 commitsWeek of 2026-05-24: 36 commitsWeek of 2026-05-31: 34 commitsWeek of 2026-06-07: 27 commitsWeek of 2026-06-14: 19 commitsWeek of 2026-06-21: 36 commitsWeek of 2026-06-28: 30 commitsWeek of 2026-07-05: 5 commitsWeek of 2026-07-12: 9 commitsWeek of 2026-07-19: 19 commitsWeek of 2026-07-26: 36 commitsWeek of 2026-08-02: 8 commitsWeek of 2026-08-09: 28 commitsWeek of 2026-08-16: 31 commitsWeek of 2026-08-23: 27 commitsWeek of 2026-08-30: 31 commitsWeek of 2026-09-06: 35 commitsWeek of 2026-09-13: 18 commitsWeek of 2026-09-20: 22 commitsWeek of 2026-09-27: 21 commitsOct 5, 2025Sep 27, 2026
1.3K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 7 commitsSun 1:00 — 6 commitsSun 2:00 — 6 commitsSun 3:00 — 2 commitsSun 4:00 — 1 commitsSun 5:00 — 2 commitsSun 6:00 — 1 commitsSun 7:00 — 1 commitsSun 8:00 — 3 commitsSun 9:00 — 11 commitsSun 10:00 — 18 commitsSun 11:00 — 12 commitsSun 12:00 — 7 commitsSun 13:00 — 12 commitsSun 14:00 — 7 commitsSun 15:00 — 12 commitsSun 16:00 — 10 commitsSun 17:00 — 20 commitsSun 18:00 — 7 commitsSun 19:00 — 13 commitsSun 20:00 — 9 commitsSun 21:00 — 10 commitsSun 22:00 — 3 commitsSun 23:00 — 10 commitsMon 0:00 — 5 commitsMon 1:00 — 87 commitsMon 2:00 — 12 commitsMon 3:00 — 1 commitsMon 4:00 — 7 commitsMon 5:00 — 4 commitsMon 6:00 — 1 commitsMon 7:00 — 12 commitsMon 8:00 — 55 commitsMon 9:00 — 63 commitsMon 10:00 — 52 commitsMon 11:00 — 38 commitsMon 12:00 — 51 commitsMon 13:00 — 57 commitsMon 14:00 — 81 commitsMon 15:00 — 71 commitsMon 16:00 — 33 commitsMon 17:00 — 26 commitsMon 18:00 — 11 commitsMon 19:00 — 14 commitsMon 20:00 — 16 commitsMon 21:00 — 46 commitsMon 22:00 — 33 commitsMon 23:00 — 37 commitsTue 0:00 — 29 commitsTue 1:00 — 32 commitsTue 2:00 — 18 commitsTue 3:00 — 21 commitsTue 4:00 — 25 commitsTue 5:00 — 3 commitsTue 6:00 — 8 commitsTue 7:00 — 5 commitsTue 8:00 — 37 commitsTue 9:00 — 41 commitsTue 10:00 — 47 commitsTue 11:00 — 33 commitsTue 12:00 — 65 commitsTue 13:00 — 55 commitsTue 14:00 — 60 commitsTue 15:00 — 57 commitsTue 16:00 — 28 commitsTue 17:00 — 24 commitsTue 18:00 — 19 commitsTue 19:00 — 11 commitsTue 20:00 — 11 commitsTue 21:00 — 25 commitsTue 22:00 — 28 commitsTue 23:00 — 34 commitsWed 0:00 — 27 commitsWed 1:00 — 20 commitsWed 2:00 — 18 commitsWed 3:00 — 18 commitsWed 4:00 — 18 commitsWed 5:00 — 7 commitsWed 6:00 — 7 commitsWed 7:00 — 14 commitsWed 8:00 — 34 commitsWed 9:00 — 52 commitsWed 10:00 — 40 commitsWed 11:00 — 38 commitsWed 12:00 — 29 commitsWed 13:00 — 51 commitsWed 14:00 — 78 commitsWed 15:00 — 69 commitsWed 16:00 — 26 commitsWed 17:00 — 20 commitsWed 18:00 — 15 commitsWed 19:00 — 18 commitsWed 20:00 — 14 commitsWed 21:00 — 31 commitsWed 22:00 — 30 commitsWed 23:00 — 16 commitsThu 0:00 — 16 commitsThu 1:00 — 9 commitsThu 2:00 — 19 commitsThu 3:00 — 22 commitsThu 4:00 — 20 commitsThu 5:00 — 8 commitsThu 6:00 — 8 commitsThu 7:00 — 8 commitsThu 8:00 — 39 commitsThu 9:00 — 41 commitsThu 10:00 — 52 commitsThu 11:00 — 36 commitsThu 12:00 — 75 commitsThu 13:00 — 51 commitsThu 14:00 — 51 commitsThu 15:00 — 52 commitsThu 16:00 — 23 commitsThu 17:00 — 22 commitsThu 18:00 — 24 commitsThu 19:00 — 13 commitsThu 20:00 — 19 commitsThu 21:00 — 28 commitsThu 22:00 — 30 commitsThu 23:00 — 18 commitsFri 0:00 — 19 commitsFri 1:00 — 10 commitsFri 2:00 — 16 commitsFri 3:00 — 18 commitsFri 4:00 — 4 commitsFri 5:00 — 4 commitsFri 6:00 — 3 commitsFri 7:00 — 3 commitsFri 8:00 — 38 commitsFri 9:00 — 62 commitsFri 10:00 — 50 commitsFri 11:00 — 32 commitsFri 12:00 — 65 commitsFri 13:00 — 46 commitsFri 14:00 — 40 commitsFri 15:00 — 41 commitsFri 16:00 — 31 commitsFri 17:00 — 14 commitsFri 18:00 — 10 commitsFri 19:00 — 8 commitsFri 20:00 — 11 commitsFri 21:00 — 32 commitsFri 22:00 — 44 commitsFri 23:00 — 30 commitsSat 0:00 — 22 commitsSat 1:00 — 23 commitsSat 2:00 — 9 commitsSat 3:00 — 14 commitsSat 4:00 — 13 commitsSat 5:00 — 3 commitsSat 6:00 — 1 commitsSat 7:00 — 3 commitsSat 8:00 — 7 commitsSat 9:00 — 10 commitsSat 10:00 — 15 commitsSat 11:00 — 21 commitsSat 12:00 — 16 commitsSat 13:00 — 8 commitsSat 14:00 — 7 commitsSat 15:00 — 8 commitsSat 16:00 — 10 commitsSat 17:00 — 11 commitsSat 18:00 — 11 commitsSat 19:00 — 17 commitsSat 20:00 — 17 commitsSat 21:00 — 9 commitsSat 22:00 — 10 commitsSat 23:00 — 8 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Aug 1, 2026weekly#13+2,026
Jul 31, 2026weekly#13+2,026
Jul 23, 2026daily#21+4
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    456.7K stars · TypeScript

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    272.8K stars · JavaScript

  • react/react

    The library for web and native user interfaces.

    250.9K stars · JavaScript

  • ultraworkers/claw-code

    An agent-managed museum exhibit, built in Rust with Gajae-Code / LazyCodex — developed and maintained with no human intervention.

    195.2K stars · Rust

  • DietrichGebert/ponytail

    Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.

    154.6K stars · JavaScript

  • vercel/next.js

    The React Framework

    143.2K stars · JavaScript