GitHub stars

A star is a bookmark, not a vote

On GitHub, starring a project is the rough equivalent of bookmarking it: a small public signal that someone found it worth remembering. It is the only feedback most open source gets, so it ends up carrying more weight than it can really bear — in README badges, in funding decisions, in whether a maintainer feels like continuing.

I write DuckDB extensions, and across 75 repositories they've collected 1,769 stars since 2014. This page is an attempt to ask whether that number still means anything, by looking at the one thing a running total can never show: the rate.

Cumulative counts are flattering by construction — they only go up, so they always look like success. Arrivals per month can fall while the total climbs, and here they are falling.

Report compiled July 23, 2026.

Last 7 days
8
+14% vs prior 7 days
Last 30 days
29
-44% vs prior 30 days
Last 90 days
125
-17% vs prior 90 days
Last 12 months
650
-34% vs prior 12 months

GitHub stars per month

Bars are new stars arriving each month. The grey line is the running total, drawn on its own scale.

Watch them disagree. The line rises smoothly the whole way across, which is the version of this story that gets put in a slide deck. The bars peak and then decline. Both are true; only one is informative.

0 80 159 2021-12: 1 stars2022-08: 1 stars2022-11: 2 stars2023-01: 1 stars2023-03: 1 stars2023-04: 1 stars2023-05: 1 stars2024-02: 2 stars2024-03: 1 stars2024-05: 14 stars2024-06: 18 stars2024-07: 63 stars2024-08: 17 stars2024-09: 33 stars2024-10: 159 stars2024-11: 103 stars2024-12: 73 stars2025-01: 100 stars2025-02: 107 stars2025-03: 107 stars2025-04: 49 stars2025-05: 74 stars2025-06: 90 stars2025-07: 80 stars2025-08: 76 stars2025-09: 56 stars2025-10: 68 stars2025-11: 64 stars2025-12: 55 stars2026-01: 52 stars2026-02: 59 stars2026-03: 36 stars2026-04: 54 stars2026-05: 52 stars2026-06: 41 stars2026-07: 23 stars 202320252026

What a new project earns in its first 90 days

The previous chart has an innocent explanation: a portfolio that stops growing stops attracting attention. This one removes that excuse. For every repository, count the stars it earned in its first 90 days, then group by when it launched — each bar is the median for that half-year.

It controls for portfolio size, and asks the question that matters to anyone deciding what to build next: does releasing a new thing still reach anybody? A falling line means the constraint has moved from making things to being found.

One family of repositories is excluded — I published a protocol as a hundred-odd separate repositories over a couple of months, and counting each as an independent launch would drop every median to zero for bookkeeping reasons rather than reception. The count under each bar shows how many launches it rests on; the recent half-years are thin, and the most recent will shift as those projects age past 90 days.

2014-H1: median 0, mean 0.0, n=1 0 2014-H1 n=1 2017-H1: median 0, mean 0.0, n=1 0 2017-H1 n=1 2019-H2: median 0, mean 0.0, n=1 0 2019-H2 n=1 2020-H1: median 1.5, mean 1.5, n=2 1.5 2020-H1 n=2 2020-H2: median 1, mean 1.1, n=12 1 2020-H2 n=12 2024-H1: median 17, mean 18.4, n=5 17 2024-H1 n=5 2024-H2: median 11.5, mean 20.4, n=18 11.5 2024-H2 n=18 2025-H1: median 6.5, mean 11.8, n=6 6.5 2025-H1 n=6 2025-H2: median 5, mean 5.3, n=15 5 2025-H2 n=15 2026-H1: median 2, mean 6.2, n=5 2 2026-H1 n=5

Which projects are still moving

Each project's last 90 days set against the 90 before that. Together the charts above describe the portfolio; this one shows that the average hides real divergence — some projects are genuinely picking up while others have gone quiet, and the aggregate rate is the sum of both.

Repository Total 90d Prior 90d Trend
quackscale 22 22 0 accelerating
airport 345 14 17 steady
httpserver 284 8 13 cooling
radio 43 7 1 accelerating
stochastic 26 7 4 accelerating
lindel 66 5 3 accelerating
adbc_scanner 18 5 5 steady
shellfs 95 3 1 accelerating
clickhouse-sql 91 3 2 accelerating
httpclient 80 3 0 accelerating
cronjob 51 3 3 steady
datasketches 47 3 5 cooling
geosilo 25 3 22 cooling
rapidfuzz 18 3 5 cooling
quickjs 14 3 2 accelerating
marisa 14 3 5 cooling
vgi-rpc-python 12 3 9 cooling
openprompt 60 2 5 cooling
tributary 57 2 3 cooling
crypto 29 2 1 accelerating
textplot 25 2 8 cooling
python-flight-server 17 2 3 cooling
bitfilters 8 2 1 accelerating
vgi-quant 2 2 0 accelerating
fuzzycomplete 28 1 2 cooling
evalexpr_rhai 26 1 1 steady
clickhouse-native 20 1 2 cooling
pcap 13 1 0 accelerating
redis 13 1 3 cooling
tera 9 1 1 steady
jsonata 6 1 3 cooling
json_schema 3 1 0 accelerating
cupola 1 1 0 accelerating
vgi-units 1 1 0 accelerating
vgi-fixedformat 1 1 0 accelerating
vgi-xgboost 1 1 0 accelerating
vgi-crontimes 1 1 0 accelerating
pyroscope 21 0 1 dormant
libh3 19 0 1 dormant
a5 12 0 2 dormant
hashfuncs 12 0 2 dormant
copilot-extension-duckdb 10 0 1 dormant
inflector 8 0 3 dormant
tsid 6 0 1 dormant
python-airport-test-server 5 0 1 dormant
lindel_video 3 0 3 dormant
vgi-rpc-go 2 0 2 dormant
fair-weather 2 0 2 dormant
vgi-rpc-typescript 1 0 1 dormant
query-farm-telemetry-client 1 0 1 dormant

How this is measured

GitHub records when each star was given, so this is a reconstruction of every individual star rather than a sample or an estimate. Those timestamps are reduced to per-repository daily counts when the page is built — 1,768 of 1,769 reported stars, last rebuilt July 23, 2026. The top two repositories hold 36% of all stars.

Two limits worth stating. Stars that were later removed are invisible to this method — the API returns only current stargazers, which accounts for the small gap between the reconstructed and reported totals. And GitHub exposes no link between a star and where the visitor came from, so nothing here attributes a star to a referrer; anything that claims to is guessing.