What automated testing can and cannot detect
All 55 WCAG 2.2 Level A and AA success criteria, and whether a scanner can find a failure of each one. Computed from axe-core 4.12.1's own rule metadata, not asserted by us.
Published estimates of automated coverage range from roughly 13% to 57%, and both
figures are honest — they measure different things. Count by success criteria and you get
the number above. Count by issue volume on real pages and it goes much higher,
because the failures automation is good at finding are also the most repeated: one
missing alt pattern in a template becomes four hundred violations.
Neither number tells you a page is accessible. That is the point of this table: the 32 rows marked needs a person are invisible to every scanner on the market, ours included, and they include some of the ones that most determine whether a page can actually be used — focus order, whether alt text is accurate, whether a custom widget behaves the way its role promises.
How to read the middle column
Partly detectable means axe-core ships at least one rule tagged with that
criterion. A rule firing is good evidence of a failure. A rule not firing is not
evidence of conformance — image-alt proves an image has an alt
attribute, and says nothing about whether the text in it describes the image.
Needs a person means no automated rule exists. Not that it is hard to test — several are easy for a human and impossible for a machine.
1. Perceivable
20 criteria at A and AA. 11 have at least one automated rule; 9 do not.
| Criterion | Name | Level | Automated testing | axe-core rules |
|---|---|---|---|---|
| 1.1.1 | Non-text Content | A | Partly detectable | aria-meter-name, aria-progressbar-name, image-alt, input-image-alt, object-alt, role-img-alt, svg-img-alt |
| 1.2.1 | Audio-only and Video-only (Prerecorded) | A | Partly detectable | audio-caption |
| 1.2.2 | Captions (Prerecorded) | A | Partly detectable | video-caption |
| 1.2.3 | Audio Description or Media Alternative (Prerecorded) | A | Needs a person | no automated rule |
| 1.2.4 | Captions (Live) | AA | Needs a person | no automated rule |
| 1.2.5 | Audio Description (Prerecorded) | AA | Needs a person | no automated rule |
| 1.3.1 | Info and Relationships | A | Partly detectable | aria-hidden-body, aria-required-children, aria-required-parent, definition-list, dlitem, list, listitem, p-as-heading, table-fake-caption, td-has-header, td-headers-attr, th-has-data-cells |
| 1.3.2 | Meaningful Sequence | A | Needs a person | no automated rule |
| 1.3.3 | Sensory Characteristics | A | Needs a person | no automated rule |
| 1.3.4 | Orientation new in 2.1 | AA | Partly detectable | css-orientation-lock |
| 1.3.5 | Identify Input Purpose new in 2.1 | AA | Partly detectable | autocomplete-valid |
| 1.4.1 | Use of Color | A | Partly detectable | link-in-text-block |
| 1.4.2 | Audio Control | A | Partly detectable | no-autoplay-audio |
| 1.4.3 | Contrast (Minimum) | AA | Partly detectable | color-contrast |
| 1.4.4 | Resize Text | AA | Partly detectable | meta-viewport |
| 1.4.5 | Images of Text | AA | Needs a person | no automated rule |
| 1.4.10 | Reflow new in 2.1 | AA | Needs a person | no automated rule |
| 1.4.11 | Non-text Contrast new in 2.1 | AA | Needs a person | no automated rule |
| 1.4.12 | Text Spacing new in 2.1 | AA | Partly detectable | avoid-inline-spacing |
| 1.4.13 | Content on Hover or Focus new in 2.1 | AA | Needs a person | no automated rule |
2. Operable
20 criteria at A and AA. 8 have at least one automated rule; 12 do not.
| Criterion | Name | Level | Automated testing | axe-core rules |
|---|---|---|---|---|
| 2.1.1 | Keyboard | A | Partly detectable | frame-focusable-content, scrollable-region-focusable, server-side-image-map |
| 2.1.2 | No Keyboard Trap | A | Needs a person | no automated rule |
| 2.1.4 | Character Key Shortcuts new in 2.1 | A | Needs a person | no automated rule |
| 2.2.1 | Timing Adjustable | A | Partly detectable | meta-refresh |
| 2.2.2 | Pause, Stop, Hide | A | Partly detectable | blink, marquee |
| 2.3.1 | Three Flashes or Below Threshold | A | Needs a person | no automated rule |
| 2.4.1 | Bypass Blocks | A | Partly detectable | bypass |
| 2.4.2 | Page Titled | A | Partly detectable | document-title |
| 2.4.3 | Focus Order | A | Needs a person | no automated rule |
| 2.4.4 | Link Purpose (In Context) | A | Partly detectable | area-alt, link-name |
| 2.4.5 | Multiple Ways | AA | Needs a person | no automated rule |
| 2.4.6 | Headings and Labels | AA | Needs a person | no automated rule |
| 2.4.7 | Focus Visible | AA | Needs a person | no automated rule |
| 2.4.11 | Focus Not Obscured (Minimum) new in 2.2 | AA | Needs a person | no automated rule |
| 2.5.1 | Pointer Gestures new in 2.1 | A | Needs a person | no automated rule |
| 2.5.2 | Pointer Cancellation new in 2.1 | A | Needs a person | no automated rule |
| 2.5.3 | Label in Name new in 2.1 | A | Partly detectable | label-content-name-mismatch |
| 2.5.4 | Motion Actuation new in 2.1 | A | Needs a person | no automated rule |
| 2.5.7 | Dragging Movements new in 2.2 | AA | Needs a person | no automated rule |
| 2.5.8 | Target Size (Minimum) new in 2.2 | AA | Partly detectable | target-size |
3. Understandable
13 criteria at A and AA. 3 have at least one automated rule; 10 do not.
| Criterion | Name | Level | Automated testing | axe-core rules |
|---|---|---|---|---|
| 3.1.1 | Language of Page | A | Partly detectable | html-has-lang, html-lang-valid, html-xml-lang-mismatch |
| 3.1.2 | Language of Parts | AA | Partly detectable | valid-lang |
| 3.2.1 | On Focus | A | Needs a person | no automated rule |
| 3.2.2 | On Input | A | Needs a person | no automated rule |
| 3.2.3 | Consistent Navigation | AA | Needs a person | no automated rule |
| 3.2.4 | Consistent Identification | AA | Needs a person | no automated rule |
| 3.2.6 | Consistent Help new in 2.2 | A | Needs a person | no automated rule |
| 3.3.1 | Error Identification | A | Needs a person | no automated rule |
| 3.3.2 | Labels or Instructions | A | Partly detectable | form-field-multiple-labels |
| 3.3.3 | Error Suggestion | AA | Needs a person | no automated rule |
| 3.3.4 | Error Prevention (Legal, Financial, Data) | AA | Needs a person | no automated rule |
| 3.3.7 | Redundant Entry new in 2.2 | A | Needs a person | no automated rule |
| 3.3.8 | Accessible Authentication (Minimum) new in 2.2 | AA | Needs a person | no automated rule |
4. Robust
2 criteria at A and AA. 1 have at least one automated rule; 1 do not.
| Criterion | Name | Level | Automated testing | axe-core rules |
|---|---|---|---|---|
| 4.1.2 | Name, Role, Value | A | Partly detectable | area-alt, aria-allowed-attr, aria-braille-equivalent, aria-command-name, aria-conditional-attr, aria-deprecated-role, aria-hidden-body, aria-hidden-focus, aria-input-field-name, aria-prohibited-attr, aria-required-attr, aria-roledescription, aria-roles, aria-tab-name, aria-toggle-field-name, aria-tooltip-name, aria-valid-attr, aria-valid-attr-value, button-name, duplicate-id-aria, frame-title, frame-title-unique, input-button-name, input-image-alt, label, link-name, nested-interactive, select-name, summary-name |
| 4.1.3 | Status Messages new in 2.1 | AA | Needs a person | no automated rule |
The 32 no scanner will mention
Worth reading as a list, because this is the actual scope of what a clean scan leaves unanswered.
- 1.2.3 Audio Description or Media Alternative (Prerecorded) A
- Prerecorded video has either an audio description of what is shown or a full text alternative.
- 1.2.4 Captions (Live) AA
- Live audio content has real-time captions.
- 1.2.5 Audio Description (Prerecorded) AA
- Prerecorded video has an audio description track — a text alternative is no longer sufficient at this level.
- 1.3.2 Meaningful Sequence A
- When the order of content matters to its meaning, that order is available programmatically — the DOM order matches the reading order.
- 1.3.3 Sensory Characteristics A
- Instructions do not rely on shape, colour, size, position or sound alone. Not "click the round button on the right".
- 1.4.5 Images of Text AA
- Text is real text rather than a picture of text, unless the presentation is essential — a logo, for instance.
- 1.4.10 Reflow AA
- Content reflows into a single column at 320 CSS pixels wide without requiring scrolling in two directions.
- 1.4.11 Non-text Contrast AA
- Interface components and meaningful graphics have at least 3:1 contrast against adjacent colours — including the visible boundary of an input and the focus indicator.
- 1.4.13 Content on Hover or Focus AA
- Content that appears on hover or focus can be dismissed, hovered over without vanishing, and stays visible until dismissed or no longer valid.
- 2.1.2 No Keyboard Trap A
- Keyboard focus can always be moved back out of a component using the keyboard.
- 2.1.4 Character Key Shortcuts A
- Single-character shortcuts can be turned off, remapped, or are active only while a component has focus.
- 2.3.1 Three Flashes or Below Threshold A
- Nothing flashes more than three times a second, unless it is below the general flash and red flash thresholds.
- 2.4.3 Focus Order A
- Focus moves through the page in an order that preserves meaning and operability.
- 2.4.5 Multiple Ways AA
- There is more than one way to reach a page within a set — search, a site map, or navigation.
- 2.4.6 Headings and Labels AA
- Headings and labels describe the topic or purpose of what they introduce.
- 2.4.7 Focus Visible AA
- The keyboard focus indicator is visible. Removing outlines without replacing them fails this.
- 2.4.11 Focus Not Obscured (Minimum) AA
- When a component receives keyboard focus, it is not entirely hidden by other content — a sticky header or a cookie bar must not cover it.
- 2.5.1 Pointer Gestures A
- Multi-point or path-based gestures have a single-pointer alternative, unless the gesture is essential.
- 2.5.2 Pointer Cancellation A
- An action is not completed on press-down; it can be aborted or undone before release.
- 2.5.4 Motion Actuation A
- Anything triggered by device or user motion can also be operated by conventional controls, and motion actuation can be disabled.
- 2.5.7 Dragging Movements AA
- Anything that uses a dragging movement has a single-pointer alternative that does not require dragging.
- 3.2.1 On Focus A
- Receiving focus does not itself change the context — no dialog opening or navigation on focus alone.
- 3.2.2 On Input A
- Changing a setting does not automatically change context unless the user has been told it will.
- 3.2.3 Consistent Navigation AA
- Navigation repeated across pages appears in the same relative order each time.
- 3.2.4 Consistent Identification AA
- Components with the same function are identified consistently across the set of pages.
- 3.2.6 Consistent Help A
- Help mechanisms repeated across pages — contact details, a help link, a chat widget — appear in the same relative order.
- 3.3.1 Error Identification A
- An input error is identified in text, and the item in error is described.
- 3.3.3 Error Suggestion AA
- When an error is detected and a correction is known, it is suggested — unless doing so would compromise security.
- 3.3.4 Error Prevention (Legal, Financial, Data) AA
- Submissions with legal or financial consequences are reversible, checked, or confirmable before finalising.
- 3.3.7 Redundant Entry A
- Information already entered in a process is either auto-populated or available to select, rather than asked for again.
- 3.3.8 Accessible Authentication (Minimum) AA
- No cognitive function test — remembering a password, solving a puzzle — is required to authenticate, unless an alternative or a mechanism to assist exists. Pasting into a password field must work.
- 4.1.3 Status Messages AA
- Status messages can be read by assistive technology without receiving focus — a live region, correctly used.
Rules that map outside A and AA
axe-core also ships rules for 5 Level AAA criteria, and for one criterion that no longer exists.
- 1.4.6 Contrast (Enhanced) (AAA) —
color-contrast-enhanced - 2.1.3 Keyboard (No Exception) (AAA) —
scrollable-region-focusable - 2.2.4 Interruptions (AAA) —
meta-refresh-no-exceptions - 2.4.9 Link Purpose (Link Only) (AAA) —
identical-links-same-purpose - 3.2.5 Change on Request (AAA) —
meta-refresh-no-exceptions - 4.1.1 Parsing — removed in WCAG 2.2, but axe-core still reports
duplicate-id,duplicate-id-activeagainst it. A result citing 4.1.1 is not evidence of a 2.2 failure.
Where this table comes from
The criteria, their levels and the plain-language summaries are written by us and link to the W3C's own Understanding documents, which are the authority. The coverage column is computed: a criterion is marked partly detectable when axe-core 4.12.1 ships a rule tagged with it, so this page gets more accurate whenever axe does, and a test fails the build if axe references a criterion this reference does not document.
What a Skiplink scan does and does not tell you is the same argument in prose.