ACT Rules
How the rules are actually tested
A technique shows one way to satisfy a criterion. A failure shows one way to break it. An ACT rule is the third piece, because it defines exactly how you test for one, and it is the reference that automated checkers implement. We carry 87 of them here, each mapped to the criteria it tests and to our own fixes for those criteria.
The part worth reading twice is what a pass is worth. On most of these rules W3C's own answer is that passing means no failure of that kind was found and the criterion still needs further testing. Four rules in the whole published set clear a criterion outright, and they cover character key shortcuts, page titles, the language of the page and the language of its parts. So a green result here is evidence that one specific thing is not broken, and it is not evidence that the rule is met.
What a tool can and cannot reach
Of the 87 rules here, 56 can be decided by a tool on its own. The rest need a person somewhere, either because the check calls for judgment or because nothing has implemented it yet. Between them they touch 37 of the 86 WCAG 2.2 criteria. W3C's own index runs slightly ahead of ours and reaches 38, which still leaves 48 criteria in the standard with no test rule of any kind.
That is the honest shape of automated coverage, and it is as close to an answer as the standards body offers, because W3C has never published a figure for how much of WCAG a machine can check. Anyone quoting one is quoting somebody's classification rather than the standard. Ours is on what automated testing actually covers, and it is labeled as ours.
Where the rules cluster, and where they run out
Coverage is not spread evenly across the standard, and the shape of the gap says more than the total does. The rules pile up on the guidelines about markup a machine can read, and they thin out on the guidelines that ask whether a person understood something. So the count below is worth reading as a map of what automation reaches rather than as a score.
| Guideline | Live rules | Criteria at A and AA | Of those, reached by a rule |
|---|---|---|---|
| 1.1 Text Alternatives | 8 | 1 | 1 |
| 1.2 Time-based Media | 6 | 5 | 4 |
| 1.3 Adaptable | 14 | 5 | 4 |
| 1.4 Distinguishable | 11 | 9 | 6 |
| 2.1 Keyboard Accessible | 6 | 3 | 3 |
| 2.2 Enough Time | 3 | 2 | 2 |
| 2.3 Seizures and Physical Reactions | 0 | 1 | 0 |
| 2.4 Navigable | 15 | 8 | 5 |
| 2.5 Input Modalities | 4 | 6 | 2 |
| 3.1 Readable | 5 | 2 | 2 |
| 3.2 Predictable | 2 | 5 | 0 |
| 3.3 Input Assistance | 1 | 6 | 1 |
| 4.1 Compatible | 15 | 2 | 1 |
Two rows are worth stopping on, because both of them cost money in a way the totals hide.
Seizures and Physical Reactions has no rule at all. Not a thin one. None, across every criterion in it. A scanner therefore returns a clean result on the one guideline whose failure mode is a medical event rather than an inconvenience, and it returns that result honestly, because nobody has written a rule for it to run. The number that decides 2.3.1 Three Flashes or Below Threshold has to be measured by a person with a tool built for it.
Input Assistance holds nine criteria, six of them at A and AA, and one rule. That guideline is where forms live, and forms are where most sites take money. Its single rule is still at proposal stage, and 3.3.2 Labels or Instructions has nothing at all, which is why a field labelled only by placeholder text passes every checker and fails an audit. So the part of your site that earns is the part automation reaches least.
And where the rules are thickest, they are thick on one criterion. 4.1.2 Name, Role, Value is filed with fifteen live rules, more than anything else in the standard, and ten of those name it as a conformance requirement. Seven of the ten test only that an accessible name is not empty, so a button whose accessible name is the literal word button passes all seven. The other three are the ones doing real work, because they test focusable content hidden from the accessibility tree, focusable content sitting inside presentational children, and two iframes sharing one name for different purposes.
Rules by criterion
1.1.1 Non-text Content Level A
- Element marked as decorative is not exposedA tool can check this
- Image accessible name is descriptiveA tool finds candidates, you decide
- Image button has non-empty accessible nameA tool can check this
- Image has non-empty accessible nameA tool can check this
- Link has non-empty accessible nameA tool can check this
- Object element rendering non-text content has non-empty accessible nameA tool can check this
- SVG element with explicit role has non-empty accessible nameA tool can check this
- Image not in the accessibility tree is decorativeA tool can check this
1.2.1 Audio-only and Video-only (Prerecorded) Level A
- Audio element content has text alternativeA tool finds candidates, you decide
- Video element visual-only content has accessible alternativeA tool finds candidates, you decide
1.2.2 Captions (Prerecorded) Level A
- Video element auditory content has accessible alternativeA tool finds candidates, you decide
1.2.3 Audio Description or Media Alternative (Prerecorded) Level A
- Video element visual content has accessible alternativeA tool finds candidates, you decide
1.2.5 Audio Description (Prerecorded) Level AA
- Video element visual content has strict accessible alternativeA tool finds candidates, you decide
1.2.8 Media Alternative (Prerecorded) Level AAA
- Audio and visuals of video element have transcriptA tool finds candidates, you decide
1.3.1 Info and Relationships Level A
- ARIA attribute is defined in WAI-ARIAA tool can check this
- ARIA state or property has valid valueA tool can check this
- Element with role attribute has required states and propertiesA tool can check this
- Form field has non-empty accessible nameA tool can check this
- Headers attribute specified on a cell refers to cells in the same table elementA tool can check this
- Role attribute has valid valueA tool can check this
- ARIA global properties not used where prohibitedA tool can check this
- ARIA required context roleA tool can check this
- ARIA required owned elementsA tool can check this
- ARIA state or property is permittedA tool can check this
- Table header cell has assigned cellsA tool can check this
1.3.3 Sensory Characteristics Level A
- Content has alternative for visual referenceA tool finds candidates, you decide
1.3.4 Orientation Level AA
- Orientation of the page is not restricted using CSS transformsA tool can check this
1.3.5 Identify Input Purpose Level AA
- Autocomplete attribute has valid valueA tool can check this
1.4.2 Audio Control Level A
- Audio or video element avoids automatically playing audioA tool can check this
- Audio or video element that plays automatically has a control mechanismA tool can check this
- Audio or video element that plays automatically has no audio that lasts more than 3 secondsA tool can check this
1.4.3 Contrast (Minimum) Level AA
- Text has enhanced contrastA tool can check this
- Text has minimum contrastA tool can check this
1.4.4 Resize Text Level AA
- Meta viewport allows for zoomA tool can check this
- Zoomed text node is not clipped with CSS overflowA tool finds candidates, you decide
1.4.5 Images of Text Level AA
- HTML images contain no textNothing implements this yet
1.4.6 Contrast (Enhanced) Level AAA
- Text has enhanced contrastA tool can check this
- Text has minimum contrastA tool can check this
1.4.10 Reflow Level AA
- Meta viewport allows for zoomA tool can check this
1.4.12 Text Spacing Level AA
- Important letter spacing in style attributes is wide enoughA tool can check this
- Important line height in style attributes is wide enoughA tool can check this
- Important word spacing in style attributes is wide enoughA tool can check this
2.1.1 Keyboard Level A
- Iframe with interactive elements is not excluded from tab-orderA tool can check this
- Scrollable content can be reached with sequential focus navigationA tool can check this
2.1.2 No Keyboard Trap Level A
- Focusable element has no keyboard trapA tool can check this
- Focusable element has no keyboard trap via standard navigationNothing implements this yet
- Focusable element has no keyboard trap via non-standard navigationA tool can check this
2.1.3 Keyboard (No Exception) Level AAA
- Iframe with interactive elements is not excluded from tab-orderA tool can check this
- Scrollable content can be reached with sequential focus navigationA tool can check this
2.1.4 Character Key Shortcuts Level A
- No keyboard shortcut uses only printable charactersA tool finds candidates, you decide
2.2.1 Timing Adjustable Level A
- Meta element has no refresh delayA tool can check this
- Meta element has no refresh delay (no exception)A tool can check this
2.2.2 Pause, Stop, Hide Level A
- Text content that changes automatically can be paused, stopped or hiddenSomeone has to look
2.2.4 Interruptions Level AAA
- Meta element has no refresh delayA tool can check this
- Meta element has no refresh delay (no exception)A tool can check this
2.4.1 Bypass Blocks Level A
- Bypass Blocks of Repeated ContentA tool finds candidates, you decide
- Document has heading for non-repeated contentNothing implements this yet
- Document has a landmark with non-repeated contentA tool can check this
- Block of repeated content is collapsibleNothing implements this yet
- Document has an instrument to move focus to non-repeated contentNothing implements this yet
2.4.2 Page Titled Level A
- HTML page has non-empty titleA tool can check this
- HTML page title is descriptiveA tool can check this
2.4.4 Link Purpose (In Context) Level A
- Link has non-empty accessible nameA tool can check this
- Link in context is descriptiveA tool can check this
- Links with identical accessible names and same context serve equivalent purposeA tool finds candidates, you decide
2.4.6 Headings and Labels Level AA
- Form field label is descriptiveA tool can check this
- Heading is descriptiveA tool can check this
2.4.7 Focus Visible Level AA
- Element in sequential focus order has visible focusA tool can check this
2.4.9 Link Purpose (Link Only) Level AAA
- Link has non-empty accessible nameA tool can check this
- Link in context is descriptiveA tool can check this
- Links with identical accessible names and same context serve equivalent purposeA tool finds candidates, you decide
- Link is descriptiveA tool can check this
- Links with identical accessible names have equivalent purposeA tool can check this
2.5.3 Label in Name Level A
- Form field has non-empty accessible nameA tool can check this
- Visible label is part of accessible nameNothing implements this yet
2.5.4 Motion Actuation Level A
- Device motion based changes to the content can also be created from the user interfaceA tool finds candidates, you decide
- Device motion based changes to the content can be disabledA tool finds candidates, you decide
3.1.1 Language of Page Level A
- HTML page has lang attributeA tool can check this
- HTML page lang attribute has valid language tagA tool can check this
- HTML page language subtag matches default languageA tool can check this
3.1.2 Language of Parts Level AA
- Element with lang attribute has valid language tagA tool can check this
- HTML element language subtag matches languageA tool can check this
3.2.5 Change on Request Level AAA
- Meta element has no refresh delayA tool can check this
- Meta element has no refresh delay (no exception)A tool can check this
3.3.1 Error Identification Level A
- Error message describes invalid form field valueA tool finds candidates, you decide
4.1.2 Name, Role, Value Level A
- Image button has non-empty accessible nameA tool can check this
- Link has non-empty accessible nameA tool can check this
- ARIA attribute is defined in WAI-ARIAA tool can check this
- ARIA state or property has valid valueA tool can check this
- Element with role attribute has required states and propertiesA tool can check this
- Form field has non-empty accessible nameA tool can check this
- Role attribute has valid valueA tool can check this
- ARIA state or property is permittedA tool can check this
- Button has non-empty accessible nameA tool can check this
- Element with aria-hidden has no content in sequential focus navigationA tool can check this
- Element with presentational children has no focusable contentA tool can check this
- Menuitem has non-empty accessible nameA tool can check this
- Summary element has non-empty accessible nameA tool can check this
- Iframe element has non-empty accessible nameA tool can check this
- Iframe elements with identical accessible names have equivalent purposeA tool finds candidates, you decide
Rules about using ARIA correctly
These check that ARIA is used the way the specification intends, rather than checking a WCAG criterion. W3C is explicit that some of them are not required for conformance at any level, so treat a failure here as a sign that something is probably wrong nearby, often around 4.1.2 Name, Role, Value, rather than as a finding that stands on its own.
- Heading has non-empty accessible nameA tool can check this
Rules for audio and video
Each of these checks one piece of a media requirement rather than a whole criterion, and W3C feeds them into larger composite rules. So one of them passing tells you nothing about whether your captions or your audio description are adequate. Which criterion applies depends on what the media contains, whether that is audio only, video only, or both, which is what Guideline 1.2, Time-based Media sets out.
- Audio element content has transcriptA tool finds candidates, you decide
- Audio element content is media alternative for textA tool finds candidates, you decide
- Video element auditory content has captionsA tool finds candidates, you decide
- Video element visual-only content is media alternative for textA tool finds candidates, you decide
- Video element visual-only content has transcriptA tool finds candidates, you decide
- Video element visual-only content has audio track alternativeA tool finds candidates, you decide
- Video element content is media alternative for textA tool finds candidates, you decide
- Video element visual content has audio descriptionA tool finds candidates, you decide
Withdrawn rules
These were published and have since been withdrawn. They are here because you may still meet one in an older audit report or a tool's output, and the useful thing to know is that it no longer stands.
Where to go next
- All 432 techniques are the documented ways to satisfy a criterion.
- The 55 Level A and AA criteria are the rules themselves.
- The free checkers run a few of these rules in your browser.
- Automated versus manual testing explains why the gap above matters.