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?
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.
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.
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.
A worked example with a real repo
On Oct 24, 2026, morluto/rea was first in Today. Its gain is two real star counts, subtracted.
stars on Oct 24 = 373,156
stars on Oct 23 = 366,708
gained = 373,156 - 366,708 = +6,448
You can check this yourself: open the repo on GitHub on both dates and subtract. A star removed in between is already counted, because the gain is net.
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.
How this differs from GitHub Trending
GitHub doesn't publish how its trending list is ranked. The only official description we found is a GitHub blog post from Aug 13, 2013: trending is calculated eight times a day into daily, weekly and monthly buckets, from stars, forks, commits, follows and pageviews. We can't tell how much of that still applies, so we don't claim to know where the two lists differ.
What we can say is how ours is built. One signal, stars gained. A formula you can redo with two dates. A list of what we leave out. We can't see commits or pageviews, so a repo with a burst of commits and a flat star line gets no rank here. The reasoning is in How does GitHub decide what is trending?
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.
Guides that go deeper
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.