Skip to content

Audits

Automated vs manual accessibility testing, criterion by criterion

Every WCAG 2.2 A and AA criterion, with the automated rules mapped to it and what a person still has to test.

Your UX Agent teamProduct
18 min read

Last updated

Automated accessibility testing runs rules against your code and rendered pages. A rule can establish some failures outright, such as an image with no text alternative or text whose contrast is too low. Other problems a rule can only flag for a person to review, and for many criteria there is no automated rule at all: no tool can tell whether your reading order makes sense or your error messages help.

Manual testing, by someone who knows WCAG and uses assistive technology, covers every criterion but costs time. The table below shows, for each WCAG 2.2 Level A and AA criterion, which automated sources check it and what a person still has to check.

Our guide to the website accessibility audit shows where both kinds of testing sit in an audit.

Why we give no percentage

Many articles on this topic lead with a single figure for how much of WCAG automation covers. The published figures disagree widely, because they count different things: some count success criteria, and others, such as Deque’s 2021 study of more than 2,000 audits, count issues by volume across the pages audited. None of them tells you whether a given criterion is tested on your site.

Two more reasons make the figures misleading:

  • A rule that exists is not a criterion covered. axe-core’s image-alt rule fails an image with no text alternative. It cannot tell whether “photo123.jpg” or “image” serves the image’s purpose, which is what 1.1.1 asks. The criterion has a rule, and still needs a person.
  • A pass is not a conformance result. When no rule fails, that means no rule found a failure on the states the scan reached. It does not mean the page meets the criterion.

So we give no total. Read the row for the criterion you care about.

How to read the table

Each row is one WCAG 2.2 success criterion at Level A or AA. The columns:

  • axe-core 4.14 rules: the rules in axe-core, an open-source engine many testing tools build on, tagged with that criterion at version 4.14.0. “Review only” marks a rule that can only flag something for a person, never report a failure. “Experimental” and “deprecated” mark rules axe-core does not run unless a tool turns them on, and target-size is off by default: a tool runs it by selecting axe-core’s WCAG 2.2 checks or turning it on.
  • W3C ACT rules: whether the W3C’s Accessibility Conformance Testing rules include a test procedure for the criterion, and whether axe-core’s implementation is consistent with it, according to the W3C’s implementation report for axe-core. That report covers axe-core 4.14.0, the version these tables cite, runs it with its experimental rules on, and was last updated on 24 October 2026. ACT rules are informative and are not part of WCAG. “Proposed rules only” marks a criterion whose ACT rules are all still proposed, not yet approved by the W3C.
  • Our rules: the rules of ours that our rule catalogue maps to the criterion. “Off by default” marks a rule you have to switch on in your audit settings. By default, every audit we run also uses axe-core’s WCAG A and AA checks alongside these, including target-size, and turns on the experimental css-orientation-lock.
  • What a person still checks: the part of the criterion no rule decides, in short. Even a row full of rules has one.

Our WCAG 2.2 checklist has the code that passes and fails each criterion.

Every A and AA criterion

Perceivable

Criterionaxe-core 4.14 rulesW3C ACT rulesOur rulesWhat a person still checks
1.1.1 Non-text Content (A)aria-meter-name, aria-progressbar-name, image-alt, input-image-alt, object-alt, role-img-alt, svg-img-altYes; axe-core consistent with someimage-altWhether each image, icon and other non-text content has a text alternative that serves its purpose, and whether decorative content is hidden from assistive technology
1.2.1 Audio-only and Video-only (Prerecorded) (A)audio-caption (deprecated, review only)Yes; no consistent axe-core rule (proposed rules only)NoneWhether prerecorded audio-only media has a transcript, and video-only media a transcript or an audio track, that gives the same information, unless the media is a labelled alternative for text
1.2.2 Captions (Prerecorded) (A)video-caption (review only)Yes; no consistent axe-core rule (proposed rules only)NoneWhether captions exist, are in sync and are complete, including speakers and meaningful sounds
1.2.3 Audio Description or Media Alternative (Prerecorded) (A)NoneYes; no consistent axe-core rule (proposed rules only)NoneWhether an audio description or a full text alternative covers what is only shown
1.2.4 Captions (Live) (AA)NoneNone yetNoneWhether live audio in synchronised media has captions
1.2.5 Audio Description (Prerecorded) (AA)NoneYes; no consistent axe-core rule (proposed rules only)NoneWhether visual information missing from the soundtrack is described in audio
1.3.1 Info and Relationships (A)aria-hidden-body, aria-required-children, aria-required-parent, definition-list, dlitem, list, listitem, p-as-heading (experimental), table-fake-caption (experimental), td-has-header (experimental), td-headers-attr, th-has-data-cells (review only)Yes; axe-core consistent with someform-error-not-identified (off by default)Whether structure you can see (headings, lists, tables, groups) is in the markup, and correctly
1.3.2 Meaningful Sequence (A)NoneNone yetNoneWhere the order affects the meaning, whether the order in the code gives the correct reading sequence
1.3.3 Sensory Characteristics (A)NoneYes; no consistent axe-core rule (proposed rules only)NoneWhether instructions rely only on shape, colour, size, position or sound
1.3.4 Orientation (AA)css-orientation-lock (experimental)Yes; axe-core consistentNoneWhether content works in portrait and landscape, unless one orientation is essential
1.3.5 Identify Input Purpose (AA)autocomplete-validYes; axe-core consistentinput-type-mismatchWhether fields that ask for the user’s own details carry the right autocomplete value
1.4.1 Use of Color (A)link-in-text-blockNone yetlink-affordanceWhether colour is the only way something is shown, such as a link, an error or a chart series
1.4.2 Audio Control (A)no-autoplay-audio (review only)Yes; no consistent axe-core rule (proposed rules only)autoplay-audio-uncontrolledWhether audio that plays on its own for more than three seconds can be paused, stopped or turned down separately
1.4.3 Contrast (Minimum) (AA)color-contrastYes; axe-core consistentcontrastWhether text over images or gradients, images of text, placeholder text, and text in hover, focus and error states or in menus, tabs and other content that a scan did not reach, open or measure, meet 4.5:1, or 3:1 for large text, and whether flagged text is exempt as a logo, decoration, part of a disabled control or part of a picture with other significant visual content
1.4.4 Resize Text (AA)meta-viewportYes; axe-core consistent with someNoneWhether text can be resized to 200% without losing content or function
1.4.5 Images of Text (AA)NoneYes; no consistent axe-core ruleNoneWhether text is shown as an image where real text could do the same job
1.4.10 Reflow (AA)NoneNone yet (a 1.4.4 rule lists it as secondary)responsive-overflow, offscreen-interactiveWhether content at 320 CSS pixels wide, or 256 high for content that scrolls sideways, keeps all its information and functions without scrolling in two directions, apart from parts that need a two-dimensional layout
1.4.11 Non-text Contrast (AA)NoneNone yetnon-text-contrastWhether the visual parts needed to identify controls and their states, and the parts of graphics needed to understand the content, reach 3:1 against adjacent colours, apart from disabled controls, controls the browser draws unchanged, and graphics whose particular presentation is essential
1.4.12 Text Spacing (AA)avoid-inline-spacingYes; axe-core consistenttext-spacing-lossWhether content is cut off or overlaps when text spacing is set to the criterion’s values
1.4.13 Content on Hover or Focus (AA)NoneNone yethover-content-unreliableWhether content shown on hover or focus can be dismissed without moving the pointer or focus when it covers other content and is not an error message, can be hovered over, and stays visible until the trigger is removed, it is dismissed or it is no longer valid; browser title tooltips are exempt
WCAG 2.2 Level A and AA criteria under Perceivable: the axe-core 4.14 rules, the W3C ACT rules and our rules for each, and what a person still checks.

Operable

Criterionaxe-core 4.14 rulesW3C ACT rulesOur rulesWhat a person still checks
2.1.1 Keyboard (A)frame-focusable-content, scrollable-region-focusable, server-side-image-map (review only)Yes; axe-core consistent with somekeyboard-focus, keyboard-tab-skipped, clickable-not-focusableWhether every function works from a keyboard without specific timings, custom widgets included, unless it depends on the path of the movement, such as freehand drawing
2.1.2 No Keyboard Trap (A)NoneYes; no consistent axe-core rule (proposed rules only)keyboard-trapWhether keyboard focus can always leave a component, and whether the page says how when that takes more than Tab, the arrow keys or Esc
2.1.4 Character Key Shortcuts (A)NoneYes; no consistent axe-core rule (proposed rules only)NoneWhether single-character shortcuts can be turned off, remapped or limited to when a component has focus
2.2.1 Timing Adjustable (A)meta-refreshYes; axe-core consistentNoneWhether time limits the page sets can be turned off, adjusted or extended, unless they are part of a real-time event, essential, or longer than 20 hours
2.2.2 Pause, Stop, Hide (A)blink, marqueeYes; no consistent axe-core rule (proposed rules only)NoneWhether moving, blinking or scrolling content that starts on its own, lasts more than five seconds and runs beside other content can be paused, stopped or hidden, and whether auto-updating content that starts on its own and runs beside other content can be paused, stopped or hidden, or have its update frequency controlled
2.3.1 Three Flashes or Below Threshold (A)NoneNone yetNoneWhether anything flashes more than three times in one second above the flash thresholds
2.4.1 Bypass Blocks (A)bypass (review only)Yes; axe-core partly consistent (proposed rules only)bypass-mechanism-missingWhether a skip link, landmarks or headings let people bypass repeated blocks
2.4.2 Page Titled (A)document-titleYes; axe-core consistent with somedocument-titleWhether the title describes the page’s topic or purpose
2.4.3 Focus Order (A)NoneNone yetfocus-orderWhether the focus order keeps the meaning and the way the page works
2.4.4 Link Purpose (In Context) (A)area-alt, link-nameYes; axe-core consistent with somelink-text-not-descriptiveWhether each link’s purpose is clear from its text, or from the text with its context
2.4.5 Multiple Ways (AA)NoneNone yetNoneWhether there is more than one way to find a page, except a step in a process
2.4.6 Headings and Labels (AA)NoneYes; no consistent axe-core rule (proposed rules only)NoneWhether headings and labels describe their topic or purpose
2.4.7 Focus Visible (AA)NoneYes; no consistent axe-core rulefocus-indicator-missingWhether every focusable element shows where keyboard focus is
2.4.11 Focus Not Obscured (Minimum) (AA)NoneNone yetfocus-obscuredWhether a focused element is ever entirely hidden by content the page adds, such as a sticky header
2.5.1 Pointer Gestures (A)NoneNone yetNoneWhether multipoint or path-based gestures can also be done with a single pointer, without a path-based gesture
2.5.2 Pointer Cancellation (A)NoneNone yetNoneWhether a single-pointer action does nothing on press, or completes on release and can be aborted before or undone after, or the release reverses what the press did, unless acting on press is essential
2.5.3 Label in Name (A)label-content-name-mismatchYes; axe-core consistent (proposed rules only)NoneWhether a control’s accessible name contains its visible label
2.5.4 Motion Actuation (A)NoneYes; no consistent axe-core rule (proposed rules only)NoneWhether functions worked by moving the device or by gestures at a camera also work from the interface, and whether motion can be turned off, unless the motion is essential or works through an accessibility supported interface
2.5.7 Dragging Movements (AA)NoneNone yetNoneWhether every dragging action can also be done with a single pointer, without dragging
2.5.8 Target Size (Minimum) (AA)target-size (off by default)None yettouch-target-minimumWhether undersized targets the rules flag fall under an exception (enough space around the target, an equivalent control on the same page that meets the criterion, a target in a sentence or sized by the line height of the text around it, a browser default control, or a presentation that is essential or legally required), whether small links the rules skip as inline text really are inline, and whether targets that appear only once something is opened, such as a menu or a dialog, or that a script makes clickable without marking them as controls, are large enough
WCAG 2.2 Level A and AA criteria under Operable: the axe-core 4.14 rules, the W3C ACT rules and our rules for each, and what a person still checks.

Understandable

Criterionaxe-core 4.14 rulesW3C ACT rulesOur rulesWhat a person still checks
3.1.1 Language of Page (A)html-has-lang, html-lang-valid, html-xml-lang-mismatchYes; axe-core consistent with someNoneWhether the declared language is the page’s actual language
3.1.2 Language of Parts (AA)valid-langYes; axe-core consistent with someNoneWhether passages in another language are marked with the right language, apart from proper names, technical terms, words of indeterminate language and words that have become part of the surrounding text
3.2.1 On Focus (A)NoneNone yetfocus-changes-contextWhether moving focus to a component changes the context
3.2.2 On Input (A)NoneNone yetNoneWhether changing a setting changes the context without warning
3.2.3 Consistent Navigation (AA)NoneNone yetconsistent-navigationWhether repeated navigation keeps the same relative order, unless the user changed it, where no rule compared it: the position of blocks such as a search field or a skip link, navigation outside the header, navigation and footer landmarks or inside the main content, navigation of fewer than three links, controls without an address, menus that change from page to page, and pages a scan did not compare
3.2.4 Consistent Identification (AA)NoneNone yetconsistent-identificationWhether components that do the same thing are identified consistently where no rule compared them: buttons and other controls without an address wherever they appear, links outside the repeated header, navigation and footer landmarks or inside the main content, navigation of fewer than three links or that changes from page to page, one address linked from different landmarks, links that do the same thing but go to different addresses, and pages a scan did not compare; whether names that differ still identify the same function consistently; and whether the visible text or icon still identifies the same function where the names match
3.2.6 Consistent Help (A)NoneNone yetNoneWhether help that repeats across pages appears in the same relative order
3.3.1 Error Identification (A)NoneYes; no consistent axe-core rule (proposed rules only)NoneWhether, when an input error is detected automatically, the field in error is identified and the error is described in text
3.3.2 Labels or Instructions (A)form-field-multiple-labels (review only)None yetNoneWhether fields have labels or instructions where input is needed
3.3.3 Error Suggestion (AA)NoneNone yetNoneWhether an error message suggests the correction when one is known, unless that would put security or the purpose of the content at risk
3.3.4 Error Prevention (Legal, Financial, Data) (AA)NoneNone yetNoneWhether submissions that make a legal commitment or a financial transaction, change or delete the user’s stored data, or submit test answers can be reversed, checked for errors or confirmed
3.3.7 Redundant Entry (A)NoneNone yetNoneWhether a process asks again for information already given, instead of filling it in or offering it, unless re-entry is essential, needed for security, or the earlier entry is no longer valid
3.3.8 Accessible Authentication (Minimum) (AA)NoneNone yetaccessible-authenticationWhether signing in, or any step of it, needs a cognitive function test, such as recalling a password or solving a puzzle, with no alternative method and no help such as paste or a password manager; a test that asks only to recognise objects, or to identify a picture, video or audio clip the user gave the site, is allowed
WCAG 2.2 Level A and AA criteria under Understandable: the axe-core 4.14 rules, the W3C ACT rules and our rules for each, and what a person still checks.

Robust

Criterionaxe-core 4.14 rulesW3C ACT rulesOur rulesWhat a person still checks
4.1.2 Name, Role, Value (A)area-alt, aria-allowed-attr, 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 (deprecated), aria-roles, aria-tab-name, aria-toggle-field-name, aria-tooltip-name, aria-valid-attr, aria-valid-attr-value, button-name, frame-title, input-button-name, input-image-alt, label, link-name, nested-interactive, select-name, summary-name, aria-braille-equivalent (review only), duplicate-id-aria (review only), frame-title-unique (review only)Yes; axe-core consistent with somecontrol-label, mobile-menu-state, dialog-stateWhether custom components expose the right name, role, state and value, and changes to them
4.1.3 Status Messages (AA)NoneNone yetstatus-message-not-announced (off by default)Whether status messages carry a role or property, such as a live region, that lets assistive technology announce them without moving focus
WCAG 2.2 Level A and AA criteria under Robust: the axe-core 4.14 rules, the W3C ACT rules and our rules for each, and what a person still checks.

Why tools disagree

Run two tools on the same page and they report different things. Three reasons account for most of it.

  1. How sure a rule has to be. axe-core reports a failure only when its checks are conclusive, and reports “needs review” otherwise. A tool that reports uncertain results as errors shows more of them. Neither approach is wrong, but their totals are not comparable.
  2. What the scan reaches. A rule tests the page in the state the scan sees: usually the first load, at one screen size, with nothing open. Menus, dialogs, error messages, hover and focus states, and the steps of a checkout need a scan that opens them, or a person.
  3. What each rule tests. Two rules for the same criterion can test different things. That is why the W3C publishes ACT rules and reports whether each tool’s implementation is consistent with them.

Where AI-assisted testing fits

Language and vision models can help with the rows a rule cannot decide. A model can point out a text alternative that does not seem to match its image, a link whose text says nothing on its own, or a heading that does not describe its section. Each of those is a candidate for a person to look at, not a result.

A model’s output is judgment. It can be plausible and wrong, and it gives no evidence a rule could repeat. Keep it apart from measured failures: report it as an observation, give it no severity, and never count it as a pass or a fail.

How to combine them

  1. Run the rows with failure rules on every release. Put axe-core or a tool built on it in your build or on a schedule. These checks are cheap to repeat and catch regressions in what a rule can decide. A default axe-core run skips target-size and the experimental and deprecated rules: select axe-core’s WCAG 2.2 checks to run target-size, and turn the others on, if you want their rows.
  2. Have a person triage the review-only results. A “needs review” result is a list of places to look, not a finding.
  3. Test the rest by hand, with assistive technology. Keyboard only, a screen reader with a browser, zoom and text spacing, and a pass through every process from start to finish. That is where much of an audit’s time goes, and fixing the automated failures first leaves more of it for this; see what drives the cost of an audit.
  4. Write down what was not tested. A report that lists only failures leaves the rest unknown. We cover what goes in an audit report, including a result for every criterion.

Frequently asked questions

Can automated testing make a website WCAG compliant?

No. Automated rules decide only part of WCAG, and only for the states a scan reaches. Conformance needs every criterion met, which takes manual testing, including with assistive technology. Whether a law applies, and what it requires, depends on your jurisdiction.

What share of WCAG can automated tools detect?

We give no figure. Published figures count different things and disagree widely, and a rule that exists for a criterion rarely decides all of it. The table shows, per criterion, which rules exist and what a person still checks.

Is AI-based accessibility testing reliable?

As a way to point a person at likely problems, it can help. As a verdict, no: a model’s judgment can be plausible and wrong, and it gives no evidence a rule could repeat. Treat its output as observations.

Which automated tool should we use?

Many tools build on axe-core. Whichever you choose, check which rules it runs and whether it reports review-only results, and run it on every release.

Do we still need manual testing if our scans are clean?

Yes. A clean scan means no rule found a failure on the states it reached. The rows with no rule, and the part of every row no rule decides, need a person.