{
  "schema": "tesign-radar/item/1",
  "generated_at": "2026-09-18T21:08:09.911Z",
  "lang": "en",
  "slug": "harper",
  "url": "https://tesign.com/en/item/harper/",
  "alternates": {
    "ko": {
      "html": "https://tesign.com/item/harper/",
      "json": "https://tesign.com/item/harper/index.json",
      "markdown": "https://tesign.com/item/harper/index.md"
    },
    "en": {
      "html": "https://tesign.com/en/item/harper/",
      "json": "https://tesign.com/en/item/harper/index.json",
      "markdown": "https://tesign.com/en/item/harper/index.md"
    }
  },
  "name": "Harper",
  "use_label": "Offline English grammar checking",
  "one_liner": "An English grammar checker that runs on your own machine, so what you write never leaves it.",
  "text": {
    "why": "The author spells out the reasoning in the README: existing checkers were expensive and overbearing, and everything you wrote was sent to their servers. The main alternative needed gigabytes of RAM. Harper runs locally, so there is no network round-trip while you revise.",
    "take": "A practical alternative if you write English email or docs often but do not want another subscription. Its suggestions are restrained enough not to flatten your own voice.",
    "build": [
      "Written in Rust under the Apache-2.0 licence. Because the checking happens locally, it works without a network connection."
    ],
    "who": [
      {
        "role": "Anyone writing English email, proposals or documentation, especially where drafts must not be sent to an outside server.",
        "situation": null
      }
    ],
    "start": [
      {
        "command": false,
        "text": "Paste a sentence at writewithharper.com to see the checks first, then follow the site's guide to connect it to your editor."
      }
    ],
    "caveat": [
      "English only — it does not check Korean spelling or grammar."
    ]
  },
  "cta": {
    "type": "try",
    "label": "TRY",
    "url": "https://writewithharper.com/"
  },
  "ready": "browser",
  "categories": [
    "productivity"
  ],
  "categories_confirmed": true,
  "tags": [
    "영문 교정",
    "문법",
    "오프라인",
    "프라이버시"
  ],
  "platform": [
    "web"
  ],
  "license": {
    "spdx": "Apache-2.0",
    "scope": "permissive",
    "scope_text": "Commercial use, redistribution OK. Keep notices; mark changes.",
    "url": "https://spdx.org/licenses/Apache-2.0.html",
    "note": null,
    "open_source": true
  },
  "language": "Rust",
  "source_urls": {
    "canonical": "https://writewithharper.com/",
    "github": "https://github.com/automattic/harper",
    "huggingface": null,
    "app_store": null,
    "sightings": [
      {
        "source": "github",
        "url": "https://github.com/automattic/harper",
        "posted_at": "2026-09-16T05:00:00.000Z",
        "hn_url": null
      }
    ]
  },
  "numbers": {
    "as_of": "2026-09-18T15:00:00.000Z",
    "stars": 15443,
    "stars_unit": "GitHub stars",
    "stars_checked_at": "2026-09-17T03:25:11.118Z",
    "stars_observed_since_check": 4,
    "star_delta_24h": 4,
    "star_delta_7d": 14,
    "star_delta_30d": 18,
    "star_delta_unit": "GitHub stars gained in the window, GH Archive events summed to as_of",
    "spark_14d": [
      null,
      null,
      null,
      null,
      2,
      2,
      2,
      null,
      2,
      null,
      null,
      6,
      null,
      4
    ],
    "hf_likes": null,
    "hf_likes_observed_at": null,
    "hn_points": null,
    "hn_points_observed_at": null,
    "store": null,
    "method": "Star total = the value last checked on GitHub (stars_checked_at) + increases observed via GH Archive since. The 24h · 7d · 30d gains are GH Archive hourly events summed to the reference time (as_of). No score of ours."
  },
  "ranks": null,
  "activity": {
    "pushed_at": "2026-09-16T21:20:29.000Z",
    "owner_type": null,
    "open_issues": null,
    "contributors": null,
    "releases_count": null,
    "latest_release": null,
    "checked_at": null,
    "core_checked_at": "2026-09-17T03:25:11.118Z"
  },
  "signals": [],
  "images": {
    "og": "https://tesign.com/img/harper-5400f1ade3.png",
    "cover": "https://tesign.com/img/harper-5400f1ade3.png",
    "cover_width": 2400,
    "cover_height": 1260,
    "gallery": [
      "https://tesign.com/img/harper-5400f1ade3.png"
    ],
    "alt": "The Harper site showing the grammar checker marking issues in a sentence.",
    "tier": 1
  },
  "dates": {
    "first_seen_at": "2026-09-17T01:24:43.899Z",
    "source_created_at": "2023-10-22T02:58:35.000Z",
    "discovery_hours": 25462.43580527778,
    "launch_signal_at": "2026-09-16T05:00:00.000Z",
    "kept_at": "2026-09-18T21:07:28.082Z",
    "first_published_at": "2026-09-18T21:07:28.284Z",
    "updated_at": "2026-09-18T21:07:28.235Z",
    "ingestion_mode": "live"
  },
  "notes": [
    "This file was produced by the same build, from the same data, as the tesign.com item page. The text is editorial; the numbers are stored observations.",
    "null in the JSON means not observed — never zero. The Markdown writes [unconfirmed] for it.",
    "Star total = the value last checked on GitHub (stars_checked_at) + increases observed via GH Archive since. The 24h · 7d · 30d gains are GH Archive hourly events summed to the reference time (as_of). No score of ours.",
    "A summary, not legal advice."
  ]
}
