Guides: the 55 accessibility failures we look for, and how to fix them
Every barrier explained in plain language: who it shuts out, what it costs, and how to fix it, with the code before and after.
Buttons with no name
Critical · WCAG 4.1.2Some buttons have no visible text and no accessible name.
Form fields with no label
Critical · WCAG 1.3.1Some form fields have no accessible name: no <label>, no aria-label, no aria-labelledby.
Image button with no alternative text
Critical · WCAG 1.1.1There is an <input type="image"> with no alt.
Images with no alternative text
Critical · WCAG 1.1.1Some images have no alt attribute.
Links with no name
Critical · WCAG 2.4.4Some links have no visible text and no accessible name.
Alternative text that carries no information
Serious · WCAG 1.1.1Some images have alt text that is a file name, a code, or a generic word like "image" or "photo".
ARIA reference to an id that does not exist
Serious · WCAG 4.1.2The attribute {attr} points at the ids {ids}, which are not on the page.
Clickable element unreachable by keyboard
Serious · WCAG 2.1.1There is a <{tag}> with a click handler but no role and no place in the tab order.
Content hidden from screen readers but reachable by keyboard
Serious · WCAG 4.1.2An element with aria-hidden="true" contains elements that can receive focus.
Data table with no header cells
Serious · WCAG 1.3.1There is a table with data but no <th> cells.
Element marked decorative but actually interactive
Serious · WCAG 4.1.2An element with role="presentation" or role="none" can receive focus or has a name.
Element with an interactive role but no name
Serious · WCAG 4.1.2An element has role="{role}" and no accessible name.
Embedded frame with no title
Serious · WCAG 4.1.2There is an <iframe> with no title attribute.
Image map area with no name
Serious · WCAG 1.1.1There is an <area> inside an image map with no alternative text.
Insufficient colour contrast
Serious · WCAG 1.4.3There is {fontSize} text with a contrast ratio of {ratio} against its background, where the standard requires {required}.
Links with no destination, driven by JavaScript
Serious · WCAG 2.1.1There are <a> elements with no href that still respond to clicks.
Missing document language
Serious · WCAG 3.1.1The <html> element declares no valid language.
Missing or empty page title
Serious · WCAG 2.4.2The page has no <title>, or it is too short to identify it.
Moving content that cannot be stopped
Serious · WCAG 2.2.2The page uses <marquee> or <blink>.
We found no link to an accessibility statement on this page.
Sound that plays by itself
Serious · WCAG 1.4.2There is a <{tag}> with autoplay and no mute.
The focus indicator is switched off
Serious · WCAG 2.4.7CSS removes the focus outline ({selector}) without putting anything visible in its place.
The page blocks zooming
Serious · WCAG 1.4.4The viewport tag blocks zoom ({value}).
The page has no headings
Serious · WCAG 1.3.1There is substantial content but no headings at all.
The placeholder is doing the label’s job
Serious · WCAG 3.3.2Some fields get their only accessible name from the placeholder attribute.
Timed automatic redirect
Serious · WCAG 2.2.1The page redirects itself after a delay ({content}).
Video with no captions
Serious · WCAG 1.2.2There is a <video> with no captions track.
This page loads an accessibility overlay from {vendor}.
Audio with no transcript we could locate
Moderate · WCAG 1.2.1There is an <audio> element on the page. We cannot check automatically whether a transcript exists.
Embedded content with no name or fallback
Moderate · WCAG 1.1.1There is an <object> or <embed> with no accessible name and no fallback content inside.
Empty headings
Moderate · WCAG 1.3.1Some headings contain no text.
Heading levels skipped
Moderate · WCAG 1.3.1The page jumps from one heading level to another, skipping the ones in between (h{from} to h{to}).
Links with generic text
Moderate · WCAG 2.4.4Some links read "read more", "click here", "learn more" or similar.
Meaningful SVG icon with no name
Moderate · WCAG 1.1.1There is an SVG marked as an image (role="img") or otherwise meant to have a name, but with no accessible name.
Missing main content region
Moderate · WCAG 1.3.1The page has no <main>, or has more than one.
Missing main heading, or more than one
Moderate · WCAG 1.3.1The page has no h1, or has several.
Missing skip-to-content link
Moderate · WCAG 2.4.1The page has extensive navigation but no link to bypass it.
Non-existent ARIA attribute
Moderate · WCAG 4.1.2An element has the attribute {attr}, which is not part of the specification.
Non-existent ARIA role
Moderate · WCAG 4.1.2An element has role="{role}", which is not a valid role.
Option group with no group label
Moderate · WCAG 1.3.1Related checkboxes or radio buttons are not wrapped in a <fieldset> with a <legend>.
Personal data fields with no autocomplete
Moderate · WCAG 1.3.5Some fields asking for common personal data (email, phone, address) have no autocomplete attribute.
Positive tabindex value
Moderate · WCAG 2.4.3Some elements use tabindex="{value}".
Required field marked visually only
Moderate · WCAG 3.3.2The field label says it is required (with an asterisk or the word), but the field itself declares neither required nor aria-required.
We found your accessibility statement, but no clear channel for reporting a problem.
The title attribute is doing the label’s job
Moderate · WCAG 4.1.2Some controls get their only name from the title attribute.
Duplicate ids
Minor · WCAG 4.1.1The id "{id}" appears {count} times.
Duplicate keyboard shortcuts
Minor · WCAG 2.1.1The access key "{key}" is assigned to {count} elements.
Extremely small text
Minor · WCAG 1.4.4There is text below 10px ({fontSize}).
Links opening a new window without warning
Minor · WCAG 3.2.5Some links use target="_blank" without warning that a new tab will open.
Links that display the full URL
Minor · WCAG 2.4.4Some links use a long URL as their visible text.
List items outside a list
Minor · WCAG 1.3.1There are <li> elements whose parent is neither <ul> nor <ol>.
Missing landmark regions
Minor · WCAG 1.3.1The page does not mark up some of its main regions: {missing}.
Some images have alt text that repeats adjacent text, or starts with "image of".
Table with no title
Minor · WCAG 1.3.1There is a data table with no <caption> and no accessible name.
Text in another language not marked up
Minor · WCAG 3.1.2Some links point at another language (hreflang="{hreflang}") without declaring the language of their own text.