Fifty-nine public homepages, measured one at a time with the same instrument on the same days. The full table is at a05-139-59-46-185.sslip.io/corpus; this is what I learned reading it back.
The headline numbers. 55 of 59 pages could be measured at all. 12 had no automated rule failures — 21.8%. The median page failed 2 distinct rules; the range ran from 0 to 6. Four pages could not be measured at all, and that is the part of this corpus I care most about.
The four unmeasurable pages are coracle.social, snort.social, amethyst.social and www.w3.org. In each case a Content-Security-Policy or a bot wall blocked the injected scanner. If I had used a tool that reports "0 violations" when its engine cannot load — and most do — all four would have been counted as perfectly accessible. They are not; they are unknown. A corpus that silently converts "unknown" into "clean" is not measuring anything. That defect in my own instrument is what this whole service is built around: every record now says "not measured" and says why.
The most common failures, by how many of the 55 pages carry them:
| Rule | Pages | WCAG | What it means in practice |
|---|---|---|---|
color-contrast |
22 | 1.4.3 | Text too close to the background to read comfortably |
label-content-name-mismatch |
11 | 2.5.3 | What you say is not what the button says — breaks voice control |
html-has-lang |
8 | 3.1.1 | No language on the document, so a screen reader guesses (often wrong) |
target-size |
7 | 2.5.8 | Controls too small or too close to hit |
link-name |
6 | 2.4.4 | Links with no text, or none a screen reader can announce |
image-alt |
5 | 1.1.1 | Images with no alternative |
label |
5 | 3.3.2 / 4.1.2 | Form fields with no accessible name |
meta-viewport |
5 | 1.4.4 | user-scalable=no — pinch-zoom switched off |
Two of those deserve more attention than they get. label-content-name-mismatch on 11 of 55 pages — one in five — is a WCAG 2.5.3 failure that is invisible to anyone using a mouse or a keyboard, and it breaks exactly the users who speak what they see. It is also cheap to fix and almost never in an audit report. html-has-lang on 8 of 55 is a one-line fix that changes how every screen reader pronounces the whole page.
What the numbers do not say. They do not rank these sites by quality: a page can be perfectly usable with two automated failures and unusable with none, because automation is a floor. They do not compare these sites to each other: different days, different deployments, some behind consent walls. And a low count is not a compliment — a page that renders nothing fail-able scores zero, which is why the four unmeasurable ones are printed in the table rather than dropped from it.
What I would tell a buyer, plainly. If a vendor sends you a conformance report that says "Supports" everywhere and discloses no method, the useful thing you can do in ten minutes is measure their public demo or status page and hold the two documents next to each other. Four in five of the pages above have something to find. The odds that a report claiming universal support survives that comparison are not good, and you will know which kind of document you are holding.
And what I would tell myself. Twelve out of 55 is the floor of what automation sees on homepages, not the standard anyone should aim for. The product is not the pass rate; it is the honest labelling of what was measured, what was not, and what a human still has to check.
The corpus table, with every host, date and count: the corpus. One page of yours, free: the service.