How to Check If an Open-Source Project Is Actually Still Maintained

Tested by TNT Review — record TNT-TEST-2026-10-05-004, 5 October 2026. We ran the checker below against a genuinely active project and a genuinely abandoned one, and both real results are in Verification.

The problem

A GitHub project’s star count tells you how popular it was when people found it, not whether anyone is still maintaining it today. Plenty of open-source projects with thousands of stars haven’t been touched in years — and depending on one for something you’ll need to update or get security fixes for is a real risk most people never actually check before adopting a library.

Expected outcome

By the end of this guide you will have a small script that checks any public GitHub repo for three concrete, checkable signs of active maintenance, in under a second, using GitHub’s own free public API.

Requirements and costs

  • Node.js (version 18 or newer, for its built-in fetch).
  • Cost: free. GitHub’s public API needs no account or API key at this request volume.

The three checks, and why each one matters

  1. Is it archived? GitHub lets an owner mark a repo “archived,” making it permanently read-only. This is the single clearest signal a project is genuinely done, not just quiet.
  2. Was it pushed to recently? A repo with no commits in the last 180 days isn’t necessarily dead, but it’s a reasonable line for “check more carefully before depending on this.”
  3. Does it have a published release? A project with commits but no tagged releases makes it harder to pin a stable version — you’d be depending on a moving target instead of a specific release.

Step-by-step implementation

  1. Download the checker from the link below.
  2. Open a terminal in that folder.
  3. Run it against any public repo, as owner/repo:
    node check-repo-health.js n8n-io/n8n
  4. Read the output. Each check reports true/false with a short detail; passed out of checked gives you the quick summary.

A real example

$ node check-repo-health.js n8n-io/n8n
{ "repo": "n8n-io/n8n", "stars": 206674, "open_issues": 1127,
  "last_pushed_days_ago": 0, "archived": false,
  "findings": [
    { "check": "not archived", "ok": true },
    { "check": "pushed to within the last 180 days", "ok": true, "detail": "last push 0 day(s) ago" },
    { "check": "has at least one published release", "ok": true, "detail": "latest: stable" }
  ], "passed": 3, "checked": 3 }

$ node check-repo-health.js jquery/jquery-mobile
{ "repo": "jquery/jquery-mobile", "stars": 9600, "open_issues": 182,
  "last_pushed_days_ago": 1823, "archived": true,
  "findings": [
    { "check": "not archived", "ok": false, "detail": "repo is archived (read-only)" },
    { "check": "pushed to within the last 180 days", "ok": false, "detail": "last push 1823 day(s) ago" },
    { "check": "has at least one published release", "ok": false, "detail": "no releases found..." }
  ], "passed": 0, "checked": 3 }

jQuery Mobile has nearly 10,000 stars and still failed every check — a direct demonstration that star count and active maintenance are two different things.

Verification and troubleshooting

What we tested, on 5 October 2026 (record TNT-TEST-2026-10-05-004): the checker run against n8n-io/n8n, a genuinely active project (3 of 3 passed), and jquery/jquery-mobile, a genuinely archived project (0 of 3 passed, each for the stated reason). Both results above are real API responses, not constructed examples.

Troubleshooting:

  • “GitHub API returned 404.” Check the spelling of owner/repo — this is the exact case-sensitive path from the repo’s GitHub URL.
  • “GitHub API returned 403.” You’ve hit GitHub’s unauthenticated rate limit (60 requests/hour per IP) — wait an hour, or add your own token if you need to check many repos quickly.
  • A repo you know is actively maintained fails the release check. Some projects commit constantly but never use GitHub’s own Release feature, tagging versions a different way — treat that one check as informative, not disqualifying, when the other two pass.

Limitations and alternatives

This checks three structural signals, not code quality, security practices, or how responsive maintainers actually are to issues and pull requests — read a sample of recent issues and PRs yourself for that. It also can’t see private forks or activity that happens outside GitHub (mailing lists, a separate issue tracker).

Free resources

The download contains the full checker, ready to run against any public repo.

Download the repo health checker (ZIP, 1 KB)

Is there a paid version?

Not yet. This is the complete method. TNT Review has sold nothing to date and has no checkout, so any price we discuss in future should be read as a hypothesis, not an offer.

Leave a comment