Skip to content
ScanMeridian

WCAG 2.1 AA checklist

Updated October 25, 2026 ยท The ScanMeridian Team

WCAG 2.1 Level AA has 50 success criteria: 30 at Level A and 20 at Level AA. Our automated scan has rules for 22 of them, and checks each of those only in part. The other 28 need manual testing by a person. This checklist lists every criterion, what it means in plain English, and how it can be tested.

How to read this checklist

  • Partly, by automated rules: our scanner runs axe-core 4.14.0 rules that look for common failures of this criterion. A rule can show that a page fails. It cannot show that a page meets the criterion, so a person still needs to check it.
  • Manual testing only: no automated rule in our scan checks this criterion. Test it by hand, for example with a keyboard and a screen reader.

No criterion is fully covered by our automated rules. Passing every automated rule does not mean a page meets WCAG 2.1 AA. This checklist is a guide, not a legal opinion or a certification. Criterion names link to W3C's "Understanding WCAG 2.1" pages, which explain each one in full.

Criteria our scan checks in part: 1.1.1, 1.2.1, 1.2.2, 1.3.1, 1.3.4, 1.3.5, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.4.12, 2.1.1, 2.2.1, 2.2.2, 2.4.1, 2.4.2, 2.4.4, 2.5.3, 3.1.1, 3.1.2, 3.3.2, 4.1.2.

1. Perceivable

People can see or hear the content, or get it another way. 20 criteria; automated rules check 11 of them in part.

  • 1.1.1 Non-text Content (Level A)

    Images, icons and other non-text content have a text alternative that serves the same purpose.

    Partly, by automated rules. Also needs a person.

    • aria-meter-name: Some meters or gauges have no name
    • aria-progressbar-name: Some progress bars have no name
    • image-alt: Some images have no text description
    • input-image-alt: Some image buttons have no text description
    • object-alt: Some embedded objects have no text description
    • role-img-alt: Some graphics marked as images have no description
    • svg-img-alt: Some icons or graphics have no text description
  • 1.2.1 Audio-only and Video-only (Prerecorded) (Level A)

    Audio-only and video-only recordings have a transcript or an equivalent alternative.

    Partly, by automated rules. Also needs a person.

    • audio-caption: Audio has no captions or transcript
  • 1.2.2 Captions (Prerecorded) (Level A)

    Recorded videos with sound have captions.

    Partly, by automated rules. Also needs a person.

    • video-caption: Videos have no captions
  • 1.2.3 Audio Description or Media Alternative (Prerecorded) (Level A)

    Recorded videos have an audio description or a full text alternative of what is shown.

    Manual testing only.

  • 1.2.4 Captions (Live) (Level AA)

    Live videos with sound have live captions.

    Manual testing only.

  • 1.2.5 Audio Description (Prerecorded) (Level AA)

    Recorded videos have an audio description of important visual information.

    Manual testing only.

  • 1.3.1 Info and Relationships (Level A)

    Structure shown visually, such as headings, lists, tables and form labels, is also in the code.

    Partly, by automated rules. Also needs a person.

    • aria-hidden-body: The whole page is hidden from screen readers
    • aria-required-children: Some lists, menus or tables are missing their inner parts
    • aria-required-parent: Some list or menu items are outside their container
    • definition-list: Some term-and-description lists are built incorrectly
    • dlitem: Some terms or descriptions are outside their list
    • list: Some lists contain items that aren't list items
    • listitem: Some list items are outside a list
    • p-as-heading: Some text looks like a heading but isn't marked as one
    • table-fake-caption: Some tables use a cell as their title
    • td-has-header: Some table cells have no column or row heading
    • td-headers-attr: Some table cells point to headings that don't exist
    • th-has-data-cells: Some table headings don't label any cells
  • 1.3.2 Meaningful Sequence (Level A)

    When the order of content matters, the code presents it in that order.

    Manual testing only.

  • 1.3.3 Sensory Characteristics (Level A)

    Instructions don't rely only on shape, size, position or sound, such as "click the round button".

    Manual testing only.

  • 1.3.4 Orientation (Level AA)

    The page works in both portrait and landscape, unless one orientation is essential.

    Partly, by automated rules. Also needs a person.

    • css-orientation-lock: The page only works in one screen direction
  • 1.3.5 Identify Input Purpose (Level AA)

    Fields that ask for personal information, such as name or email, say what they are for in code, so browsers can autofill them.

    Partly, by automated rules. Also needs a person.

    • autocomplete-valid: Some form fields have autofill hints the browser can't use
  • 1.4.1 Use of Color (Level A)

    Color is not the only way information is shown, such as a red border alone marking an error.

    Partly, by automated rules. Also needs a person.

    • link-in-text-block: Some links inside text are shown by color alone
  • 1.4.2 Audio Control (Level A)

    Audio that plays by itself for more than 3 seconds can be paused or turned down.

    Partly, by automated rules. Also needs a person.

    • no-autoplay-audio: Sound plays automatically
  • 1.4.3 Contrast (Minimum) (Level AA)

    Text has a contrast of at least 4.5:1 with its background, or 3:1 for large text.

    Partly, by automated rules. Also needs a person.

    • color-contrast: Some text is hard to read against its background
  • 1.4.4 Resize Text (Level AA)

    Text can be zoomed to 200% without losing content or features.

    Partly, by automated rules. Also needs a person.

    • meta-viewport: Zooming in is blocked on phones
  • 1.4.5 Images of Text (Level AA)

    Real text is used instead of images of text, except for logos and where the look is essential.

    Manual testing only.

  • 1.4.10 Reflow (Level AA)

    Content fits a 320-pixel-wide screen without scrolling in two directions.

    Manual testing only.

  • 1.4.11 Non-text Contrast (Level AA)

    Controls, focus indicators and meaningful graphics have a contrast of at least 3:1.

    Manual testing only.

  • 1.4.12 Text Spacing (Level AA)

    Content still works when people increase line, letter, word and paragraph spacing.

    Partly, by automated rules. Also needs a person.

    • avoid-inline-spacing: Text spacing is locked in place
  • 1.4.13 Content on Hover or Focus (Level AA)

    Pop-ups that appear on hover or focus can be dismissed, can be hovered, and stay until dismissed.

    Manual testing only.

2. Operable

People can use every control, with a keyboard and without time pressure. 17 criteria; automated rules check 7 of them in part.

  • 2.1.1 Keyboard (Level A)

    Everything can be done with a keyboard alone.

    Partly, by automated rules. Also needs a person.

    • frame-focusable-content: Some embedded frames can't be reached with the keyboard
    • scrollable-region-focusable: Some scrolling boxes can't be scrolled with the keyboard
    • server-side-image-map: The page uses an image map that only works with a mouse
  • 2.1.2 No Keyboard Trap (Level A)

    Keyboard focus never gets stuck inside a part of the page.

    Manual testing only.

  • 2.1.4 Character Key Shortcuts (Level A)

    Single-key shortcuts can be turned off or changed.

    Manual testing only.

  • 2.2.1 Timing Adjustable (Level A)

    Time limits can be turned off, adjusted or extended.

    Partly, by automated rules. Also needs a person.

    • meta-refresh: The page reloads or redirects on a timer
  • 2.2.2 Pause, Stop, Hide (Level A)

    Moving, blinking, scrolling or auto-updating content can be paused, stopped or hidden.

    Partly, by automated rules. Also needs a person.

    • blink: The page uses blinking text
    • marquee: The page uses scrolling marquee text
  • 2.3.1 Three Flashes or Below Threshold (Level A)

    Nothing flashes more than three times in one second.

    Manual testing only.

  • 2.4.1 Bypass Blocks (Level A)

    There is a way to skip blocks that repeat on every page, such as the main menu.

    Partly, by automated rules. Also needs a person.

    • bypass: There is no quick way to skip to the main content
  • 2.4.2 Page Titled (Level A)

    Each page has a title that describes its topic or purpose.

    Partly, by automated rules. Also needs a person.

    • document-title: The page has no title
  • 2.4.3 Focus Order (Level A)

    Keyboard focus moves through the page in an order that keeps the meaning.

    Manual testing only.

  • 2.4.4 Link Purpose (In Context) (Level A)

    The purpose of each link is clear from its text, or from its text and context.

    Partly, by automated rules. Also needs a person.

    • area-alt: Clickable areas of an image map have no text description
    • link-name: Some links have no text
  • 2.4.5 Multiple Ways (Level AA)

    There is more than one way to find a page, such as a menu, search or site map.

    Manual testing only.

  • 2.4.6 Headings and Labels (Level AA)

    Headings and labels describe their topic or purpose.

    Manual testing only.

  • 2.4.7 Focus Visible (Level AA)

    Keyboard users can see which element has focus.

    Manual testing only.

  • 2.5.1 Pointer Gestures (Level A)

    Anything done with a multi-point or path-based gesture can also be done with a single tap or click.

    Manual testing only.

  • 2.5.2 Pointer Cancellation (Level A)

    Actions run when the pointer is released, or can be cancelled, so accidental taps can be undone.

    Manual testing only.

  • 2.5.3 Label in Name (Level A)

    A control's accessible name includes the words shown on it.

    Partly, by automated rules. Also needs a person.

    • label-content-name-mismatch: Some buttons or links have a hidden name that doesn't match their visible text
  • 2.5.4 Motion Actuation (Level A)

    Anything done by shaking or tilting the device can also be done with a control, and can be turned off.

    Manual testing only.

3. Understandable

Content and controls behave in ways people can predict and understand. 10 criteria; automated rules check 3 of them in part.

  • 3.1.1 Language of Page (Level A)

    The page's main language is set in the code.

    Partly, by automated rules. Also needs a person.

    • html-has-lang: The page doesn't say what language it is in
    • html-lang-valid: The page's language setting is not a real language code
    • html-xml-lang-mismatch: The page lists two different languages
  • 3.1.2 Language of Parts (Level AA)

    Passages in another language are marked with that language in the code.

    Partly, by automated rules. Also needs a person.

    • valid-lang: Some text has a language setting that isn't a real language code
  • 3.2.1 On Focus (Level A)

    Moving focus to an element doesn't cause an unexpected change, such as opening a new page.

    Manual testing only.

  • 3.2.2 On Input (Level A)

    Changing a setting, such as a dropdown, doesn't cause an unexpected change unless users are told first.

    Manual testing only.

  • 3.2.3 Consistent Navigation (Level AA)

    Navigation that repeats across pages stays in the same order.

    Manual testing only.

  • 3.2.4 Consistent Identification (Level AA)

    Elements with the same function are labeled the same way across pages.

    Manual testing only.

  • 3.3.1 Error Identification (Level A)

    Input errors are detected and described to the user in text.

    Manual testing only.

  • 3.3.2 Labels or Instructions (Level A)

    Fields that need input have labels or instructions.

    Partly, by automated rules. Also needs a person.

    • form-field-multiple-labels: Some form fields have more than one label
  • 3.3.3 Error Suggestion (Level AA)

    When an input error is found and a fix is known, the fix is suggested.

    Manual testing only.

  • 3.3.4 Error Prevention (Legal, Financial, Data) (Level AA)

    Legal, financial and data submissions can be reversed, checked or confirmed before they are final.

    Manual testing only.

4. Robust

Assistive technology, such as screen readers, can read the page correctly. 3 criteria; automated rules check 1 of them in part.

  • 4.1.1 Parsing (Level A)

    The HTML is well formed, with no duplicate IDs or broken nesting that assistive technology could trip on.

    Manual testing only.

  • 4.1.2 Name, Role, Value (Level A)

    Every control has a name, role and state that assistive technology can read.

    Partly, by automated rules. Also needs a person.

    • area-alt: Clickable areas of an image map have no text description
    • aria-allowed-attr: Some screen reader labels are used on the wrong kind of item
    • aria-braille-equivalent: Braille labels have no matching spoken label
    • aria-command-name: Some custom buttons or menu items have no name
    • aria-conditional-attr: Some screen reader settings don't fit the item they are on
    • aria-deprecated-role: Some items use an outdated type label
    • aria-hidden-body: The whole page is hidden from screen readers
    • aria-hidden-focus: Hidden parts of the page can still be reached with the keyboard
    • aria-input-field-name: Some custom input boxes have no label
    • aria-prohibited-attr: Some items have labels that screen readers will ignore
    • aria-required-attr: Some custom controls are missing required information
    • aria-roledescription: Custom type names are used on items that have no type
    • aria-roles: Some items have a type label that doesn't exist
    • aria-tab-name: Some tabs have no name
    • aria-toggle-field-name: Some custom switches or checkboxes have no label
    • aria-tooltip-name: Some tooltips have no text
    • aria-valid-attr: Some screen reader settings are misspelled
    • aria-valid-attr-value: Some screen reader settings have invalid values
    • button-name: Some buttons have no name
    • duplicate-id-aria: Some labels point to an id that is used more than once
    • frame-title: Some embedded frames have no title
    • frame-title-unique: Several embedded frames have the same title
    • input-button-name: Some form buttons have no text
    • input-image-alt: Some image buttons have no text description
    • label: Some form fields have no label
    • link-name: Some links have no text
    • nested-interactive: Some buttons or links are placed inside other buttons or links
    • select-name: Some drop-down menus have no label
    • summary-name: Some expandable sections have no heading text
  • 4.1.3 Status Messages (Level AA)

    Status messages, such as "Added to cart", are announced to screen readers without moving focus.

    Manual testing only.

What about WCAG 2.2?

WCAG 2.2, published in 2023, adds nine success criteria to WCAG 2.1, such as a minimum size for touch targets and help that stays in the same place. It also removes 4.1.1 Parsing. This checklist and our scan cover WCAG 2.1 A and AA. See WCAG 2.2 at the W3C.

Next steps

Run an automated scan to find the issues a tool can catch, then test the "manual testing only" items on your most important pages. Our guide to automated vs. manual audits explains how to split the work.