Skip to content

How GitHub Trending Today works

Where each list and each number on this site comes from, what we add, and what we do not know. Nothing here is a score of our own.

Collected

The source

GitHub has no API for trending repositories. The lists exist only as web pages, so a scheduled job on our server reads those pages every three hours and extracts, for each repository: its name, description, main language and language colour, total stars, forks, and the “stars today / this week / this month” figure. The order of the page is kept as the position.

These are the pages read in each run, with the number of repositories found in the last one:

PageRepositories
github.com/trending?since=daily17
github.com/trending?since=weekly17
github.com/trending?since=monthly23
github.com/trending/python?since=daily14
github.com/trending/typescript?since=daily17
github.com/trending/javascript?since=daily18
github.com/trending/rust?since=daily15
github.com/trending/go?since=daily23
github.com/trending/java?since=daily19
github.com/trending/c%2B%2B?since=daily13

What each number means

  • Position — the place of the repository on GitHub’s page. GitHub does not publish how it orders the page.
  • Stars gained — the figure GitHub prints next to the repository for the period of the list. We do not compute it.
  • Relative growth — our only derived number: stars gained ÷ (total stars − stars gained). It is blank when the repository had no stars before the period. It is used to order the fastest growing page and is available as a sort option on every list.
  • Star history — one total per repository per UTC day, recorded by us from the day a repository is first seen and kept for the repositories seen in the last 45 days. A chart is drawn from three days onwards.

What we add to each repository

For repositories in the lists, the collector asks the GitHub API for the topics, license, creation date, date of the last push, website and number of open issues, and reads the README file. From the README it keeps two things: the first paragraph of prose, shown as “First paragraph of the README”, and an install command, only if the README contains a line such as pip install, npm install, npx, cargo install, brew install, go install or docker run that names the project or its owner. Clone instructions and local set-up steps are not shown as install commands.

These facts are refreshed at most once every 24 hours per repository, and the number of repositories read per run is limited by GitHub’s API quota. A repository that has just entered a list can therefore appear for a while with its description only. At the moment 55 of the 145 repositories in the lists have these facts.

Topic pages

The AI agents, MCP and LLM pages group repositories by a written rule applied once, in the collector: a match on the repository’s GitHub topics, or on whole words in its description. Loose words such as “tool”, “model” or “agent” alone never classify a repository. The exact terms are listed in the questions at the end of each topic page.

Archive

After each run the main daily list is stored under the current UTC date, replacing the earlier reading of the same day. The archive therefore has one list per day, the last one read that day, starting on the collector’s first day.

When something goes wrong

  • If the main daily page cannot be read or contains no repository, the run stores nothing. The previous lists stay, with their own collection time.
  • If only a secondary page fails, its previous list is kept and a notice is attached to the collection; notices appear under the collection time.
  • If a list comes back with fewer than half the repositories it had before, a notice is attached as well.
  • On every page, a warning is displayed when the collection time is more than 24 hours in the past.

What this site does not do

It does not rate repositories, detect purchased stars, or judge quality. It does not summarise READMEs with a language model. It does not track repositories that never reach a GitHub trending page. Avatars are loaded from GitHub by your browser; see the privacy page.

More lists to explore

The same data cut by period, programming language and subject.

Questions and answers

More detail on the method page.

Is this site affiliated with GitHub?

No. It is an independent reader of a public GitHub page and of the public GitHub API.

Do you use a third-party trending service?

No. Lists come from github.com/trending and repository facts from api.github.com and the README file. No aggregator sits in between.

What happens when GitHub changes its page?

If the collector cannot find any repository in the main daily list, it stores nothing: the last good list stays, with its date, and the failure is logged. If only a language list fails, that list keeps its previous content and a notice is attached to the collection.