Methodology

Every RepoRadar report comes from fixed rules applied to public data. No language model writes any claim. This page states each rule with its exact numbers. Method version 2026.10.2.

Anyone can buy stars for any repo. The star section describes a star history. It is never a verdict on the project, and it never says why anyone starred a repo.

Data sources

Maintenance

Human commits

Commits on the default branch are counted for the last 30, 90 and 365 days. Bot commits are left out. A login ending in [bot] is a bot, and so are known bot names and logins or names that end in a separate "bot" or "robot" word (release-bot, ci-robot, PR Bot). Accounts that push other people's work, such as translation platforms and exports from a company's internal repository, count as human activity but not as one person: the People section and author counts leave them out. If the sample stops before the 365-day window starts, the human count is GitHub's total scaled by the sampled bot share.

Label

The first rule that matches gives the label:

  1. Archived: GitHub marks the repo as archived.
  2. Dormant: no human commit in 365 days, and either fewer than 50 % of sampled issues got a maintainer reply (at least 5 issues sampled), or at least 5 pull requests are open.
  3. Stable: no human commit in 365 days, and no dormant condition holds: the sample is smaller than 5 issues or at least 50 % were answered, and fewer than 5 pull requests are open.
  4. Slowing (information only): at least 12 human commits in 365 days, and the 90-day pace is under half the 365-day pace.
  5. Active: at least 1 human commit in the last 30 days and at least 6 in the last 90 days.
  6. Steady: anything else.

Responsiveness

The sample is issues created 30 to 120 days ago. If the repo has no human commit in the last year, the window widens to 30 to 365 days. Issues opened by maintainers are left out. A response is the first comment, label, close or assignment by an OWNER, MEMBER or COLLABORATOR, or by one of the top 5 committers. We need at least 5 issues. Below that, the report gives no median and no answered share. The median first response is shown in hours and days. Repos with issues turned off get no responsiveness figures.

Recent issues are not sampled. A busy repo's newest issues have not had time to get a reply yet, so they would make every project look slow.

Releases and pull requests

The report shows the last commit, the last release, the number of authors in the last 90 days and the median time from opening to merging a pull request, from the last 50 merged pull requests.

People

The people section uses human commits in the last 365 days. If there are none, it uses the newest 100 commits and says so. It reports:

Bus factor 1 applies when the sample has at least 10 commits and the top author wrote at least 70 % of them. The section is partial when the sample has fewer than 5 human commits.

Top committer change is an information note only. It fires when the 90-day leader differs from the 365-day leader and both have at least 10 commits.

Stars

Star series and the analysis start

Weekly counts from GitHub's stargazers history endpoint are expanded to days. Today and later days are dropped. Analysis starts at F, the later of created + 7 days and 2013-02-10. Stars that GitHub dates to the creation day of a repo created before 2013 are reported as "N undated stars". They are not counted as a burst. A run of 26 weeks or more with no stars is a history reset. F then moves to the end of the run plus 28 days, and the report says the history was reset. If the archive saw at least 1,000 stars in that run, a later spike that is at least the larger of 1,000 stars and half of the archived stars is counted as restored stars, not a burst. Those stars came back with a new date after the gap.

Bursts

Only days from F + 28 onward are checked.

Shape

The lift L is the median daily count from 8 to 35 days after the episode ends, divided by the median from 35 to 8 days before it starts. That denominator is floored at 0.5 stars a day.

Corroboration

The corroboration window runs from 2 days before the episode to 2 days after it. The baseline runs from 90 to 8 days before the episode, and needs at least 30 usable days. Two counts are compared with their expected values from the baseline. Expected E = X_B × stars in the window ÷ stars in the baseline.

An episode is corroborated when any of these holds. It is uncorroborated when at least one count is informative and none corroborates. Otherwise it is unknown.

Engagement

Forks, watchers, issues plus pull requests, and contributors are each divided by the star count. Each ratio's percentile is taken within a peer cell: one of five star brackets (200–1k, 1k–5k, 5k–20k, 20k–100k, 100k+), split into code and non-code. The composite is the mean of the four percentiles. The engagement is lowwhen the composite is below the cell's 5th percentile. A cell with fewer than 50 peer repos is not used. Repos under 200 stars are not compared.

A repo is non-code when it has no root manifest and less than 10 KB of programming-language code. Lists, books and model-release repos are often non-code. Engagement is not applied to non-code repos or to mirrors.

Survival against the organic baseline

This runs only for repos with an archive backfill. For each week w, a_w is the number of distinct accounts whose last star event is in that week, and h_w is the current history. G_w is the organic baseline from reference repos, smoothed with a 9-week rolling median. R_w = h_w ÷ (a_w × G_w), for weeks with at least 50 archived accounts.

Forward removals

Each week the stars of tracked repos are snapshotted. A week older than 14 days that shrinks counts as removals, by the drop in its count. The removal signal needs at least 8 snapshots. It is a hard signal when removals reach the larger of 200 stars and 2 % of all stars, and at least 50 % of them fall within 4 weeks.

Label

LabelRule
Not enough dataUnder 200 stars, or under 120 analyzable days.
Likely inflatedA hard signal plus soft bursts or low engagement, or both hard signals.
Unexplained burstsSoft bursts, or exactly one hard signal alone.
Mostly organicLow engagement alone; uncorroborated excess of at least 2 % of stars; or unknown-corroboration excess of at least 5 % of stars.
OrganicNone of the above.

Soft bursts means uncorroborated excess of at least the larger of 200 stars and 15 % of stars. A hard signal is either survival or forward removals. Confidence counts the signal families computed: bursts, engagement, survival and removals. 3 or more families give high confidence, 2 medium, and 1 low.

Stars can move a repo's verdict from Healthy to Caution, and no further.

Risk

The risk section lists facts and flags, each linked to its source:

Verdict

The verdict is the most severe level that fires. Each fired rule is written as one sentence with its evidence links, followed by what would change the verdict.

VerdictFires when (any)
AvoidThe repo is archived or disabled. · The main package is deprecated. · Dormant, and fewer than 20 % of sampled issues got a maintainer reply (at least 5 issues). · A CRITICAL advisory affects the latest version.
At riskDormant. · Bus factor 1, and no human commit in 90 days. · A successor is declared, or a fork has taken over. · The license moved from OSI-approved to not approved within 12 months. · A HIGH advisory affects the latest version.
CautionStable. · Bus factor 1. · Median first response over 30 days. · No license file. · A package with no release in 24 months, despite at least 10 human commits in the last year. · Stars labelled Unexplained bursts or Likely inflated.
Too newThe repo was created less than 60 days ago, and no Avoid or At risk rule fired.
HealthyNone of the above.

For a non-code repo (defined under Engagement), the dormant, dormant with unanswered issues, stable, bus factor 1, slow response and fork takeover rules fire at most at Caution. Each such rule says the repository holds mostly documentation, data or model files. The other risk rules are not changed.

Method changes

2026.10.2 (October 14, 2026), after a review of all 2,811 precomputed reports:

2026.10.1 (October 13, 2026), after a review of the first 863 precomputed reports:

What we deliberately don't do

Limits