Fathohm

The dark index · 2026-08-12

How much of the most-starred code on GitHub has no human on its recent record

49.5%

of the code in the 100 most-starred repositories on GitHub has nobody on its recent record: no human wrote or prompted it in the last 180 days. Weighted by bytes, so the big repositories count for more than the small ones.

Measured on 2026-08-12 with fathohm 1.5.1, the same command anybody can run. Every row below is one repository, and you can reproduce any of them yourself in about the time it takes to clone it — or point it at your own repository.

This is not comprehension debt

Comprehension debt — code no human has recently written, reviewed, or explained, measured from the record rather than from a survey — is the thing Fathohm exists to measure, and the term is Addy Osmani’s, not ours. This page does not measure it.

What this measures is narrower and it is exact: the share of a repository’s code that no human has written or prompted inside the window. Git records every commit’s author and date, so there is no estimate in it — but git keeps no review record at all. A file can be dark here and still have been read closely by three people last week: reviews leave their trace on GitHub, not in the repository, so this reading is blind to them by construction.

The two do not move together, and we can show that rather than assert it: in the public gallery, llm.c reads 100% dark and 21% debt, while express reads 71% dark and 13% debt. Do not read one as a proxy for the other. Every comprehension-debt figure we publish comes from a gallery snapshot, never from this index.

How the 100 were chosen

The index is the 100 most-starred, non-archived repositories on GitHub with a push in the 180-day measurement window — nothing else selects. What a repository contains determines its weight in the headline, never its membership.

The window in that rule is the same 180 days the dark share is measured over — reused rather than introduced, so the methodology contains exactly one number and there is no second parameter anyone can accuse us of tuning. Note which way that filter cuts: a repository with no pushes in the window is 100% dark by arithmetic before any measurement runs, so excluding those can only push the headline down.

The rule we rejected, and why

An earlier draft admitted a repository only if code outweighed prose. The top of GitHub by stars is largely awesome-lists and learning resources, and without some test the index would have reported build-your-own-x, the most-starred repository on GitHub, as 100% dark on the strength of 64 bytes of stray tooling.

That test caught every link-list correctly — and then it caught FastAPI, which documents itself in roughly thirty languages. Switching the unit did not rescue it: by file count FastAPI reads 41% instead of 25%, the same side of the line, not one verdict changed. And there is no gap between freeCodeCamp at 16% and FastAPI at 25% to put a line in.

That is a predicate reporting its own root failure rather than a badly chosen threshold. Any test weighing prose against code punishes documentation, and an index published by a company that sells comprehension cannot ship a rule that penalises a project for investing in being understood.

So there is no such rule. The fix for “there is nowhere to draw the line” was not a better line but no line: membership is settled entirely by the published query, and what a repository contains only ever scales its weight. A link-list is a member whose influence rounds to nothing, and nobody had to decide to exclude it.

Reproduce any row

Clone the repository and read it. The clock is pinned so you get what we got, and the blobless filter keeps the whole commit history while skipping file contents — which Fathohm never reads.

git clone --filter=blob:none https://github.com/<owner>/<repo>.git
npx fathohm read <repo> --now 2026-08-12T00:00:00Z

If your number differs from ours, the disagreement is reproducible and we would rather hear it than not. The scoring methodology is public down to the constants.

Read your own repository

The same command with no argument and no pinned clock. Run it inside any git repository and it reads that one.

npx fathohm read

It reads git metadata only — messages, authors, dates, paths and blob sizes. Not the contents of your files. It writes nothing, anywhere, and there is no account: npx fetches the package, runs it, and you are done. What you get back is the reading above, for your code — who has left the building, not who understands what.

If you would rather have it on your PATH than fetch it each time, it is a normal npm package.

npm install -g fathohm
fathohm read

What this cannot tell you

It cannot see reviews. Git has none, so this reading is blind to the single most common way a person comes to understand code. A repository that reviews everything carefully looks the same here as one that reviews nothing.

The rows are not comparable to the gallery’s dark figures. On hosted readings the record carries review events, and a human review with a comment holds a file’s recency above zero with no commit at all — so hosted-derived dark is the narrower measure. Measured: this index reads hono at 38% dark where the hosted figure for the same repository is 18.2%. Both are correct; they answer slightly different questions, and they must never share a column.

A repository is not a team. Dark code is not abandoned code and it is not bad code. Plenty of it is stable, finished, and exactly where it should be. What the number says is narrow and worth saying anyway: for this share of the code, nobody on the recent record has touched it — and if a question about it arrives tomorrow, the record does not name anyone to ask.

Every row

Ordered by weight — how much of the index’s bytes each repository carries — because that is the order in which a row moves the headline.

RepositoryDarkCodeWeight
torvalds/linux60%1.5 GB22.9%
nodejs/node67%626 MB9.5%
tensorflow/tensorflow43%423 MB6.4%
mrdoob/three.js89%380 MB5.8%
openclaw/openclaw<1%352 MB5.4%
godotengine/godot34%311 MB4.7%
microsoft/TypeScript97%285 MB4.3%
kubernetes/kubernetes39%247 MB3.8%
microsoft/vscode43%204 MB3.1%
rust-lang/rust35%200 MB3.0%
n8n-io/n8n25%156 MB2.4%
ggml-org/llama.cpp48%155 MB2.4%
microsoft/generative-ai-for-beginners>99%153 MB2.3%
golang/go56%140 MB2.1%
flutter/flutter40%131 MB2.0%
vercel/next.js22%109 MB1.6%
langgenius/dify6%101 MB1.5%
NousResearch/hermes-agent0%84 MB1.3%
microsoft/PowerToys24%81 MB1.2%
huggingface/transformers16%75 MB1.1%
langflow-ai/langflow28%74 MB1.1%
supabase/supabase27%71 MB1.1%
denoland/deno28%66 MB1.0%
react/react-native45%59 MB0.9%
jackfrued/Python-100-Days100%48 MB0.7%
garrytan/gstack0%47 MB0.7%
Comfy-Org/ComfyUI46%42 MB0.6%
anomalyco/opencode11%42 MB0.6%
ollama/ollama70%31 MB0.5%
Significant-Gravitas/AutoGPT17%31 MB0.5%
firecrawl/firecrawl73%27 MB0.4%
react/react38%25 MB0.4%
f/prompts.chat66%24 MB0.4%
immich-app/immich12%24 MB0.4%
shadcn-ui/ui22%21 MB0.3%
open-webui/open-webui2%20 MB0.3%
langchain-ai/langchain34%16 MB0.2%
electron/electron19%16 MB0.2%
krahets/hello-algo54%14 MB0.2%
farion1231/cc-switch12%12 MB0.2%
excalidraw/excalidraw49%11 MB0.2%
rustdesk/rustdesk20%11 MB0.2%
yt-dlp/yt-dlp56%10 MB0.2%
freeCodeCamp/freeCodeCamp19%10 MB0.2%
affaan-m/ECC<1%9 MB0.1%
TheAlgorithms/Python98%8 MB0.1%
openai/whisper>99%8 MB0.1%
github/spec-kit<1%7 MB0.1%
Shubhamsaboo/awesome-llm-apps60%7 MB0.1%
ytdl-org/youtube-dl100%6 MB0.1%
nextlevelbuilder/ui-ux-pro-max-skill2%6 MB0.1%
tauri-apps/tauri41%6 MB0.1%
ultraworkers/claw-code0%6 MB0.1%
clash-verge-rev/clash-verge-rev10%6 MB0.1%
yangshun/tech-interview-handbook16%5 MB0.1%
browser-use/browser-use40%4 MB0.1%
2dust/v2rayN12%4 MB0.1%
anthropics/skills97%4 MB0.1%
twbs/bootstrap85%4 MB0.1%
ohmyzsh/ohmyzsh87%3 MB0.0%
iptv-org/iptv21%3 MB0.0%
microsoft/markitdown66%3 MB0.0%
AUTOMATIC1111/stable-diffusion-webui100%2 MB0.0%
x1xhlol/system-prompts-and-models-of-ai-tools85%2 MB0.0%
fatedier/frp13%2 MB0.0%
massgravel/Microsoft-Activation-Scripts2%2 MB0.0%
axios/axios<1%2 MB0.0%
Genymobile/scrcpy41%1 MB0.0%
anthropics/claude-code87%767 KB0.0%
trekhleb/javascript-algorithms87%723 KB0.0%
Chalarangelo/30-seconds-of-code>99%663 KB0.0%
obra/superpowers5%398 KB0.0%
jaywcjlove/awesome-mac4%283 KB0.0%
Snailclimb/JavaGuide37%275 KB0.0%
donnemartin/system-design-primer100%267 KB0.0%
d3/d3100%223 KB0.0%
vinta/awesome-python<1%204 KB0.0%
msitarzewski/agency-agents<1%179 KB0.0%
github/gitignore89%177 KB0.0%
practical-tutorials/project-based-learning0%174 KB0.0%
airbnb/javascript91%141 KB0.0%
avelino/awesome-go27%134 KB0.0%
EbookFoundation/free-programming-books95%76 KB0.0%
public-apis/public-apis100%46 KB0.0%
nilbuild/developer-roadmap25%38 KB0.0%
justjavac/free-programming-books-zh_CN100%36 KB0.0%
DigitalPlatDev/FreeDomain100%34 KB0.0%
mattpocock/skills0%26 KB0.0%
awesome-selfhosted/awesome-selfhosted100%21 KB0.0%
getify/You-Dont-Know-JS100%19 KB0.0%
521xueweihan/HelloGitHub95%18 KB0.0%
sindresorhus/awesome92%7 KB0.0%
Hack-with-Github/Awesome-Hacking95%7 KB0.0%
ossu/computer-science55%4 KB0.0%
multica-ai/andrej-karpathy-skills30%4 KB0.0%
ripienaar/free-for-dev>99%3 KB0.0%
papers-we-love/papers-we-love76%3 KB0.0%
VoltAgent/awesome-design-md0%2 KB0.0%
labuladong/fucking-algorithm100%1 KB0.0%
codecrafters-io/build-your-own-x100%1 KB0.0%