mrkeyoor.com_
Sun 04 Oct 08:14 UTC
Dataevaluationupdated 04 Oct 2026

github-stars-history review

GitHub Stars History is a Python command-line tool that turns GitHub's aggregate star-history endpoint into a daily series, growth summary, and CSV or JSON files. It solves a focused reporting job for developers who want reproducible star data without handing a repository to a hosted analytics service.

Verdict

Our run installed 36 packages in 33 seconds and passed all 8 tests, making GitHub Stars History an easy choice for a small, scriptable export job. Use it when you want daily star counts in files you control and can build the presentation layer yourself. Choose a visual alternative if the chart is the product, and do not use this tool to identify individual stargazers.

We ran it

Lab card: what happened when we ran github-stars-historyScreenshot of github-stars-history (buygithub.com/blog/how-github-stars-work/?utm_source=github&utm_medium=readme&utm_campaign=github-stars-history)
Install✓ · 33s36 packages · 37 MB
Build✓ · 5s
Tests✓ · 5s8 passed · 0 failed of 8 (pytest)
Known vulns0(pip-audit)
Repo14 files~503 lines of source · 0 MB · 0 CI workflows · tests dir

Answers from our run

Does github-stars-history build from source?

Dependencies installed in 33 seconds (36 packages), and the build succeeded in 5 seconds. We cloned commit 940cb93 into a clean Debian container with 3 CPUs and no project-specific setup.

Do github-stars-history's tests pass?

Yes: 8 of 8 passed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does github-stars-history have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use github-stars-history?

Teams that need a browser dashboard or ready-made shareable charts: the documented interface is a Python CLI, and its built-in outputs are terminal text, CSV, or JSON.

What are the alternatives to github-stars-history?

Star History, StarTrack-js. Our run installed 36 packages in 33 seconds and passed all 8 tests, making GitHub Stars History an easy choice for a small, scriptable export job.

Setup5/533-second install and all 8 tests passed
Docs4/5Clear CLI, export, token, API, and privacy guidance
Community2/5276 stars, recent push, and no visible issue discussion
Maturity3/5v1.1.0 works, though release history spans only two tags

Who it’s for

Maintainers who want a scriptable record of daily star gains for public repositories.
Analysts who need CSV or JSON exports for their own charts and launch reports.
Developers comparing several repositories from a terminal or scheduled job.
Python users who prefer a small, readable tool over operating a web dashboard.

Who it’s NOT for

Teams that need a browser dashboard or ready-made shareable charts: the documented interface is a Python CLI, and its built-in outputs are terminal text, CSV, or JSON.
Investigators who need stargazer identities: the README says GitHub's replacement endpoint returns aggregate counts without usernames.
Programs that need traffic, clone, fork, or issue analytics in the same report: the code analyzes star counts only.
Private-repository users unwilling to supply a GitHub token with access: anonymous use is for public repositories.
Release processes that require upstream CI evidence: our measured checkout had a tests directory, but no CI workflow file and no Dockerfile.

Setup reality

Our fresh Debian sandbox installed commit 940cb93 in 33 seconds, adding 36 packages and using 37 MB. The build passed in 5 seconds. Pytest then passed all 8 tests in 5 seconds, and pip-audit found 0 known vulnerabilities.

Public repositories need no account or API key. A GITHUB_TOKEN raises the documented GitHub allowance from 60 to 5,000 requests per hour and is required with suitable access for private repositories. Output files are written to the current directory unless you use summary mode.

The project targets Python 3.8 or newer. Our 14-file checkout included tests but no CI workflow or Dockerfile, so teams must supply their own automation and container packaging. The CLI also pauses near GitHub's rate-limit floor, which can turn an anonymous scheduled run into a wait.

Its 503 lines turn GitHub aggregate history into export files

GitHub Stars History fits its core job into about 503 lines of source: it asks GitHub for weekly aggregate star data, reconstructs the daily series, and writes the result as CSV or JSON. The summary adds recent growth windows, average stars per day, and the peak date. You can pass several repositories in one command, which is enough for a launch report or a comparison you plan to chart elsewhere. There is no database, login, or hosted account between your script and GitHub.

Most of the behavior lives in star_history.py, so a maintainer can inspect the request loop, aggregation, rate-limit handling, and exports without tracing a framework. The checkout we measured had 14 files. The program stores nothing beyond the files you ask it to create. It also gives you the raw daily rows instead of trapping the result inside a proprietary chart. That narrow scope is the reason to consider it.

Version 1.1.0 follows GitHub's privacy-safe replacement endpoint

GitHub restricted third-party access to stargazer lists in June 2026, then introduced an aggregate history endpoint in September. Version 1.1.0 moved this project to that replacement. The CLI calls /repos/{owner}/{repo}/stargazers/history, follows pagination links, expands each weekly bucket into dated rows, sorts them, and totals the counts. That makes the current release materially different from older star trackers that depended on a list of user accounts.

The privacy tradeoff is clear. You get counts for each day, not the people behind them. That is enough to compare launch timing or feed a chart. It cannot tell you whether a cluster of stars came from related accounts, and it cannot inspect account age or profile quality. The README suggests that spikes can prompt further investigation, but this data alone does not explain why a spike happened.

What happened when we ran it

Our fresh Debian sandbox installed commit 940cb93 in 33 seconds. The environment gained 36 packages and used 37 MB on disk. The build completed in 5 seconds, then pytest passed 8 of 8 tests in another 5 seconds. Pip-audit reported 0 known vulnerabilities. Those results cover installation, packaging, and the supplied unit suite. They do not measure GitHub response time or the accuracy of a real repository's historical totals.

The tests exercise weekly-to-daily conversion, pagination, missing repositories, basic growth calculations, and both export formats. Network responses are mocked, so the green suite tells us the transformation code behaves as expected against its fixtures. It does not prove that GitHub will preserve the endpoint shape or that a long anonymous run will finish within its quota. No test failed in our run, and the log gave us no setup caveat to explain away.

Anonymous runs get 60 GitHub requests per hour

GitHub Stars History gives anonymous runs 60 requests per hour, while GITHUB_TOKEN raises the documented allowance to 5,000. The quick start is ordinary Python: clone the repository, install its requirements, and pass an owner/repo value. Public data works without a key. When no token is present, the CLI checks the remaining allowance and recommends one if the reported total is below 100.

Each history page covers weekly buckets, and the code follows every next link until GitHub stops returning one. It watches the rate-limit headers on each response and sleeps when five or fewer requests remain. That is polite API behavior, though a scheduled process may sit idle until reset. Add a token for repeated comparisons or older repositories, then treat it like any other credential. Private repositories require that token to carry access.

Exports land in the working directory under names derived from the repository. CSV contains date,stars rows. JSON includes fetch time, a summary, and the history array. There is no output-path flag, chart renderer, or database sink in the current command interface. Shell redirection will not change where the export helpers write, so automation should move or rename the generated file after a successful run.

The repository is recent, tested, and still lightly proven

GitHub showed 276 stars, 0 open issues and pull requests, and a last push on September 18, 2026. Release v1.1.0 shipped that day, one day after v1.0.0. The dates show recent work, while the two-tag history and empty issue list provide little evidence about how the project handles outside bug reports over time. Our clone also had no CI workflow file and no Dockerfile.

For a 503-line utility, that missing infrastructure is manageable. Copy the test command into your own CI, pin the commit you reviewed, and decide where exports belong. The bigger mistake would be treating star counts as a complete repository-health score. This tool gives you a clean time series. You still need release activity, issue handling, contributor behavior, and the event that caused a spike before drawing a decision from it.

Alternatives

ProjectWhat it isPick it when
Star HistoryA web app and image API for comparing and embedding GitHub star charts.pick this instead when you want a visual chart, a shareable link, or a README image rather than a Python export job.
StarTrack-jsA browser-only React app for star charts, statistics, forecasts, and file downloads.pick this instead when interactive charts and browser-local token storage matter more than a small command-line workflow.

What people are saying

  1. [velocity-scout] Marcos66236/github-stars-history
  2. [velocity-scout] Marcos66236/github-star-history

Sources

  1. GitHub Stars History README
  2. GitHub Stars History v1.1.0 release
  3. GitHub Stars History source at tested commit
  4. GitHub announces privacy-safe star history API

More data reviews

Threat-Intelligence-Hackers-Forums · Trader-Archives · seriousdb · Awesome-Astra-Embodied-AI · awesome-fly · stampede · the whole board →