[aria-*] attributes match their roles
Accessibility attributes are only used where they are supported.
Active
ARIA attributes are used as specified for the element's role
Accessibility attributes are only used when the element's role allows them.
Active
Deprecated ARIA roles were not used
Accessibility roles use current, supported values.
Active
[aria-hidden="true"] is not present on the document <body>
The page body is not hidden from screen readers.
Active
[aria-hidden="true"] elements do not contain focusable descendents
Interactive elements are not hidden from screen reader users.
Active
Elements use only permitted ARIA attributes
Accessibility attributes are not used where they are prohibited.
Active
[role]s have all required [aria-*] attributes
Accessibility roles include all required attributes so screen readers can describe the element.
Active
Elements with an ARIA [role] that require children to contain a specific [role] have all required children
Interactive groups contain all the child elements they need to work correctly.
Active
[role]s are contained by their required parent element
Interactive elements are nested inside the correct parent container.
Active
[role] values are valid
Accessibility roles use valid, recognized values.
Active
[aria-*] attributes have valid values
Accessibility attributes use valid values so screen readers can interpret them.
Active
[aria-*] attributes are valid and not misspelled
Accessibility attributes use valid, recognized names.
Active
Buttons have an accessible name
Buttons have labels so screen readers can describe their action.
Missing
Background and foreground colors have a sufficient contrast ratio
Text and background colors meet minimum contrast ratios.
Active
Document has a <title> element
The page has a descriptive title visible in browser tabs and search results.
Active
<frame> or <iframe> elements have a title
Embedded frames have titles so screen readers can describe their content.
Missing
Heading elements appear in a sequentially-descending order
Page headings follow a logical order without skipping levels.
Active
<html> element has a [lang] attribute
The page declares its language so screen readers use the correct voice.
Active
<html> element has a valid value for its [lang] attribute
The page has a valid language code so screen readers pronounce content correctly.
Active
Image elements have [alt] attributes
Images have descriptive alt text or are marked as decorative.
Active
Links are distinguishable without relying on color
Links in body text are visually distinct from surrounding text, not by color alone.
Missing
Links have a discernible name
Links have unique, descriptive text so users know where they go.
Active
Lists contain only <li> elements and script supporting elements (<script> and <template>)
Lists use correct markup so screen readers can announce them properly.
Active
List items (<li>) are contained within <ul>, <ol> or <menu> parent elements
List items are nested inside a valid parent list element.
Active
[user-scalable="no"] is not used in the <meta name="viewport"> element and the [maximum-scale] attribute is not less than 5
The page allows users to zoom in on mobile devices.
Active
Skip links are focusable
Skip links are visible and reachable by keyboard so users can bypass navigation.
Active
No element has a [tabindex] value greater than 0
The page uses natural keyboard tab order without manual overrides.
Missing
Touch targets have sufficient size and spacing
Buttons and interactive elements are large enough to tap easily on touch screens.
Active
Document has a main landmark
The page has exactly one main content area so screen readers can navigate to it.
Active
presentation-role-conflict
Missing
Elements with visible text labels have matching accessible names
A button or link's visible label matches what screen readers announce.
Active
Image aspect ratio
Images display at their intended proportions.
Active
Valid doctype
The page has a doctype declaration so browsers render it correctly.
Active
Character encoding
The page declares its character encoding so text displays correctly.