WCAG 2.2 Checklist: Every Level A and AA Criterion
All 55 Level A and AA success criteria in plain words, how to check each one, and which ones a scan can see and which need a person.
This is every WCAG 2.2 Level A and AA success criterion in one list, in the order the standard uses. Each row says what the criterion asks in plain words, how to check it, and whether an automated scan can see the problem or a person has to look. The six criteria added since WCAG 2.1 at these levels are marked New in 2.2, so if you are upgrading an existing audit you know what to re-test.
The source for every criterion and level is the WCAG 2.2 Recommendation. The wording here is a summary; when a client or a manager asks exactly what a criterion requires, link them to its Understanding page from the W3C quick reference.
How to read this checklist
Level AA conformance means meeting every Level A and every Level AA criterion on a page. That is the level most laws and contracts point at, so this list stops there and leaves out AAA.
The last column is the part most checklists skip. It uses three labels:
- Scan finds most: the failure is in the markup or the computed styles, so an automated check catches the common cases. A person still confirms the edge cases.
- Scan finds some: a scan can flag obvious failures (a missing label, an empty link) but cannot judge whether what is there actually works.
- Person: the criterion depends on meaning, behavior over time or media content, so someone has to look.
These labels are a guide to planning the work, not a promise about any tool. The W3C puts it plainly: evaluation tools "can not determine accessibility, they can only assist in doing so". A page that passes every automated check has not been shown to conform. Count the "Person" rows below and you will see why.
One criterion is missing on purpose. 4.1.1 Parsing is marked "obsolete and removed" in WCAG 2.2, because assistive technology no longer parses HTML directly, so there is nothing to test.
1. Perceivable
| Criterion | What it asks | How to check | Who finds it |
|---|---|---|---|
| 1.1.1 Non-text Content (A) | Images, icons and image buttons have a text alternative that does the same job. | Missing alt is easy to detect. Whether the alt describes the image is not: read each one with the image hidden. |
Scan finds some. Alt text checker |
| 1.2.1 Audio-only and Video-only, Prerecorded (A) | A podcast has a transcript; a silent video has a text or audio alternative. | List every media file and look for the alternative. | Person |
| 1.2.2 Captions, Prerecorded (A) | Recorded video with sound has captions. | Play it with captions on. Check accuracy, speaker names and important sounds. | Person |
| 1.2.3 Audio Description or Media Alternative, Prerecorded (A) | What is shown only on screen is available as audio description or a full text alternative. | Listen without watching. Did you miss anything? | Person |
| 1.2.4 Captions, Live (AA) | Live video with sound has captions. | Check the streaming setup before the event, not after. | Person |
| 1.2.5 Audio Description, Prerecorded (AA) | Recorded video has audio description. At AA a text alternative alone is not enough. | Same as 1.2.3, but look for an audio track. | Person |
| 1.3.1 Info and Relationships (A) | Structure you can see is in the markup: headings, lists, tables, form labels. | Scans catch unlabeled inputs, tables without headers and skipped heading levels. A person catches bold text that should be a heading. | Scan finds some. Heading checker, table checker |
| 1.3.2 Meaningful Sequence (A) | The reading order in the code matches the order that makes sense. | Read the page with a screen reader or with CSS turned off. | Person |
| 1.3.3 Sensory Characteristics (A) | Instructions do not rely only on shape, color, size, position or sound. | Read instructions such as "press the green button on the right". | Person |
| 1.3.4 Orientation (AA) | Content works in portrait and landscape. | Rotate a phone on every template. | Person |
| 1.3.5 Identify Input Purpose (AA) | Fields that collect the user's own details carry the right autocomplete value. |
Invalid values are detectable. A person checks that name, email and address fields have one. | Scan finds some. Form checker |
| 1.4.1 Use of Color (A) | Color is not the only way information is shown: links in text, errors, chart series. | Look at the page in grayscale. | Scan finds some |
| 1.4.2 Audio Control (A) | Audio that plays on its own for more than 3 seconds can be paused, stopped or turned down separately from the system volume. | Load the page with sound on. | Person |
| 1.4.3 Contrast, Minimum (AA) | Text has at least 4.5:1 contrast, large text 3:1. | Scans measure text on solid backgrounds. Text on photos and gradients needs a person. | Scan finds most. Color contrast checker |
| 1.4.4 Resize Text (AA) | Text can be zoomed to 200% without losing content or function. | Browser zoom to 200% on each template. | Person |
| 1.4.5 Images of Text (AA) | Real text is used instead of pictures of text, except logos. | Look for banners and buttons that are images with words in them. | Person |
| 1.4.10 Reflow (AA) | At 320 CSS pixels wide, content does not need scrolling in two directions. | Set a 1280 pixel window to 400% zoom. | Person |
| 1.4.11 Non-text Contrast (AA) | Input borders, focus indicators and meaningful icons have 3:1 contrast. | Some component borders can be measured; icons and charts need eyes. | Scan finds some |
| 1.4.12 Text Spacing (AA) | Nothing is cut off when a user increases line, paragraph, letter and word spacing. | Apply the spacing values from the criterion with a bookmarklet. | Person |
| 1.4.13 Content on Hover or Focus (AA) | Tooltips and popovers can be dismissed, hovered and stay until dismissed. | Hover, move the pointer onto the tooltip, press Escape. | Person |
For the contrast rows, the WCAG color contrast ratios guide has the thresholds and the fixes.
2. Operable
| Criterion | What it asks | How to check | Who finds it |
|---|---|---|---|
| 2.1.1 Keyboard (A) | Everything works from a keyboard. | Put the mouse away and use Tab, Enter, Space and the arrow keys. | Scan finds some. Keyboard checker |
| 2.1.2 No Keyboard Trap (A) | Focus can always move away from a component. | Tab into every modal, video player and embed, then out again. | Person |
| 2.1.4 Character Key Shortcuts (A) | Single key shortcuts can be turned off or remapped, or only work when the component has focus. | Type letters on the page outside any field. | Person |
| 2.2.1 Timing Adjustable (A) | Time limits can be turned off, adjusted or extended. | A meta refresh is detectable. Session timeouts and countdowns need a person. | Scan finds some |
| 2.2.2 Pause, Stop, Hide (A) | Moving, blinking or auto-updating content can be paused. | Find carousels, tickers and background video. | Person |
| 2.3.1 Three Flashes or Below Threshold (A) | Nothing flashes more than three times a second, unless below the flash thresholds. | Review video and animation. | Person |
| 2.4.1 Bypass Blocks (A) | There is a way past repeated content: a skip link, landmarks or headings. | A scan sees whether landmarks or a skip link exist. A person checks the skip link works. | Scan finds some. Landmark checker |
| 2.4.2 Page Titled (A) | Each page has a title that says what it is. | Missing titles are detectable; whether "Home" is descriptive is not. | Scan finds some. Page language and title checker |
| 2.4.3 Focus Order (A) | Tab order keeps the meaning and the way the page works. | Positive tabindex is detectable. A person tabs through. |
Scan finds some |
| 2.4.4 Link Purpose, In Context (A) | Each link's purpose is clear from its text or its context. | Empty links are detectable. A person judges "read more" in context. | Scan finds some. Link text checker |
| 2.4.5 Multiple Ways (AA) | Pages can be found more than one way, such as navigation plus search or a site map. | Look at the site as a whole. | Person |
| 2.4.6 Headings and Labels (AA) | Headings and labels describe their topic or purpose. | Empty headings are detectable. A person reads the rest. | Scan finds some |
| 2.4.7 Focus Visible (AA) | Keyboard focus can be seen. | Tab through and watch for the indicator on every control. | Scan finds some |
| 2.4.11 Focus Not Obscured, Minimum (AA) New in 2.2 | A focused element is not entirely hidden by your own content, such as a sticky header or cookie banner. | Tab down a long page with the banner open. | Scan finds some. Keyboard checker |
| 2.5.1 Pointer Gestures (A) | Pinch, swipe and path gestures have a single pointer alternative. | Check maps, sliders and carousels for buttons. | Person |
| 2.5.2 Pointer Cancellation (A) | Actions fire on release, or can be aborted or undone. | Press a button, drag off it, release. | Person |
| 2.5.3 Label in Name (A) | A control's accessible name contains its visible label. | Compare visible text with any aria-label. |
Scan finds some |
| 2.5.4 Motion Actuation (A) | Shake or tilt features have an on-screen alternative and can be turned off. | Look for motion features on mobile. | Person |
| 2.5.7 Dragging Movements (AA) New in 2.2 | Anything done by dragging can also be done with single clicks or taps. | Check sortable lists, sliders and upload areas. | Person |
| 2.5.8 Target Size, Minimum (AA) New in 2.2 | Click targets are at least 24 by 24 CSS pixels, or spaced so that 24 pixel circles centered on small targets do not overlap other targets, with listed exceptions. | Sizes are measurable in a browser. A person checks the exceptions, such as links inside a sentence. | Scan finds most. Target size checker |
Most of the "Person" rows in this section take one sitting with a keyboard. How to test keyboard accessibility by hand walks through it.
3. Understandable
| Criterion | What it asks | How to check | Who finds it |
|---|---|---|---|
| 3.1.1 Language of Page (A) | The html element states the page language. |
Missing or invalid lang is detectable. A person confirms it is the right language. |
Scan finds most. Page language checker |
| 3.1.2 Language of Parts (AA) | Passages in another language are marked with their own lang. |
Look for quotes, product names and language switchers. | Scan finds some |
| 3.2.1 On Focus (A) | Focusing something does not change the context, such as opening a new page. | Tab through and watch. | Person |
| 3.2.2 On Input (A) | Changing a setting does not change the context unless the user was warned. | Try every select menu that might navigate on change. | Person |
| 3.2.3 Consistent Navigation (AA) | Repeated navigation stays in the same order across pages. | Compare templates side by side. | Person |
| 3.2.4 Consistent Identification (AA) | Things that do the same job have the same name everywhere. | Compare search buttons, icons and labels across pages. | Person |
| 3.2.6 Consistent Help (A) New in 2.2 | Help such as contact details or chat appears in the same relative order on every page that has it. | Compare headers and footers across templates. | Person |
| 3.3.1 Error Identification (A) | Input errors are identified and described in text. | Submit every form empty, then with wrong values. | Person |
| 3.3.2 Labels or Instructions (A) | Inputs have labels or instructions. | Missing labels are detectable. A person judges whether they are clear. | Scan finds most. Form checker |
| 3.3.3 Error Suggestion (AA) | When the fix for an error is known, it is suggested. | Read the error messages from 3.3.1. | Person |
| 3.3.4 Error Prevention, Legal, Financial, Data (AA) | Orders, payments and data changes can be reversed, checked or confirmed. | Walk through checkout and account deletion. | Person |
| 3.3.7 Redundant Entry (A) New in 2.2 | Information already given in a process is filled in or selectable, not typed again. | Go through checkout with different billing and shipping steps. | Person |
| 3.3.8 Accessible Authentication, Minimum (AA) New in 2.2 | Logging in does not depend on a memory or puzzle test unless there is another way or help. Allowing paste and password managers is the usual way to meet it. Recognizing objects, as in an image CAPTCHA, is an exception at this level. | Paste into the password field, fill it with a password manager and try any verification code step. | Person |
Forms carry most of this section. Accessible forms: inputs, labels and errors shows the markup.
4. Robust
| Criterion | What it asks | How to check | Who finds it |
|---|---|---|---|
| 4.1.2 Name, Role, Value (A) | Custom controls expose a name, a role and their current state to assistive technology. | Scans catch missing names and invalid ARIA. A screen reader shows whether a custom widget announces its state. | Scan finds most. ARIA checker |
| 4.1.3 Status Messages (AA) | Messages such as "added to cart" are announced without moving focus. | Trigger each message with a screen reader running. | Person |
The usual fix for 4.1.3 is a live region:
<!-- Broken: the message appears, but nothing is announced -->
<div class="cart-message">Added to cart</div>
<!-- Fixed: the container exists on page load, then the text is inserted -->
<div class="cart-message" role="status"></div>
ARIA live regions: role=status and role=alert covers when to use each.
What the split means for your plan
Count the rows. Of the 55 Level A and AA criteria in WCAG 2.2, this checklist marks 5 "scan finds most", 16 "scan finds some" and 34 "person". None can be signed off by a scan alone. That does not make automated checks a small part of the job. The criteria a scan does see, such as alt text, contrast, labels and names, are where many pages fail, and a scan finds them on every page in minutes. The split tells you where to spend the human hours.
When you explain this to a client or a manager, say it in one sentence: "The scan finds the problems a machine can see on every page; a person then checks the things only a person can judge, on a sample of pages."
This checklist is the reference. For the process of running an audit (which pages to pick, in what order, and how to report), use the step by step accessibility audit guide. For the six new criteria in depth, with examples, read WCAG 2.2 new success criteria explained.
Next steps
- Run a free scan on your home page and one template of each type (product, article, form). That clears the "scan finds most" rows and gives you a list for the "scan finds some" ones.
- Do the keyboard pass: every row in section 2 marked "Person" in one sitting.
- Submit every form wrong on purpose and read the errors (3.3.1, 3.3.3, 3.3.7, 3.3.8).
- Check zoom, reflow and text spacing on mobile and desktop (1.4.4, 1.4.10, 1.4.12).
- List every video and audio file and confirm captions, transcripts and description (1.2.1 to 1.2.5).
- Re-test the six New in 2.2 rows on any site last audited against WCAG 2.1.
- Rescan after each release, because a template change can bring back a fixed failure.
Passing all of this is a strong position, but only a full evaluation by someone who knows WCAG can say a page conforms. Every free check above is listed on the checks page.