WCAG Reference
Web Content Accessibility Guidelines (WCAG) 2.1 are the international standard for web accessibility. These guidelines ensure content is accessible to people with disabilities.POUR Principles
WCAG is organized around four principles:| Principle | Description |
|---|---|
| Perceivable | Information and UI components must be presentable to users in ways they can perceive |
| Operable | UI components and navigation must be operable by all users |
| Understandable | Information and operation of UI must be understandable |
| Robust | Content must be robust enough to be interpreted by a wide variety of user agents, including assistive technologies |
Conformance Levels
| Level | Description | Requirement | Legal Status |
|---|---|---|---|
| A | Basic accessibility features | Minimum | Required by most laws |
| AA | Addresses major accessibility barriers | Standard | Required by ADA, Section 508, EU standards |
| AAA | Highest level of accessibility | Enhanced | Recommended but not always achievable |
Success Criteria by Level
Level A (Minimum)
Perceivable
1.1.1 Non-text Content- All images, icons have text alternatives
- Decorative images use empty alt text
- Provide transcript for audio
- Provide audio description or transcript for video
- Captions provided for all prerecorded audio in video
- Audio description or transcript for prerecorded video
- Information, structure, and relationships conveyed through presentation can be programmatically determined
- Reading order is logical
- Instructions don’t rely solely on shape, size, visual location, orientation, or sound
- Color is not the only visual means of conveying information
- Audio playing automatically for more than 3 seconds has a control to pause/stop
Operable
2.1.1 Keyboard- All functionality available via keyboard
- Keyboard focus can be moved away from any component
- Single-key shortcuts can be turned off, remapped, or only active on focus
- User can turn off, adjust, or extend time limits
- Moving, blinking, scrolling, or auto-updating content can be paused
- No content flashes more than 3 times per second
- Mechanism to bypass repeated blocks of content
- Web pages have descriptive titles
- Focus order is logical and preserves meaning
- Purpose of each link is clear from link text or context
- Multi-point or path-based gestures have single-pointer alternative
- Functions triggered on down-event can be aborted or undone
- Visible label text is part of accessible name
- Functions triggered by motion have UI alternative
Understandable
3.1.1 Language of Page- Default language of page is programmatically determined
- Receiving focus doesn’t trigger unexpected context change
- Changing setting doesn’t automatically cause context change
- Input errors are identified and described in text
- Labels or instructions provided for user input
Robust
4.1.1 Parsing- HTML is well-formed (no duplicate IDs, proper nesting)
- All UI components have accessible name, role, and state
Level AA (Standard)
Perceivable
1.2.4 Captions (Live)- Live audio content has captions
- Audio description provided for all prerecorded video
- Content doesn’t restrict view to single orientation (portrait/landscape)
- Purpose of input fields can be programmatically determined
- Text has minimum 4.5:1 contrast ratio
- Large text (18px+ or 14px+ bold) has 3:1 ratio
| Text Size | Minimum Contrast |
|---|---|
| Normal (< 18px) | 4.5:1 |
| Large (≥ 18px or ≥ 14px bold) | 3:1 |
| UI components | 3:1 |
- Text can be resized to 200% without loss of content or functionality
- Use actual text instead of images of text (except logos)
- Content reflows at 320px width without horizontal scrolling
- UI components and graphical objects have 3:1 contrast
- Content adapts when users adjust text spacing
- Additional content triggered by hover/focus is dismissible, hoverable, persistent
Operable
2.4.5 Multiple Ways- More than one way to find pages (navigation, search, sitemap)
- Headings and labels describe topic or purpose
- Keyboard focus indicator is visible
Understandable
3.1.2 Language of Parts- Language changes within page are marked
- Navigation is consistent across pages
- Components with same functionality use same labels
- Input error corrections are suggested when known
- Submissions are reversible, verified, or confirmed
Robust
4.1.3 Status Messages- Status messages announced to assistive technologies
Level AAA (Enhanced)
Key AAA Criteria
1.4.6 Contrast (Enhanced)- 7:1 for normal text, 4.5:1 for large text
- No images of text (except essential uses)
- All functionality keyboard accessible without timing exceptions
- No time limits on content
- Link purpose determined from link text alone
- Section headings organize content
- Alternative content provided for text requiring advanced reading ability
- All user submissions are reversible, verified, or confirmed
Common ARIA Patterns
Buttons
Links
Form Fields
Error States
Navigation
Modals
Live Regions
Testing Tools
| Tool | Type | URL |
|---|---|---|
| axe DevTools | Browser extension | deque.com/axe |
| WAVE | Browser extension | wave.webaim.org |
| Lighthouse | Built into Chrome | DevTools → Lighthouse |
| NVDA | Screen reader (Windows) | nvaccess.org |
| VoiceOver | Screen reader (Mac) | Built into macOS (⌘ + F5) |
| Colour Contrast Analyser | Desktop app | tpgi.com |
| axe-core CLI | Command line | npm install @axe-core/cli -g |
Screen Reader Commands
| Action | VoiceOver (Mac) | NVDA (Windows) |
|---|---|---|
| Start/Stop | ⌘ + F5 | Ctrl + Alt + N |
| Next item | VO + → | ↓ |
| Previous item | VO + ← | ↑ |
| Activate | VO + Space | Enter |
| Headings list | VO + U | H / Shift + H |
| Links list | VO + U, then arrows | K / Shift + K |
Testing Checklist
Automated Testing
Manual Testing
- Keyboard navigation: Tab through page, use Enter/Space to activate
- Screen reader: Test with VoiceOver (Mac) or NVDA (Windows)
- Zoom: Content usable at 200% zoom
- High contrast: Test with Windows High Contrast Mode
- Reduced motion: Test with
prefers-reduced-motion: reduce - Focus order: Logical and follows visual order
- Color contrast: Check with Colour Contrast Analyser
Common Issues by Impact
Critical (Fix Immediately)
- Missing form labels
- Missing image alt text
- Insufficient color contrast
- Keyboard traps
- No focus indicators
Serious (Fix Before Launch)
- Missing page language
- Missing heading structure
- Non-descriptive link text
- Auto-playing media
- Missing skip links
Moderate (Fix Soon)
- Missing ARIA labels on icons
- Inconsistent navigation
- Missing error identification
- Timing without controls
- Missing landmark regions