What is WCAG 2.1 (and why it matters)
The Web Content Accessibility Guidelines (WCAG) 2.1, published by the W3C in June 2018, is the current de-facto accessibility standard cited in US ADA case law, the EU's European Accessibility Act, and Section 508 (US federal procurement). WCAG 2.2 (October 2023) is a superset; conforming to 2.1 AA gets you most of the way to 2.2 AA.
WCAG defines three conformance levels:
- Level A — minimum, basic accessibility. 30 criteria in WCAG 2.1.
- Level AA — addresses major barriers. 20 additional criteria. This is the level cited in nearly every US legal context (ADA Title II 2024 rule, Title III settlements, Section 508 Refresh).
- Level AAA — the highest conformance level. Not required for general conformance; some criteria are infeasible for all content.
This checklist focuses on Level A + AA, the 50 criteria most teams need to verify.
1. Perceivable
Information and UI components must be presentable in ways users can perceive.
1.1 Text alternatives
- 1.1.1 Non-text Content (A) — Every non-text element (images, icons, charts) has a text alternative. Decorative images use
alt=""; informative images describe the content; functional images describe the action.
1.2 Time-based media
- 1.2.1 Audio-only and Video-only (Prerecorded) (A) — Transcript for audio; transcript or audio-description for video.
- 1.2.2 Captions (Prerecorded) (A) — Captions for all prerecorded audio in synced media.
- 1.2.3 Audio Description or Media Alternative (Prerecorded) (A) — Audio description or full media alternative for prerecorded video.
- 1.2.4 Captions (Live) (AA) — Captions for live audio.
- 1.2.5 Audio Description (Prerecorded) (AA) — Audio description for prerecorded video.
1.3 Adaptable
- 1.3.1 Info and Relationships (A) — Structure conveyed visually is programmatically determinable. Headings use
<h1>-<h6>; lists use<ul>/<ol>; tables use<th>with scope. - 1.3.2 Meaningful Sequence (A) — Reading order is programmatically determinable.
- 1.3.3 Sensory Characteristics (A) — Instructions don't rely solely on shape, color, size, or position.
- 1.3.4 Orientation (AA) — Content works in portrait and landscape.
- 1.3.5 Identify Input Purpose (AA) — Form fields use
autocompletefor known input purposes (name, email, address).
1.4 Distinguishable
- 1.4.1 Use of Color (A) — Color is not the only means of conveying information.
- 1.4.2 Audio Control (A) — Auto-playing audio > 3s has a pause/stop/volume control.
- 1.4.3 Contrast (Minimum) (AA) — Text contrast ratio 4.5:1 (3:1 for large text 18pt+ or 14pt bold+). The most common WCAG failure.
- 1.4.4 Resize Text (AA) — Text can be resized up to 200% without loss of content or function.
- 1.4.5 Images of Text (AA) — Use text instead of images of text, except for logos.
- 1.4.10 Reflow (AA) — Content reflows at 320 CSS px width without horizontal scroll.
- 1.4.11 Non-text Contrast (AA) — UI components and graphics have 3:1 contrast against adjacent colors.
- 1.4.12 Text Spacing (AA) — Content adapts to user-overridden line/word/letter spacing.
- 1.4.13 Content on Hover or Focus (AA) — Tooltips and popovers are dismissable, hoverable, and persistent.
2. Operable
UI components and navigation must be operable.
2.1 Keyboard accessible
- 2.1.1 Keyboard (A) — All functionality is keyboard-operable.
- 2.1.2 No Keyboard Trap (A) — Focus can move away from any component using only the keyboard.
- 2.1.4 Character Key Shortcuts (A) — Single-character shortcuts can be turned off, remapped, or activate only on focus.
2.2 Enough time
- 2.2.1 Timing Adjustable (A) — Users can extend, adjust, or disable time limits.
- 2.2.2 Pause, Stop, Hide (A) — Moving, blinking, scrolling, or auto-updating content can be paused.
2.3 Seizures
- 2.3.1 Three Flashes or Below Threshold (A) — Content does not flash > 3 times per second.
2.4 Navigable
- 2.4.1 Bypass Blocks (A) — Mechanism to skip repeated content (skip-to-content link).
- 2.4.2 Page Titled (A) — Each page has a descriptive
<title>. - 2.4.3 Focus Order (A) — Focus order preserves meaning and operability.
- 2.4.4 Link Purpose (In Context) (A) — Link text alone or with context describes its purpose.
- 2.4.5 Multiple Ways (AA) — More than one way to locate a page (nav + search + sitemap).
- 2.4.6 Headings and Labels (AA) — Headings and labels describe topic or purpose.
- 2.4.7 Focus Visible (AA) — Keyboard focus indicator is visible.
2.5 Input modalities
- 2.5.1 Pointer Gestures (A) — Multipoint or path-based gestures have a single-pointer alternative.
- 2.5.2 Pointer Cancellation (A) — Actions are completed on the up-event, with abort/undo possible.
- 2.5.3 Label in Name (A) — Accessible name matches the visible label text.
- 2.5.4 Motion Actuation (A) — Motion-triggered functions have alternatives and can be disabled.
3. Understandable
Information and operation of the UI must be understandable.
3.1 Readable
- 3.1.1 Language of Page (A) —
html lang="en"(or appropriate language) is set. - 3.1.2 Language of Parts (AA) — Parts in a different language are marked with
lang.
3.2 Predictable
- 3.2.1 On Focus (A) — Focus does not trigger a context change.
- 3.2.2 On Input (A) — Input does not trigger a context change unless announced.
- 3.2.3 Consistent Navigation (AA) — Navigation appears in the same relative order across pages.
- 3.2.4 Consistent Identification (AA) — Components with the same functionality are identified consistently.
3.3 Input assistance
- 3.3.1 Error Identification (A) — Errors are identified and described to the user.
- 3.3.2 Labels or Instructions (A) — Labels or instructions are provided for user input.
- 3.3.3 Error Suggestion (AA) — Error suggestions are provided when known.
- 3.3.4 Error Prevention (Legal, Financial, Data) (AA) — For legal/financial transactions, submissions are reversible, checked, or confirmed.
4. Robust
Content must be robust enough to be reliably interpreted by user agents, including assistive technologies.
- 4.1.1 Parsing (A) — Obsolete in WCAG 2.2. Markup is well-formed.
- 4.1.2 Name, Role, Value (A) — UI components have a programmatic name, role, and value.
- 4.1.3 Status Messages (AA) — Status messages can be programmatically determined (ARIA live regions).
The 10 most common WCAG 2.1 failures
From AccessProof scans across thousands of US sites in 2024-2025, these are the recurring failure patterns:
- Color contrast (1.4.3) — Light gray text on white, button text below 4.5:1 ratio.
- Missing alt text (1.1.1) — Product images, icons, decorative graphics without alt or with
alt="image". - Form inputs without labels (3.3.2) —
placeholderused as label; missing<label for=>linkage. - Focus visible (2.4.7) —
outline: noneapplied without a custom focus indicator. - Heading hierarchy (1.3.1) —
<h1>missing or skipped levels (h1 → h3). - Link purpose (2.4.4) — "Click here", "Read more", or "Learn more" used as link text.
- Keyboard traps in modals (2.1.2) — Custom modal dialogs that trap focus or don't restore it.
- Non-text contrast (1.4.11) — Form input borders, button outlines below 3:1.
- Skip links (2.4.1) — No skip-to-content link, or skip link hidden incorrectly.
- Status messages (4.1.3) — Cart updates, error toasts not announced to screen readers.
An automated AccessProof scan flags these in 42 seconds with per-element selectors.
How to test each criterion
Each WCAG criterion has automated, semi-automated, or manual testing methods. Roughly 30-40% are reliably automatable; the rest require manual review.
- Automated (axe-core, AccessProof) — color contrast, alt text presence, ARIA validity, parsing, basic keyboard order, link/button accessible names.
- Semi-automated — focus visibility (automated detects missing outline; manual confirms quality), heading hierarchy (automated catches skips, manual confirms meaning).
- Manual only — captions accuracy, cognitive load, language-of-parts marking, motion-actuation alternatives, error-prevention workflows.
The right testing workflow is: run automated scans on every commit (AccessProof in CI), manual screen-reader + keyboard testing per major release, and accessibility-aware design review for new components.