A practical WCAG 2.1 checklist for auditing web apps. It guides developers, designers, and QA through color contrast, keyboard support, ARIA, form labeling, focus management, and screen reader testing. Use it to find, fix, and document accessibility issues during development or before release.
Progress
0 / 18
Provide accessible names for custom controls
Add aria-label or aria-labelledby to icons and custom widgets
Use semantic HTML headings and landmarks
Structure pages with h1-h6 and main/nav/header/footer
Implement ARIA roles only when necessary
Prefer native elements; use ARIA for complex widgets
Manage focus after DOM updates
Move focus into dialogs and to error summaries after actions
Ensure dynamic content is announced
Use ARIA live regions or role=status for async updates
Test with screen readers
Try key flows with NVDA, VoiceOver (mac/iOS), or TalkBack (Android)
Conduct mobile accessibility testing
Test touch targets, zoom, contrast, and mobile screen readers
Fix issues found by automated scan
Address high-severity defects first, then lower-priority items
Re-run automated scan to verify fixes
Confirm automated tool reports cleared issues and no regressions
Document remaining known issues and exceptions
Record WCAG waivers, outstanding bugs, and remediation plans
Run automated accessibility scan — Use tools like axe, Lighthouse, or WAVE to catch common WCAG issues
Check color contrast ratios — Verify text and UI contrast meets WCAG AA (4.5:1) or project target
Verify keyboard-only navigation — Ensure all functionality works without a mouse
Tab through all interactive elements — Confirm focus order follows logical reading order
Ensure visible focus indicators — Keep clear focus styles for links, buttons, and inputs
Test skip links and logical tab order — Provide skip-to-content and avoid keyboard traps
Provide descriptive alt text for images — Write functional alt for informative images; use empty alt for decorative
Label form controls clearly — Associate <label> or aria-labelledby with each input
Provide accessible names for custom controls — Add aria-label or aria-labelledby to icons and custom widgets
Use semantic HTML headings and landmarks — Structure pages with h1-h6 and main/nav/header/footer
Implement ARIA roles only when necessary — Prefer native elements; use ARIA for complex widgets
Manage focus after DOM updates — Move focus into dialogs and to error summaries after actions
Ensure dynamic content is announced — Use ARIA live regions or role=status for async updates
Test with screen readers — Try key flows with NVDA, VoiceOver (mac/iOS), or TalkBack (Android)
Conduct mobile accessibility testing — Test touch targets, zoom, contrast, and mobile screen readers
Fix issues found by automated scan — Address high-severity defects first, then lower-priority items
Re-run automated scan to verify fixes — Confirm automated tool reports cleared issues and no regressions
Document remaining known issues and exceptions — Record WCAG waivers, outstanding bugs, and remediation plans