Skip to content

About

:octocat: GitHub star ranking for users, organizations and repositories

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Repository files navigation

git-star-ranking

GitHub star ranking for users, organizations and repositories

🌐 git-star-ranking.com

Contents

About

An application which crawls GitHub, and ranks the top users, organisations and repositories based upon star count.
Inspired by the original (now archived) gitstar-ranking by @k0kubun.


Leaderboard

Top Users Top Orgs Top Repos
@sindresorhus (1.1m ⭐) @microsoft (4m ⭐) build-your-own-x (562.1k ⭐)
@karpathy (506.1k ⭐) @google (2.1m ⭐) awesome (535.7k ⭐)
@donnemartin (478.1k ⭐) @apache (1.4m ⭐) public-apis (498.5k ⭐)
@nilbuild (476.8k ⭐) @openai (1m ⭐) freeCodeCamp (459.1k ⭐)
@morluto (458.2k ⭐) @facebookresearch (982.6k ⭐) rea (455k ⭐)
@jwasham (378.9k ⭐) @alibaba (941.3k ⭐) free-programming-books (401.5k ⭐)
@mattpocock (356.4k ⭐) @deepseek-ai (767.9k ⭐) openclaw (394.4k ⭐)
@vinta (341.4k ⭐) @github (762.6k ⭐) system-design-primer (377.7k ⭐)
@obra (324.6k ⭐) @huggingface (743.6k ⭐) developer-roadmap (371.9k ⭐)
@trimstray (307.3k ⭐) @anthropics (717.7k ⭐) coding-interview-university (364.3k ⭐)
@affaan-m (305.3k ⭐) @vuejs (633.4k ⭐) awesome-selfhosted (336.3k ⭐)
@996icu (277.2k ⭐) @meta (602.5k ⭐) awesome-python (334.4k ⭐)
@torvalds (267.8k ⭐) @Tencent (588.8k ⭐) skills (322.9k ⭐)
@trekhleb (258.2k ⭐) @codecrafters-io (565k ⭐) superpowers (316.6k ⭐)
@521xueweihan (238.8k ⭐) @NVIDIA (533.6k ⭐) ECC (301.9k ⭐)
@ruanyf (223.5k ⭐) @vercel (532.6k ⭐) project-based-learning (289.6k ⭐)
@jaywcjlove (221.7k ⭐) @freeCodeCamp (529.7k ⭐) deepseek-harness (279.9k ⭐)
@getify (216.5k ⭐) @react (515.1k ⭐) 996.ICU (277.2k ⭐)
@ruvnet (202.8k ⭐) @tensorflow (504.4k ⭐) hermes-agent (262.9k ⭐)
@jackfrued (202.7k ⭐) @public-apis (498.5k ⭐) the-book-of-secret-knowledge (258k ⭐)
@justjavac (201.5k ⭐) @dotnet (470.9k ⭐) linux (255.5k ⭐)
@f (197.3k ⭐) @TheAlgorithms (462.7k ⭐) react (252.5k ⭐)
@avelino (195.8k ⭐) @openclaw (447.7k ⭐) andrej-karpathy-skills (232.4k ⭐)
@rasbt (195.7k ⭐) @datawhalechina (421.4k ⭐) opencode (226.4k ⭐)
@2dust (193.7k ⭐) @HKUDS (409k ⭐) Python (226.1k ⭐)
@yangshun (193.5k ⭐) @EbookFoundation (404.7k ⭐) vue (212.5k ⭐)
@DietrichGebert (189.8k ⭐) @rust-lang (404.6k ⭐) computer-science (211k ⭐)
@CyC2018 (186.6k ⭐) @langchain-ai (397k ⭐) n8n (210.3k ⭐)
@bradtraversy (184.9k ⭐) @airbnb (390.1k ⭐) FreeDomain (208k ⭐)
@lucidrains (184.1k ⭐) @cloudflare (367.1k ⭐) yt-dlp (207.3k ⭐)
@Chalarangelo (181.4k ⭐) @symfony (356.7k ⭐) tensorflow (201.6k ⭐)
@addyosmani (180.9k ⭐) @facebookarchive (349.3k ⭐) firecrawl (201.2k ⭐)
@jlevy (176.5k ⭐) @hashicorp (339.1k ⭐) Microsoft-Activation-Scripts (198.7k ⭐)
@tw93 (175.5k ⭐) @awesome-selfhosted (337.6k ⭐) javascript-algorithms (196.7k ⭐)
@garrytan (174.6k ⭐) @bytedance (335.2k ⭐) vscode (195.3k ⭐)
@lllyasviel (173.4k ⭐) @google-research (323.4k ⭐) markitdown (195.1k ⭐)
@Snailclimb (173.4k ⭐) @anomalyco (308.1k ⭐) claw-code (194.8k ⭐)
@sharkdp (173.2k ⭐) @angular (307.2k ⭐) skills (193.6k ⭐)
@AUTOMATIC1111 (171.6k ⭐) @mozilla (307k ⭐) awesome-go (193.5k ⭐)
@msitarzewski (170.6k ⭐) @kubernetes (303.9k ⭐) ohmyzsh (190.6k ⭐)
@Asabeneh (161.8k ⭐) @firecrawl (298.5k ⭐) ponytail (189.7k ⭐)
@typicode (159.8k ⭐) @practical-tutorials (289.6k ⭐) HelloGitHub (188.4k ⭐)
@farion1231 (155.8k ⭐) @multica-ai (288.4k ⭐) AutoGPT (188k ⭐)
@junegunn (153.4k ⭐) @storytold (287.9k ⭐) Python-100-Days (187.8k ⭐)
@sebastianbergmann (152.5k ⭐) @NousResearch (280.7k ⭐) ollama (186.8k ⭐)
@harry0703 (151k ⭐) @fossasia (277.3k ⭐) CS-Notes (186.5k ⭐)
@kelseyhightower (146.5k ⭐) @vercel-labs (271.8k ⭐) You-Dont-Know-JS (184.9k ⭐)
@danielmiessler (146.3k ⭐) @PaddlePaddle (271.3k ⭐) flutter (181.3k ⭐)
@x1xhlol (145.6k ⭐) @VoltAgent (269.8k ⭐) prompts.chat (177k ⭐)
@jesseduffield (145.4k ⭐) @aws (265.3k ⭐) gitignore (176.3k ⭐)
@Shubhamsaboo (145.2k ⭐) @golang (255.3k ⭐) bootstrap (175k ⭐)
@ripienaar (144.9k ⭐) @ossu (253.9k ⭐) transformers (168.9k ⭐)
@rustdesk (142k ⭐) @NVlabs (253.1k ⭐) agency-agents (167.9k ⭐)
@tj (141.5k ⭐) @GoogleCloudPlatform (252.1k ⭐) stable-diffusion-webui (165.3k ⭐)
@krahets (141.2k ⭐) @nodejs (248.9k ⭐) the-art-of-command-line (162.7k ⭐)
@JakeWharton (139.4k ⭐) @JetBrains (247.8k ⭐) dify (161.1k ⭐)
@mrdoob (137.6k ⭐) @Netflix (242.1k ⭐) JavaGuide (159.6k ⭐)
@AhmadHassan-BTed (137.1k ⭐) @Azure (241.2k ⭐) open-webui (158.5k ⭐)
@labuladong (136.5k ⭐) @shadowsocks (240.7k ⭐) clash-verge-rev (158.1k ⭐)
@goldbergyoni (135.5k ⭐) @laravel (240.2k ⭐) langflow (156.6k ⭐)
@macrozheng (134.6k ⭐) @google-deepmind (240.1k ⭐) claude-code (155.4k ⭐)
@Leonxlnx (130.7k ⭐) @android (235.3k ⭐) scrcpy (154.7k ⭐)
@666ghj (129.8k ⭐) @n8n-io (233k ⭐) cc-switch (153.9k ⭐)
@rohitg00 (129.8k ⭐) @elastic (232.2k ⭐) spec-kit (149.6k ⭐)
@adrianhajdin (127.9k ⭐) @pytorch (231k ⭐) langchain (149.4k ⭐)
@JuliusBrussee (123.2k ⭐) @apple (229.2k ⭐) ui-ux-pro-max-skill (148.6k ⭐)
@Nutlope (123.1k ⭐) @pmndrs (229.2k ⭐) javascript (148k ⭐)
@mouredev (122.8k ⭐) @browser-use (228.3k ⭐) graphify (146.5k ⭐)
@alchaincyf (120.4k ⭐) @charmbracelet (225.1k ⭐) ComfyUI (146.5k ⭐)
@louislam (120.1k ⭐) @spring-projects (224.5k ⭐) system-prompts-and-models-o… (144.6k ⭐)
@PanJiaChen (118.5k ⭐) @redis (224.3k ⭐) awesome-llm-apps (144.5k ⭐)
@BurntSushi (116.9k ⭐) @flutter (222.4k ⭐) iptv (143.9k ⭐)
@thedotmack (116.8k ⭐) @twbs (221.9k ⭐) next.js (143.5k ⭐)
@pbakaus (115.5k ⭐) @twitter (217.7k ⭐) tech-interview-handbook (143.3k ⭐)
@wasabeef (114.8k ⭐) @FuelLabs (214.7k ⭐) MoneyPrinterTurbo (142.8k ⭐)
@elder-plinius (114.7k ⭐) @ggml-org (211.5k ⭐) free-for-dev (142.7k ⭐)
@punkpeye (113.6k ⭐) @DigitalPlatDev (208.7k ⭐) youtube-dl (141.5k ⭐)
@D4Vinci (111.5k ⭐) @yt-dlp (208.7k ⭐) gstack (141.3k ⭐)
@Panniantong (111.3k ⭐) @grafana (208.2k ⭐) PowerToys (140.9k ⭐)
@fatedier (111k ⭐) @spatie (207.4k ⭐) go (139.9k ⭐)
@debpalash (109.3k ⭐) @zai-org (207k ⭐) fucking-algorithm (136.1k ⭐)
@3b1b (109.1k ⭐) @QwenLM (206.1k ⭐) excalidraw (135.6k ⭐)
@lissy93 (108.5k ⭐) @massgravel (204.3k ⭐) codex (135k ⭐)
@tpope (108.3k ⭐) @ollama (202k ⭐) llama.cpp (134.4k ⭐)
@ashishps1 (107.2k ⭐) @ultraworkers (201.6k ⭐) hello-algo (132.3k ⭐)
@Anduin2017 (105.7k ⭐) @awslabs (201.4k ⭐) 30-seconds-of-code (129.5k ⭐)
@spf13 (105.5k ⭐) @square (198.2k ⭐) rustdesk (129.2k ⭐)
@keijiro (105.4k ⭐) @ant-design (195.2k ⭐) kubernetes (129k ⭐)
@thedaviddias (103.9k ⭐) @fastapi (193.7k ⭐) ui (128k ⭐)
@bregman-arie (103.5k ⭐) @Significant-Gravitas (193.5k ⭐) awesome-design-md (127.2k ⭐)
@florinpop17 (103.3k ⭐) @modelcontextprotocol (193.1k ⭐) react-native (126.9k ⭐)
@enaqx (103k ⭐) @astral-sh (191.6k ⭐) Awesome-Hacking (125.4k ⭐)
@tonsky (102.5k ⭐) @PacktPublishing (191.2k ⭐) electron (123.9k ⭐)
@nvbn (100.9k ⭐) @ohmyzsh (190.9k ⭐) node (123.6k ⭐)
@jamiebuilds (100.3k ⭐) @tailwindlabs (185.1k ⭐) generative-ai-for-beginners (123.4k ⭐)
@FiloSottile (99k ⭐) @electron (183.6k ⭐) orca (123.3k ⭐)
@hakimel (98.6k ⭐) @aws-samples (180k ⭐) TradingAgents (122.2k ⭐)
@ryanmcdermott (98.5k ⭐) @open-webui (176.4k ⭐) rust (121.8k ⭐)
@hacksider (98.1k ⭐) @supabase (175.5k ⭐) pi (121.6k ⭐)
@ashishpatel26 (97.6k ⭐) @doocs (175.1k ⭐) browser-use (120.8k ⭐)
View full user leaderboard → View full org leaderboard → View full repo leaderboard →

Badges

You can use the interactive badge builder to make your own embedable badge for your readme, for any user, org or repo. Or write the URL yourself:

![git rank](https://git-star-ranking.com/users/<login>/badge.svg)
![git rank](https://git-star-ranking.com/repositories/<owner>/<repo>/badge.svg)

Add any of these to the query:

Param Values Default
show rank, top, stars, or language for repos rank
style flat, flat-square, plastic, for-the-badge, social flat
label up to 40 characters depends on show
color, labelColor hex without the #, or a Shields colour name blue, and dark grey
icon star none

Usage

The following sections explain how this works, development setup, deployment instructions and configuration reference.

How it works

It's one Cloudflare Worker: a SvelteKit site, plus a cron, a queue consumer and a Durable Object, over D1. All data comes from the GitHub API.

Details
  • Discovery is a search sweep, about weekly. Search only ever returns 1,000 results, so the sweep splits stars:50..10000000 in half (geometrically, as stars follow a power law) until each slice is under 1,000, then splits single star counts by creation date, down to the second if it has to. Each slice is one queue message, ticked off in a slices table so a retried message can't count twice, and a sweep that goes quiet for an hour gets its missing slices sent round again. A full sweep of the ~850k repos with 50+ stars is around 3,500 messages, so well under 3% of the queue allowance a month.
  • Counting is batched GraphQL. Node ids are worked out from GitHub's numeric ids, so one nodes(ids:) query covers a whole batch for a point. GitHub's 10 second timeout bites long before the points do (it manages about 100 repos a second), so batches are packed to about 400 repos and halved if one times out.
  • Refreshes are tiered: 1,000+ stars daily, 100+ weekly, the rest monthly, plus anyone whose page gets visited when they're over a day old. A cron every ten minutes works through whoever's due for eight minutes.
  • A single Durable Object is the token pool. It mints the app's installation token, hands out calls in batches of ten so it's one request per batch rather than per call, and holds back for the primary limit, the per-minute limits (2,000 GraphQL and 900 REST points, 30 searches), retry-after, x-ratelimit-reset and 100 concurrent leases. Crawls leave 500 points an hour for sign-ins and visitors.
  • Rows are thin and keyed on GitHub's numeric ids, with no index on stars, since one full scan a snapshot is far cheaper than an index write on every star change. Repo rows are only written when something changed, and an owner gets one write per refresh for its schedule. A count that gets cut short (the pool says wait, or a page errors) isn't saved at all, so nobody's total drops for a month because of a blip.
  • Leaderboards and rank histograms are snapshots, rebuilt every six hours (hourly while the first sweep is still filling up). A rank is worked out from the histogram, never stored per row. A day of history is kept with each one.
  • Pages are rendered on the Worker and cached per data centre for ten minutes, then served stale while they refresh.
  • /admin shows this month's usage against each allowance, and /api/budget answers 503 once anything passes 70%, which is what the uptime check watches.

Deployment

The site works best on Cloudflare, so you'll need a Cloudflare account with a Workers Pro plan. You'll also need a GitHub App without any permissions, and with the callback URL set to https://<your domain>/auth/callback, installed on your own account. Then fork the repo, and run:

# 1. Setup
npm install
npx wrangler d1 create git-star-ranking
npx wrangler queues create git-star-ranking-crawl

# 2. Configure
# Pop the db ID into wrangler.jsonc, and set `APP_URL`, `ADMINS` and `routes`
vi wrangler.jsonc

# 3. Deploy
npx wrangler d1 migrations apply DB --remote
npx wrangler secret put GITHUB_PRIVATE_KEY
npm run deploy

Or you can build from source: Grab the source from the latest release (or clone it), then follow the steps above.

Configuration

Secrets, set with npx wrangler secret put <name> (or in .dev.vars locally):

Name What it is
GITHUB_APP_ID Your GitHub App's id
GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET The app's OAuth credentials, for sign-in
GITHUB_INSTALLATION_ID The id from installing the app on your account
GITHUB_PRIVATE_KEY The app's private key, as GitHub gave it or base64'd onto one line
SESSION_SECRET Any long random string, for signing the session cookie
SENTRY_DSN Optional, sends server errors to Sentry or Bugsink

Settings, in vars in wrangler.jsonc:

Name Default What it does
REPO_MIN_STARS 50 The smallest repo the sweep looks for and the tables keep
REFRESH_TIERS 1000:1,100:7,0:30 Stars to refresh interval in days
SWEEP_DAYS 7 How often the search sweep goes round again
OWNER_REPO_PAGES 10 Pages of 100 repos counted per account
STREAMS 2 GraphQL queries the cron runs side by side
ADMINS Comma-separated logins that can see /admin

Snapshots go in the R2 bucket bound as SNAPSHOTS, so make one first with npx wrangler r2 bucket create git-star-ranking-snapshots. If you drop the binding, they'll go into D1 instead.

For optional hit counting and error reporting, you can set the PUBLIC_PLAUSIBLE_SCRIPT and PUBLIC_SENTRY_DSN vars, which the client reads at build time. Both are empty unless you set them, so nothing phones home.

Development

You'll need Node 22.18 or newer. It's a SvelteKit app that runs on Wrangler locally, D1, queue and all.

git clone [email protected]:NotAFlightRisk/git-star-ranking.git
cd git-star-ranking
npm install
npx wrangler d1 migrations apply DB --local
npm run dev

Put the secrets in .dev.vars first, as the crawler talks to the real GitHub API. It's then on localhost:8787, and /__scheduled runs the cron by hand. The other scripts you'll want are npm run check (types), npm test and npm run format.


Credits

Kudos to @k0kubun for his original version, which he ran for years, before it was taken offline in November 2026.

Contributors

contributors badge



Licensed under MIT, © NotAFlightRisk 2026

About

:octocat: GitHub star ranking for users, organizations and repositories

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages