Principal Database Engineer. I measure public machine-learning infrastructure — the registries, model hubs and demo platforms everyone builds on — and publish the numbers with the code that produced them.
Most of what gets quoted about these platforms has never been counted. "Three million models on Hugging Face" is a real number that describes very little once you look at it. So I look at it.
Every public Hugging Face Space. A complete census of 1,458,692 Spaces, not a sample. 38.57% of the non-static ones are in a permanent error state, against 2.85% running. Breakage rises monotonically with age, and it holds inside every SDK, so it is not a composition effect.
Unmodified copies among them. 104,791 Spaces are byte-identical copies of another Space, grouped into 25,183 source histories. They are found from an ordering that cannot occur naturally — a copy carries commit dates predating its own creation — and confirmed against HEAD commit hashes. The largest single family is 9,490 identical copies of one free-course assignment.
Three million models. 64.04% declare no licence. That figure needs its weighting stated: only 8.68% of downloads go to unlicensed models, because the gap sits in the unused tail. Among the 100 most-downloaded models, 8 are unlicensed. The honest version is 253 million downloads in 30 days to models whose listing grants no rights, and 29.9% of the top 100,000.
The Model Context Protocol registry. 25,125 distinct servers from 15,468 publishers. Read as a catalogue it looks 74.5% duplicated; read correctly, as the version log it actually is, 3.6%. The unit of analysis moved that headline by 20.7×.
Every headline number gets an independent check before it is published, and the check is designed to kill it. The clone detector was validated against commit hashes, 60 of 60 in-family versus 12 of 12 distinct for controls. The licence finding was weighted by downloads specifically because that could have refuted it, and it largely did.
When a number turns out to be wrong, the correction goes out publicly with the reasoning. An unreachable-servers count of 387 became 189 after the registry's own documentation turned out to endorse the pattern I was counting as broken. A remote-endpoint probe overcounted roughly twofold because it used GET where the protocol expects POST. Both corrections are in the repository history and in the threads where the original claims were made.
Nulls get published too. Deduplicating 104,791 copies moved the broken-Spaces figure from 38.57% to 38.90% — the objection was reasonable, the test came back boring, and that is the useful part.
| hf-spaces-census | all 1,458,692 public Spaces |
| hf-spaces-clones | 104,791 copies, resolved to source histories |
| mcp-registry-census | the MCP registry in full |
Code: dataset-integrity-audit — retrieval, near-duplicate detection, clone detection, and the analysis behind each figure above. Pure standard library apart from the fetchers.
Hugging Face: @Ashsinha1
