Accessibility
The most common WCAG failures
Six failure types cause 96% of detected WCAG errors on one million home pages: contrast, alt text, labels, empty links and buttons, and lang.
Key points
- 95.9% of home pages in the WebAIM Million 2026 sample had at least one detected WCAG 2 failure.
- Low contrast (83.9%), missing alt text (53.1%) and missing form labels (51%) are the three most common failures.
- Six categories account for 96% of detected errors, so fixing them changes more than any other work.
The six most common WCAG failures are low contrast, missing alternative text, form fields with no label, empty links, empty buttons and a missing document language. In the February 2026 WebAIM Million sample they account for 96% of detected errors, and 95.9% of home pages had at least one WCAG 2 failure.
Contrast is measured, not judged
Success criterion 1.4.3 asks for a ratio of 4.5:1 for normal text and 3:1 for large text; 83.9% of home pages miss it. The fix is not in the single component, it is in the theme tokens. Correct the background and foreground pair once and recompute contrast, instead of chasing individual cases. The measured palette of the catalogue is in palette and measured contrast.
Alt text, labels, accessible names
- Images (1.1.1): informative alt text describes what the image does; a decorative image carries
alt=""and is never announced. - Form fields (3.3.2): every input has a
<label for>or an accessible name; a placeholder is not a label and disappears once typing starts. - Icon buttons (4.1.2): the name comes from visible text or
aria-label. An SVG inside the button stays decorative witharia-hidden="true".
Empty links and empty buttons
46.3% of pages have at least one link with no accessible name and 30.6% at least one empty button. The usual case is a social icon holding only an SVG: the name is missing, the control stays reachable by keyboard and the screen reader announces “link”. Do not add aria-label when visible text already exists: it creates a mismatch between what people see and what they hear.
The document language
13.5% of pages declare no language. You need one attribute on the root element, <html lang="it">, plus a different lang on blocks written in another language. Without it the screen reader applies the wrong phonetics and the page becomes unintelligible even when the text is right.
How to find them quickly
Pa11y is open source under the LGPL-3.0 licence and applies WCAG rules to the rendered page. The command below checks a whole sitemap and prints one line per URL.
npx --yes pa11y-ci --sitemap https://example.com/sitemap.xml --standard WCAG2AA
Then run the check no tool replaces: tab through the page, press Enter and Space on the first control, and listen to the announcement with VoiceOver or NVDA. A contrast failure is visible to the tool, but a name that describes the wrong thing is only heard by the person listening.
The EneUI catalogue
EneUI indexes the accessibility category and the form components. A verified record is Origin UI's dialog, with an MIT licence declared upstream: it depends on @radix-ui/react-dialog, so the name, the focus handling and the Escape close come from the primitive. Checked on 1 November 2026 against 111,985 components.
The limitation
An automated audit measures what can be decided without context. It cannot tell useful alt text from useless alt text, it cannot see whether focus returns to the right place after a modal closes, and it cannot hear a wrong announcement. The count of 56.1 errors per page is therefore a lower bound: no tool proves conformance.
Where to continue
The full process is in how to run an accessibility audit; the operational checklist for components is in accessible React components. To decide which attributes actually help, read the comparison of headless primitives in Radix, Base UI and React Aria.
Frequently asked questions
Which WCAG failure is the most common?
Low contrast text, found on 83.9% of home pages in the 2026 sample. Missing alt text follows at 53.1% and missing form labels at 51%.
Does an automated test find every failure?
No. WAVE detects only failures that can be verified without human judgement. Alt text quality, focus order and correct announcements still need a manual test.
Are 95.9% of pages non-conformant?
That figure counts automatically detectable failures, so real non-conformance is at least that. Pages with no detected failure were 4.1% at most.
How many failures does an average page have?
56.1 detected failures per home page in February 2026, up 10.1% from 51 in 2025. The average page carried 1,437 elements.
Where should I start fixing?
With contrast, because it is the largest category and it lives in theme tokens. Then alt text and labels, which are one attribute per element.