$ man rank

How we rank.

Every number on this site comes from GitHub's public API. Here's exactly what we count, what we skip, and where we can be wrong.

Why we measure it this way: How does GitHub decide what is trending?

01CollectPublic repo data from GitHub's API.
02SnapshotStar count saved once a day (UTC).
03CompareLatest count minus the count N days earlier.
04SkipForks, archived and private repos.
05RankSort by stars gained. Ties go to the bigger repo.

Where the data comes from

GitHub's public API, read-only: repository search and one repo at a time. We don't scrape github.com/trending and we don't use private data. If GitHub's API gets something wrong, so do we.

What "stars gained" means

Stars in the latest daily snapshot minus stars in the snapshot N days earlier. Today is one day back, This week seven, This month thirty. "Today" is the last 24 hours, not a calendar day. Snapshots are taken once a day at about the same time; when one was taken at a clearly different time of day, we read it at the usual time from the two real snapshots on either side of it, and if that is not possible the window waits instead.

# stars gained
gained = stars_latest - stars_N_days_ago
# net of unstars, so it can be lower than "new stars"
Today
Twenty-four hours back. Needs 2 snapshots a day apart.
This week
Seven days back. Needs 8 snapshots, so 7 days of data.
This month
Thirty days back. Needs 30 days of data.
All time
Total stars. No window.
Bar chart of how many days back each window looks: Today 1 day, This week 7 days, This month 30 days.Today 1 day back; This week 7 days back; This month 30 days backToday1 day backThis week7 days backThis month30 days back
How far back each window looks. A window is ranked in full only once we have that many days of snapshots. Source: RepoTrending, src/lib/rank.js (WINDOWS), Oct 24, 2026.

We never fill a gap with a guess. The one thing we calculate is a snapshot taken at an odd hour: we read it at the usual hour by a straight line between the two real snapshots on either side of it, never beyond them, and if that is not possible the window waits. Until a window has enough days we say "Data collecting since" the day we started, show what we have marked partial, and say when the full ranking starts. Once it is ready, a repo we have watched for fewer days than the window is left out of that list instead of being compared unfairly.

Which repos we track

About 12,496 repos, found with public GitHub searches: every repo with 5,000 stars or more, whatever its age or last push, plus repos created in the last 30 or 90 days with a star floor, the topics ai-agents, mcp, claude-code and llm, and active repos in a few big languages. The site has a page for the best few thousand of them: the biggest gainers of each window and then the most starred. A search cannot sort by growth, so this is not every repo on GitHub: a repo under 5,000 stars that is old, quiet and suddenly takes off can be missed until a search reaches it.

What we filter out

Forks, archived and disabled repos, and private repos. We do not check for bought or farmed stars yet. Very young repos with tens of thousands of stars show up in the data, and we haven't judged them, so treat a big spike with care.

Sponsors never move a rank

Sponsored spots sit in their own labeled card, outside every list. Paying us doesn't change where a repo ranks. Not paying doesn't either.

What we can't see

  • Stars aren't quality. A repo can trend because it's good, or because it's funny.
  • Private repos and GitHub Enterprise are out of reach.
  • Weekly and monthly numbers only exist once we've collected that many days. We say so on the page.
  • We can't tell a real surge from bought stars yet.

Questions

How does RepoTrending rank GitHub repos?

By stars gained: a repo's star count in the latest daily snapshot minus its count 1, 7 or 30 days earlier. Nothing else goes into the rank. Ties go to the repo with more total stars, then by name.

Where do the numbers come from?

GitHub's public REST API, read-only, through repository searches. We save one star count per repo per day (UTC) for about 12,496 public repos. We don't scrape github.com/trending and we use no private data.

Why is this different from GitHub Trending?

GitHub doesn't publish how its trending list is ranked, so we can't compare the two method to method. Ours uses one signal, stars gained, so you can check any rank yourself by taking a repo's star count on two dates and subtracting.

Is "today" a calendar day?

No. Today is the last 24 hours between two daily snapshots, so it does not reset at midnight. This week looks 7 days back and This month 30 days back.

Why can a repo's gain be lower than its new stars?

A gain is net: stars added minus stars removed. We only see the total at each snapshot, so we can't split a gain into new stars and unstars.

Can you tell real stars from bought stars?

Not yet. We don't check for bought or farmed stars, so a big spike on a young repo is shown, not judged.

Can a sponsor buy a higher rank?

No. Sponsored spots sit in their own labeled card, outside every list. Paying us does not change where a repo ranks, and not paying does not either.

Spot a mistake?

A way to tell us which repo and which number looks off is coming. We will check it and fix it in public.

Coming soon Reports are not open yet.