Accessibility rule library
All 70 automated rules our scanner runs (axe-core 4.14.0, WCAG 2.0–2.2 A/AA), each with what it means and how to fix it.
ARIA
- Elements must only use supported ARIA attributes (aria-allowed-attr)
- aria-braille attributes must have a non-braille equivalent (aria-braille-equivalent)
- ARIA commands must have an accessible name (aria-command-name)
- ARIA attributes must be used as specified for the element's role (aria-conditional-attr)
- Deprecated ARIA roles must not be used (aria-deprecated-role)
- aria-hidden="true" must not be present on the document body (aria-hidden-body)
- ARIA input fields must have an accessible name (aria-input-field-name)
- ARIA meter nodes must have an accessible name (aria-meter-name)
- ARIA progressbar nodes must have an accessible name (aria-progressbar-name)
- Elements must only use permitted ARIA attributes (aria-prohibited-attr)
- Required ARIA attributes must be provided (aria-required-attr)
- Certain ARIA roles must contain particular children (aria-required-children)
- Certain ARIA roles must be contained by particular parents (aria-required-parent)
- aria-roledescription must be on elements with a semantic role (aria-roledescription)
- ARIA roles used must conform to valid values (aria-roles)
- ARIA tab nodes must have an accessible name (aria-tab-name)
- ARIA toggle fields must have an accessible name (aria-toggle-field-name)
- ARIA tooltip nodes must have an accessible name (aria-tooltip-name)
- ARIA attributes must conform to valid names (aria-valid-attr)
- ARIA attributes must conform to valid values (aria-valid-attr-value)
Color
- Elements must meet minimum color contrast ratio thresholds (color-contrast)
- Links must be distinguishable without relying on color (link-in-text-block)
Forms
- autocomplete attribute must be used correctly (autocomplete-valid)
- Form field must not have multiple label elements (form-field-multiple-labels)
- Form elements must have labels (label)
- Select element must have an accessible name (select-name)
Keyboard
- Page must have means to bypass repeated blocks (bypass)
- Frames with focusable content must not have tabindex=-1 (frame-focusable-content)
- Interactive controls must not be nested (nested-interactive)
- Scrollable region must have keyboard access (scrollable-region-focusable)
Language
- <html> element must have a lang attribute (html-has-lang)
- <html> element must have a valid value for the lang attribute (html-lang-valid)
- HTML elements with lang and xml:lang must have the same base language (html-xml-lang-mismatch)
- lang attribute must have a valid value (valid-lang)
Names, roles and values
- ARIA hidden element must not be focusable or contain focusable elements (aria-hidden-focus)
- Buttons must have discernible text (button-name)
- Input buttons must have discernible text (input-button-name)
- Links must have discernible text (link-name)
- Summary elements must have discernible text (summary-name)
Parsing
- IDs used in ARIA and labels must be unique (duplicate-id-aria)
- <marquee> elements are deprecated and must not be used (marquee)
Semantics
- Elements must have their visible text as part of their accessible name (label-content-name-mismatch)
- Styled <p> elements must not be used as headings (p-as-heading)
Sensory and visual cues
- Zooming and scaling must not be disabled (meta-viewport)
- All touch targets must be 24px large, or leave sufficient space (target-size)
Structure
- Inline text spacing must be adjustable with custom stylesheets (avoid-inline-spacing)
- CSS Media queries must not lock display orientation (css-orientation-lock)
- <dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements (definition-list)
- <dt> and <dd> elements must be contained by a <dl> (dlitem)
- <ul> and <ol> must only directly contain <li>, <script> or <template> elements (list)
- <li> elements must be contained in a <ul> or <ol> (listitem)
Tables
- Data or header cells must not be used to give caption to a data table. (table-fake-caption)
- Non-empty <td> elements in larger <table> must have an associated table header (td-has-header)
- Table cell headers attributes must refer to other <th> elements in the same table (td-headers-attr)
- Table headers in a data table must refer to data cells (th-has-data-cells)
Text alternatives
- Active <area> elements must have alternative text (area-alt)
- Documents must have <title> element to aid in navigation (document-title)
- Frames must have an accessible name (frame-title)
- Frames must have a unique title attribute (frame-title-unique)
- Images must have alternative text (image-alt)
- Image buttons must have alternative text (input-image-alt)
- <object> elements must have alternative text (object-alt)
- [role="img"] and [role="image"] elements must have alternative text (role-img-alt)
- Server-side image maps must not be used (server-side-image-map)
- <svg> elements with an img or image role must have alternative text (svg-img-alt)
- <video> elements must have captions (video-caption)
Time and media
- <audio> elements must have a captions track (audio-caption)
- <blink> elements are deprecated and must not be used (blink)
- Delayed refresh under 20 hours must not be used (meta-refresh)
- <video> or <audio> elements must not play automatically (no-autoplay-audio)