Website Accessibility Audit
Overview
Comprehensive accessibility audit: automated checks (contrast, ARIA, keyboard nav, focus indicators, form labels), manual testing guidance, WCAG 2.2 conformance levels (A/AA/AAA), remediation prioritization, and compliance reporting.
When to Use
- "Make my website accessible"
- "Run a WCAG compliance check"
- "Check my site for accessibility issues"
WCAG 2.2 Conformance Levels
| Level |
Requirement |
Target |
| A |
Minimum accessibility — must pass for basic use |
Legal minimum in many jurisdictions |
| AA |
Acceptable for most users — all new sites should target |
Industry standard, ADA compliance |
| AAA |
Highest level — best effort only (rarely possible site-wide) |
Luxury goal, not practical for all content |
Automated Checks (use axe DevTools, Lighthouse, or WAVE)
Color & Contrast
Keyboard Navigation
Images & Media
Forms & Input
ARIA
Manual Testing (do at least 2)
- Screen reader test: Navigate the page with VoiceOver (macOS) or NVDA (Windows) using only keyboard
- Zoom test: Zoom to 200% — no content should be cut off or overlapping
- Reduced motion: Enable "Reduce motion" in OS — animations should pause or simplify
- High contrast mode: Windows High Contrast Mode — all information must still be visible
- No CSS test: Disable CSS — content must be readable in logical order
Remediation Prioritization
| Priority |
Impact |
Example |
Timeline |
| 🔴 Critical |
Blocks access entirely |
No alt text on essential images, keyboard trap |
Immediate |
| 🟡 High |
Severe usability barrier |
Low contrast text, missing form labels |
Within 1 week |
| 🔵 Medium |
Frustrating but workable |
Missing skip nav, auto-playing video |
Within 1 month |
| ⚪ Low |
Nice-to-have |
AAA contrast on decorative elements, ARIA optimizations |
Next sprint |
Common Pitfalls
- Relying only on automated tools — automated checks catch ~30% of issues. Manual testing is essential.
- Placeholder-only labels — placeholder text disappears on input; use real
<label> elements
- ARIA overuse — "ARIA is for when HTML is wrong" — fix HTML first, ARIA only as supplement
- Focus style removal —
outline: none without replacement is the #1 keyboard accessibility failure
- Accessibility as a one-time fix — audit with every major feature release
Verification Checklist
1---2name: website-accessibility-audit3description: Use when auditing site accessibility. WCAG, a11y.4license: MIT5---67# Website Accessibility Audit89## Overview10Comprehensive accessibility audit: automated checks (contrast, ARIA, keyboard nav, focus indicators, form labels), manual testing guidance, WCAG 2.2 conformance levels (A/AA/AAA), remediation prioritization, and compliance reporting.1112## When to Use13- "Make my website accessible"14- "Run a WCAG compliance check"15- "Check my site for accessibility issues"1617## WCAG 2.2 Conformance Levels18| Level | Requirement | Target |19|-------|-------------|--------|20| A | Minimum accessibility — must pass for basic use | Legal minimum in many jurisdictions |21| AA | Acceptable for most users — all new sites should target | Industry standard, ADA compliance |22| AAA | Highest level — best effort only (rarely possible site-wide) | Luxury goal, not practical for all content |2324## Automated Checks (use axe DevTools, Lighthouse, or WAVE)2526### Color & Contrast27- [ ] Text-to-background contrast ratio ≥ 4.5:1 (AA normal text) / ≥ 3:1 (AA large text)28- [ ] Non-text content (icons, charts) contrast ≥ 3:129- [ ] Focus indicator contrast (visible keyboard focus) ≥ 3:130- [ ] No information conveyed by color alone (red = error only)31- Tool: `web_extract` the page, then check inline styles for color usage. Better: use axe-cli.3233### Keyboard Navigation34- [ ] All interactive elements reachable with Tab key35- [ ] Tab order follows visual order (logical DOM order)36- [ ] Focus is visible on every interactive element37- [ ] No keyboard traps (can Tab in and Tab out)38- [ ] Skip navigation link present (first focusable element)3940### Images & Media41- [ ] All `<img>` have meaningful alt text (or `alt=""` for decorative)42- [ ] Complex images (charts, infographics) have long descriptions43- [ ] Video content has captions (pre-recorded) / transcripts (audio)44- [ ] No auto-playing video/audio (or has a pause mechanism)4546### Forms & Input47- [ ] Every input has a visible `<label>` (not placeholder-only)48- [ ] Error messages are associated with inputs via `aria-describedby`49- [ ] Required fields indicated visually AND programmatically (`required` or `aria-required`)50- [ ] Autocomplete attributes on common fields (`name`, `email`, `address`)5152### ARIA53- [ ] ARIA landmarks used (`<nav>`, `<main>`, `<footer>`, `<aside>`)54- [ ] ARIA is not used to fix bad HTML (fix the HTML first)55- [ ] ARIA roles, states, and properties are valid and correctly applied56- [ ] Dynamic content has `aria-live` regions (polite for most updates)5758## Manual Testing (do at least 2)591. **Screen reader test**: Navigate the page with VoiceOver (macOS) or NVDA (Windows) using only keyboard602. **Zoom test**: Zoom to 200% — no content should be cut off or overlapping613. **Reduced motion**: Enable "Reduce motion" in OS — animations should pause or simplify624. **High contrast mode**: Windows High Contrast Mode — all information must still be visible635. **No CSS test**: Disable CSS — content must be readable in logical order6465## Remediation Prioritization66| Priority | Impact | Example | Timeline |67|----------|--------|---------|----------|68| 🔴 Critical | Blocks access entirely | No alt text on essential images, keyboard trap | Immediate |69| 🟡 High | Severe usability barrier | Low contrast text, missing form labels | Within 1 week |70| 🔵 Medium | Frustrating but workable | Missing skip nav, auto-playing video | Within 1 month |71| ⚪ Low | Nice-to-have | AAA contrast on decorative elements, ARIA optimizations | Next sprint |7273## Common Pitfalls741. **Relying only on automated tools** — automated checks catch ~30% of issues. Manual testing is essential.752. **Placeholder-only labels** — placeholder text disappears on input; use real `<label>` elements763. **ARIA overuse** — "ARIA is for when HTML is wrong" — fix HTML first, ARIA only as supplement774. **Focus style removal** — `outline: none` without replacement is the #1 keyboard accessibility failure785. **Accessibility as a one-time fix** — audit with every major feature release7980## Verification Checklist81- [ ] Automated scan completed (Lighthouse/axe/WAVE)82- [ ] Contrast ratios checked (all text 4.5:1+ AA)83- [ ] Keyboard navigation tested (Tab through entire page)84- [ ] Alt text on all meaningful images, `alt=""` on decorative85- [ ] Form labels present and associated86- [ ] ARIA landmarks in place87- [ ] Manual test performed (screen reader + zoom 200%)88- [ ] Issues prioritized (critical→high→medium→low)89- [ ] Report generated with specific remediation steps