Accessibility Wiki

Web accessibility

135 rules the scanning engine runs against web pages (WCAG 2.1 / 2.2).

Document accessibility → · WCAG cross-reference

Images & non-text content

Rule WCAG Impact Mode Standards
img-alt — Images must have alternative text 1.1.1 (A) critical static WCAG A EN 301 549 Section 508 Trusted Tester ACT
input-image-alt — Image buttons must have alternative text 1.1.1 (A), 4.1.2 (A) critical static WCAG A EN 301 549 Section 508 Trusted Tester ACT
area-alt — Image-map areas must have alternative text 1.1.1 (A), 2.4.4 (A) serious static WCAG A EN 301 549 Section 508 Trusted Tester ACT
svg-img-name — Meaningful SVGs must have an accessible name 1.1.1 (A) serious static WCAG A EN 301 549 Section 508 Trusted Tester ACT
object-alt — Embedded objects must have a text alternative 1.1.1 (A) serious static WCAG A EN 301 549 Section 508
role-img-name — Elements with role="img" must have a name 1.1.1 (A) serious static WCAG A EN 301 549 Section 508 Trusted Tester ACT
img-redundant-alt — Alt text should not be a file name or duplicate adjacent text 1.1.1 (A) minor static WCAG A EN 301 549 Best practice

Forms

Rule WCAG Impact Mode Standards
label-control — Form inputs must have a label 4.1.2 (A), 3.3.2 (A) critical static WCAG A EN 301 549 Section 508 Trusted Tester ACT
select-name — Select elements must have a label 4.1.2 (A) critical static WCAG A EN 301 549 Section 508 Trusted Tester ACT
button-name — Buttons must have discernible text 4.1.2 (A) critical static WCAG A EN 301 549 Section 508 Trusted Tester ACT
widget-name — Custom interactive widgets must have an accessible name 4.1.2 (A) critical static WCAG A EN 301 549
form-field-multiple-labels — A form field should not have multiple label elements 3.3.2 (A) moderate static WCAG A EN 301 549 Trusted Tester
fieldset-legend — Radio and checkbox groups need a fieldset and legend 1.3.1 (A), 3.3.2 (A) moderate static WCAG A EN 301 549
autocomplete-valid — autocomplete attributes must use valid tokens 1.3.5 (AA) moderate static WCAG AA EN 301 549 ACT
label-content-name-mismatch — Accessible name must contain the visible label text 2.5.3 (A) serious static WCAG A EN 301 549
optgroup-label — Option groups must have a label 1.3.1 (A), 4.1.2 (A) serious static WCAG A EN 301 549
input-button-name — Input buttons must have discernible text 4.1.2 (A) critical static WCAG A EN 301 549 Section 508 Trusted Tester ACT
on-input-context-change — Changing a control must not auto-submit or navigate 3.2.2 (A) serious static WCAG A EN 301 549 Section 508 Trusted Tester
on-focus-context-change — Receiving focus must not trigger a change of context 3.2.1 (A) serious static WCAG A EN 301 549 Section 508 Trusted Tester
form-error-association — Invalid fields must expose their error message 3.3.1 (A) serious static WCAG A EN 301 549 Section 508 Trusted Tester
form-error-visible — Failed form validation must surface a visible or programmatic error 3.3.1 (A) moderate live WCAG A EN 301 549
label-title-only — Don’t rely on title or placeholder as the only label 3.3.2 (A) minor static WCAG A EN 301 549 Best practice
accessible-authentication — Authentication must not depend on a cognitive-function test 3.3.8 (AA) serious static WCAG AA EN 301 549

Structure & semantics

Rule WCAG Impact Mode Standards
heading-order — Heading levels must not skip 1.3.1 (A) moderate static WCAG A EN 301 549 Best practice
empty-heading — Headings must not be empty 1.3.1 (A), 2.4.6 (AA) serious static WCAG A WCAG AA EN 301 549 Best practice
page-has-heading-one — Page should contain a level-one heading 1.3.1 (A) moderate static WCAG A EN 301 549 Best practice
landmark-one-main — Page should have exactly one main landmark 1.3.1 (A) moderate static WCAG A EN 301 549 Best practice
landmark-unique — Landmarks of the same role must be distinguishable 1.3.1 (A) moderate static WCAG A EN 301 549 Best practice
landmark-toplevel — Banner and contentinfo must be top-level landmarks 1.3.1 (A) moderate static WCAG A EN 301 549 Best practice
list-structure — Lists must be structured correctly 1.3.1 (A) moderate static WCAG A EN 301 549
dl-structure — Definition lists must be structured correctly 1.3.1 (A) moderate static WCAG A EN 301 549
table-headers — Data tables must have header cells 1.3.1 (A) serious static WCAG A EN 301 549 Section 508 Trusted Tester
table-scope-valid — scope attributes must be valid and on header cells 1.3.1 (A) moderate static WCAG A EN 301 549 Best practice
section-headings — Long content should be organized with section headings 2.4.10 (AAA) minor static WCAG AAA

ARIA

Rule WCAG Impact Mode Standards
aria-valid-role — role must be a valid, non-abstract ARIA role 4.1.2 (A) serious static WCAG A EN 301 549
aria-valid-attr — aria-* attributes must be valid names with valid values 4.1.2 (A) serious static WCAG A EN 301 549
aria-allowed-attr — aria-* attributes must be allowed for the element’s role 4.1.2 (A) serious static WCAG A EN 301 549
aria-required-attr — Roles must declare their required states 4.1.2 (A) serious static WCAG A EN 301 549
aria-required-children — Container roles must own the required child roles 1.3.1 (A) serious static WCAG A EN 301 549
aria-required-parent — Roles must be contained by their required context role 1.3.1 (A) serious static WCAG A EN 301 549
aria-hidden-focusable — aria-hidden elements must not contain focusable content 4.1.2 (A), 1.3.1 (A) serious static WCAG A EN 301 549 Trusted Tester
aria-hidden-body — aria-hidden must not be on the document body 4.1.2 (A) critical static WCAG A EN 301 549
presentation-role-conflict — role="presentation" must not be on focusable or labelled elements 4.1.2 (A) moderate static WCAG A EN 301 549 ACT Best practice
aria-idref-integrity — ARIA ID references must resolve unambiguously 1.3.1 (A), 4.1.2 (A) serious static WCAG A EN 301 549
orphan-aria-reference — Named-required elements should not be left without a name 4.1.2 (A) minor static WCAG A EN 301 549
status-messages — Live regions must be able to announce status messages 4.1.3 (AA) serious static WCAG AA EN 301 549
nested-interactive — Interactive controls must not be nested 4.1.2 (A) serious static WCAG A EN 301 549 Trusted Tester

Document, language & navigation

Rule WCAG Impact Mode Standards
html-lang — The page must declare its language 3.1.1 (A) serious static WCAG A EN 301 549 Trusted Tester ACT
html-lang-valid — The page language must be a valid BCP-47 tag 3.1.1 (A) serious static WCAG A EN 301 549 Trusted Tester ACT
valid-lang — lang on inline content must be a valid tag 3.1.2 (AA) moderate static WCAG AA EN 301 549 Trusted Tester ACT
document-title — The page must have a non-empty title 2.4.2 (A) serious static WCAG A EN 301 549 Trusted Tester ACT
duplicate-id — id attributes must be unique 4.1.1 (A), 1.3.1 (A) moderate static WCAG A EN 301 549
meta-viewport — The viewport must allow zooming 1.4.4 (AA) serious static WCAG AA EN 301 549 ACT
bypass-blocks — Page must offer a way to skip to content 2.4.1 (A) serious static WCAG A EN 301 549 Section 508 Trusted Tester
tabindex-positive — Avoid positive tabindex values 2.4.3 (A) moderate static WCAG A EN 301 549 Best practice
accesskeys-unique — accesskey values must be unique 2.1.1 (A) minor static WCAG A EN 301 549 Best practice
frame-title — Frames must have a descriptive title 4.1.2 (A), 2.4.1 (A) serious static WCAG A EN 301 549 Section 508 Trusted Tester
orientation-lock — Content must not lock the display orientation 1.3.4 (AA) moderate static WCAG AA EN 301 549
audio-transcript — Audio-only content needs a transcript 1.2.1 (A) moderate static WCAG A EN 301 549
scripted-timeout — Scripted timers must not impose an unannounced time limit 2.2.1 (A) serious live WCAG A EN 301 549
meta-refresh — Don’t auto-refresh or redirect the page on a timer 2.2.1 (A) serious static WCAG A EN 301 549 Section 508 Trusted Tester
no-blink-marquee — Don’t use or 2.2.2 (A) serious static WCAG A EN 301 549 Section 508 Trusted Tester
no-autoplay-audio — Don’t autoplay sound the user can’t stop 1.4.2 (A) serious static WCAG A EN 301 549 Section 508 Trusted Tester
media-captions — Prerecorded video should provide captions 1.2.2 (A) serious static WCAG A EN 301 549 Section 508 Trusted Tester
media-audio-description — Prerecorded video should provide an audio description 1.2.5 (AA) moderate static WCAG AA EN 301 549 Section 508
media-alternative — Prerecorded video needs an audio description or media alternative 1.2.3 (A) moderate static WCAG A EN 301 549 Section 508
visual-presentation — Blocks of text should be easy to read (spacing, line length, justification) 1.4.8 (AAA) minor live WCAG AAA
reading-level — Body text should not require post-secondary reading ability 3.1.5 (AAA) minor static WCAG AAA
Rule WCAG Impact Mode Standards
link-name — Links must have discernible text 2.4.4 (A), 4.1.2 (A) serious static WCAG A EN 301 549 Section 508 Trusted Tester ACT
link-generic-text — Link text should describe its destination 2.4.4 (A) minor static WCAG A EN 301 549
anchor-is-button — Anchors used as buttons need button semantics and keyboard support 4.1.2 (A) moderate static WCAG A EN 301 549
button-type — Buttons in forms should declare a type 3.2.2 (A) minor static WCAG A EN 301 549 Best practice
identical-links-same-purpose — Links with the same name should go to the same place 2.4.4 (A) minor static WCAG A EN 301 549

Color & contrast

Rule WCAG Impact Mode Standards
text-contrast — Text must meet minimum contrast (4.5:1) 1.4.3 (AA) serious live WCAG AA EN 301 549 Trusted Tester ACT
text-contrast-enhanced — Text should meet enhanced contrast (7:1) 1.4.6 (AAA) moderate live WCAG AAA ACT
non-text-contrast — UI components and graphics need 3:1 contrast 1.4.11 (AA) moderate live WCAG AA EN 301 549
use-of-color — Don’t distinguish links by color alone 1.4.1 (A) serious static WCAG A EN 301 549 Section 508 Trusted Tester

Deeper checks

Rule WCAG Impact Mode Standards
accessible-name-quality — Interactive elements need a high-quality accessible name 4.1.2 (A), 2.4.6 (AA), 1.1.1 (A) moderate static WCAG A WCAG AA EN 301 549
reading-order — Visual order should match DOM (focus) order 1.3.2 (A), 2.4.3 (A) serious live WCAG A EN 301 549
target-size — Pointer targets must be large enough 2.5.8 (AA) serious live WCAG AA EN 301 549
reflow — Content must reflow without horizontal scrolling 1.4.10 (AA) serious live WCAG AA EN 301 549
text-spacing — Content must survive increased text spacing 1.4.12 (AA) moderate live WCAG AA EN 301 549
link-opens-new-tab — Links that open a new tab or window must warn users 3.2.5 (AAA) minor static WCAG AAA
scrollable-region-focusable — Scrollable regions must be keyboard-accessible 2.1.1 (A) serious live WCAG A EN 301 549
empty-table-header — Table header cells must not be empty 1.3.1 (A), 4.1.2 (A) serious static WCAG A EN 301 549
missing-autocomplete — Personal-data inputs should declare an autocomplete token 1.3.5 (AA) minor static WCAG AA EN 301 549
abbr-no-title — Abbreviations should have a title with their expanded form 3.1.4 (AAA) minor static WCAG AAA
infinite-animation — Auto-playing animation must be pausable 2.2.2 (A) moderate live WCAG A EN 301 549 Section 508 Trusted Tester
flash-rate — Content must not flash more than 3 times per second 2.3.1 (A) serious live WCAG A EN 301 549 Section 508 Trusted Tester
respects-reduced-motion — Motion must respect prefers-reduced-motion 2.2.2 (A) moderate live WCAG A EN 301 549
link-purpose-link-only — Link text alone should describe the link’s purpose 2.4.9 (AAA) minor static WCAG AAA

Component patterns (best practice)

Rule WCAG Impact Mode Standards
tab-selected-state — A tablist must have exactly one selected tab 4.1.2 (A) serious static WCAG A EN 301 549 Best practice
tab-controls-panel — A tab should point to its tabpanel 1.3.1 (A), 4.1.2 (A) serious static WCAG A EN 301 549 Best practice
tabpanel-labelled — A tabpanel should be labelled by its tab 1.3.1 (A) moderate static WCAG A EN 301 549 Best practice
tablist-roving-tabindex — Tabs should use roving tabindex 2.1.1 (A) moderate static WCAG A EN 301 549 Best practice
menu-roving-tabindex — Menus should expose one focusable item (roving tabindex) 2.1.1 (A) moderate static WCAG A EN 301 549 Best practice
menuitem-haspopup-expanded — A submenu trigger must expose aria-expanded 4.1.2 (A) serious static WCAG A EN 301 549 Best practice
dialog-name — A dialog must have an accessible name 4.1.2 (A) serious static WCAG A EN 301 549 Best practice
dialog-modal — A modal dialog should declare aria-modal 4.1.2 (A) minor static WCAG A EN 301 549 Best practice
dialog-focusable-content — An open dialog must contain focusable content 2.1.1 (A) serious static WCAG A EN 301 549 Best practice
disclosure-trigger-operable — A disclosure trigger must be keyboard operable 2.1.1 (A) serious static WCAG A EN 301 549 Best practice
disclosure-state-match — aria-expanded must match the controlled region 4.1.2 (A) serious static WCAG A EN 301 549 Best practice
combobox-popup — A combobox must declare its popup 1.3.1 (A), 4.1.2 (A) serious static WCAG A EN 301 549 Best practice
combobox-activedescendant — aria-activedescendant must resolve when a combobox is open 4.1.2 (A) moderate static WCAG A EN 301 549 Best practice
listbox-single-select — A single-select listbox must not have multiple selected options 4.1.2 (A) serious static WCAG A EN 301 549 Best practice
tree-roving-tabindex — A tree should expose exactly one focusable item 2.1.1 (A) moderate static WCAG A EN 301 549 Best practice
treeitem-expanded — A parent treeitem must expose aria-expanded 4.1.2 (A) serious static WCAG A EN 301 549 Best practice
range-value-in-bounds — A range widget value must be within its min and max 4.1.2 (A) serious static WCAG A EN 301 549 Best practice
switch-state-valid — A switch must have a valid aria-checked 4.1.2 (A) serious static WCAG A EN 301 549 Best practice
single-current-page — Only one element should be the current page 4.1.2 (A) minor static WCAG A EN 301 549 Best practice
link-group-semantics — Groups of links should use list semantics 1.3.1 (A) minor static WCAG A EN 301 549 Best practice
breadcrumb-structure — A breadcrumb should be a list that marks the current page 1.3.1 (A) minor static WCAG A EN 301 549 Best practice
carousel-controls — A carousel needs controls 2.2.2 (A), 2.1.1 (A) moderate static WCAG A EN 301 549 Best practice
tooltip-referenced — A tooltip must be referenced by the element it describes 4.1.2 (A) moderate static WCAG A EN 301 549 Best practice
toolbar-roving-tabindex — A toolbar should use roving tabindex 2.1.1 (A) moderate static WCAG A EN 301 549
radiogroup-single-selected — A radiogroup must have at most one checked radio 4.1.2 (A) serious static WCAG A EN 301 549
grid-roving-tabindex — A grid should use roving tabindex 2.1.1 (A) moderate static WCAG A EN 301 549
skip-link-target-valid — A same-page link must point at a real target 2.4.1 (A) serious static WCAG A EN 301 549
interactive-role-focusable — An element with an interactive role must be keyboard focusable 2.1.1 (A) serious static WCAG A EN 301 549
role-application-misuse — role="application" should wrap a widget, not browse-mode content 4.1.2 (A), 1.3.1 (A) serious static WCAG A EN 301 549
data-table-caption — A data table should have an accessible name 1.3.1 (A) moderate static WCAG A EN 301 549
slider-spinbutton-range-complete — A slider/spinbutton must expose a coherent value range 4.1.2 (A), 1.3.1 (A) serious static WCAG A EN 301 549
combobox-aria-autocomplete — aria-autocomplete on a combobox must be a valid token 4.1.2 (A) moderate static WCAG A EN 301 549
accordion-heading-structure — Accordion headers should sit inside a heading 1.3.1 (A) minor static WCAG A EN 301 549
feed-structure — A feed must contain articles with position information 1.3.1 (A) minor static WCAG A EN 301 549
keyboard-trap — Keyboard focus must not be trapped 2.1.2 (A) critical live WCAG A EN 301 549 Best practice
keyboard-reachable — Interactive elements must be reachable by keyboard 2.1.1 (A) serious live WCAG A EN 301 549 Best practice
focus-order — Tab order should follow the visual order 2.4.3 (A) moderate live WCAG A EN 301 549 Best practice
focus-visible-live — Focused elements must show a visible focus indicator 2.4.7 (AA) serious live WCAG AA EN 301 549 Best practice
focus-appearance — The focus indicator must be large enough (2.4.13) 2.4.13 (AAA) minor live WCAG AAA
on-focus-navigation — Receiving focus must not trigger a page navigation 3.2.1 (A) serious live WCAG A EN 301 549 Section 508 Trusted Tester
widget-keyboard-operable — A composite widget must respond to arrow-key navigation 2.1.1 (A) serious live WCAG A EN 301 549
focus-not-obscured — A focused control must not be hidden by a sticky or fixed overlay 2.4.11 (AA) serious live WCAG AA EN 301 549
dialog-focus-return — Closing a dialog must return focus to its opener 2.4.3 (A) serious live WCAG A EN 301 549
content-on-hover — Hover-revealed content must be hoverable and dismissable 1.4.13 (AA) moderate live WCAG AA EN 301 549