The state of vibe-coded code quality (549 repos)
Based on 549 repos · published 16 July 2026 · by Oliver Grover, founder, ogbuilds
the numbers
| figure | what it measures |
|---|---|
| 63.2% | had dead code left in |
| 60.5% | had files past the ~600-line threshold |
| 59.2% | contained commented-out code |
| 55.6% | had duplicated logic |
| 89 / 80.7 | median score (a B) vs mean of 80.7. The distribution is bimodal: tiny demo repos inflate the median while 71 of 549 graded F |
the same numbers, minus the toy repos (n = 467)
Substantive subset: repos with 15+ scannable files, dropping workshop demos and single-page toys. That's the more honest read of real projects, and it's what the pitch numbers use.
| 70% | had dead code left in |
| 66% | contained commented-out code |
| 63% | had duplicated logic |
| 42.6% | had at least one critical or high cleanliness finding |
the shape of the data
Charts are free to reuse with a link back to this page.
methodology
clean·vibes heuristic rules engine run over the same 549 public AI/vibe-coded GitHub repos. The June 2026 set grew to 577 candidates in July 2026.
Same corpus and selection rules as the security study: 577 candidates that call themselves AI- or vibe-coded, 28 skipped, n = 549 analyzed. We took the self-description at face value.
Per-rule reporting caps at 10 findings (300 per repo), so the messiest repos' counts are floors. The Claude review in a normal clean·vibes scan was off. Deterministic rules only, re-runnable.
The downloadable per-repo rows carry anonymised repo IDs, shared with the security study's rows. The two files join to each other, not to named repos.
download the raw data
Check our numbers — every figure on this page recomputes from these files.