GitHub star history, beautifully charted.
Exact per-day data, 20 themes, one shareable link.
Open RepoStars · Try a comparison · Embed in your README
Most star-history tools stopped working in July 2026 when GitHub restricted access to individual stargazer timestamps. RepoStars uses GitHub's new privacy-safe star history endpoint, which returns exact per-day aggregate counts for every public repository with no token required. No scraping, no estimates, no stargazer identities.
- Exact history. Per-day star counts straight from GitHub, for any public repo, at any age. Repos under about three years old render daily; older ones render exact weekly totals.
- Compare up to five repos on one time axis, from the earliest creation date, so a young repo starts flat at zero and the comparison is honest.
- 20 themes. Dark, Light, Neon, Minimal, 8-Bit, Sunset, Ocean, Candy, Forest, Terminal, Lava, Arctic, Copper, Synthwave, Sakura, Noir, Espresso, Dune, Grape, and Aurora. Terminal is monospace, 8-Bit is a real pixel font with stepped lines.
- Shareable links. Repos and theme live in the URL. Paste a link into X, Slack, or Discord and the preview shows the actual chart, the actual star count, and the chosen theme.
- PNG export. Rendered on the server at 2400×1260 with the real fonts, so the file looks the same from a phone or a desktop. Phones get the share sheet with "Save Image".
- README embed. One markdown snippet gives you a live, themed sparkline of the last 90 days.
- Insights on demand. Growth over the last 90 days and star share between compared repos, one click away and kept out of exports.
- Honest fallback. If GitHub's history is ever unavailable, the chart is drawn as a clearly labelled estimate. The current star total is always exact.
[](https://repostars.dev/?repos=OWNER/REPO&theme=terminal)The image is the last 90 days at 700×420, cached for an hour. Use any theme id from the list above. The share card at /api/og?repos=OWNER/REPO&theme=dark works the same way for a full-history image at 1200×630.
| Endpoint | Returns |
|---|---|
/api/og?repos=a/b,c/d&theme=dark |
1200×630 share card with the real chart. Up to five repos. |
/api/export?repos=a/b&theme=dark |
Same card at 2400×1260 as a PNG download. |
/api/embed?repo=a/b&theme=dark |
700×420 SVG sparkline of the last 90 days. |
/api/stars/OWNER/REPO |
JSON: repo info plus the daily or weekly history the charts use. |
All image responses are cached at the CDN for a day, so link crawlers and READMEs cost GitHub nothing after the first render.
pnpm install
pnpm devThen open http://localhost:3000.
Set GITHUB_TOKEN in .env.local. Star history needs no special access, but a full history costs one request per 30 weeks of repository age, and the unauthenticated limit of 60 requests per hour covers only a few repos. Any token with public read access raises that to 5,000 per hour.
pnpm test # vitest
pnpm check # biome via ultracite
pnpm og:preview # render every theme and scenario to .og-preview/ for reviewSet OG_EXPORT=1 before pnpm og:preview to render the 2x download variant instead.
- Next.js 16 App Router with cache components
- React 19, TypeScript
- Tailwind CSS v4 and shadcn/ui
- visx and motion for the charts
- Satori via
next/ogfor share cards and exports - nuqs for URL state
- GitHub REST API: repository metadata and the star history endpoint
Issues and pull requests are welcome. Read CONTRIBUTING.md first, and run pnpm check and pnpm test before opening a PR. Notable changes are listed in CHANGELOG.md.