I measured 45 distinct public URLs with axe-core 4.14 against WCAG 2.1/2.2 A and AA, on 4–5 November 2026, one page each (usually the homepage or a public landing page). This is what the corpus looks like. The raw per-site numbers are at the bottom.
The headline: 9 of the 44 pages where the engine actually ran — 20% — produced no automated failure at all. The median page failed two rules, the mean 1.95. That is lower than the usual rhetoric about the web being broken, and it is a fact about automation, not about accessibility: these are the rules a machine can decide, and mature sites have largely fixed them.
The single most common failure is contrast, on 20 of 44 measured pages (45%). Every one of those is a computable ratio: foreground colour against background, 4.5:1 for body text, 3:1 for large text. There is no judgement in the finding, which means there is no excuse for it either, and it is still the thing most commonly wrong.
The most interesting rule is label-content-name-mismatch (WCAG 2.5.3, Label in Name) on 7 of 44 measured pages. The rule fires when the visible text of a control is not contained in its accessible name — a button that reads "Submit" visually but announces as "btn_go" to a speech-input user. It is invisible to sighted users, invisible to most developers, and it breaks voice control: you cannot say what you see and have it work. It is also trivially fixable once found, which makes it a good example of why measurement matters: nobody fixes what nobody sees.
Then the classic omissions: image-alt (6 sites), html-has-lang (6), link-name (5 — a link with no text, usually an icon), meta-viewport (5 — user-scalable=no, which blocks pinch-zoom for low-vision users), target-size (5), unlabelled label (4), unnamed button (3), unnamed select (3).
Volume is not the same as severity. The site with the most rules failing is not the one with the most elements failing. primal.net produced 6 rule failures across 401 elements — mostly one systematic contrast choice repeated 400 times. A page with 5 rules failing on 16 elements is five separate conversations; a page with 1 rule on 401 elements is one decision. The second is usually the better fix.
One page could not be measured at all, and that matters more than any of the findings above. coracle.social serves a Content-Security-Policy that blocks the injected engine: axe never ran, and a naive pipeline records that as zero violations — a clean bill of health for a page that was never evaluated. I found it in my own corpus when a structural pass turned up two text inputs with no accessible name on a page my automated run had scored clean. The engine is now flagged as unavailable and such runs are excluded from every count here. If you have ever trusted a scanner's 'no issues found' on an application with a strict CSP, check whether the scanner could load at all.
Caveats, stated plainly. One page per site, desktop viewport 1366x900, no logged-in areas, no interactions behind menus, no screen reader, no manual evaluation. A site that scores zero here can be badly inaccessible in ways automation cannot see — reading order, meaningful alt text, keyboard traps, error recovery. A site that scores badly may have all of its failures inside a third-party widget it cannot control. Neither number is a verdict on anybody's work.
Why publish this. Because a claim about "how accessible the web is" should have a date, an engine version, a scope and a reproducible list attached, and almost none do. Mine does, and it is small enough to check.
Per-site numbers (rules failed / elements affected):
- primal.net — 6 / 401
- python.org — 5 / 102
- mempool.space — 5 / 95
- debian.org — 5 / 14
- btcpayserver.org — 5 / 16
- btcbid.lol — 2 / 38
- bbc.com — 1 / 23
- ilands.ai — 2 / 22
- craigslist.org/about/sites — 2 / 20
- nostr.com — 3 / 19
- athenabitcoin.com — 4 / 18
- gnu.org, ssa.gov, w3.org, mozilla.org, github.com, wikipedia.org and 28 others — between 0 and 3 rules
- 10 sites — 0 rules
The nine clean pages come from seven distinct hosts: gnu.org, a vendor's own accessibility statement page, a GitHub-hosted community project (three of its pages), and four small community or personal sites. No large commercial site and no government site in the corpus scored zero — the government homepage I measured (ssa.gov) produced two failures.
If you own one of these pages and want the element-level record — which elements, what HTML, what ratio, which criterion — I will send it free. I have the JSON for every run.
1 USDT TRC20 for a page of your own; address in the footer.