Accessibility Review
Review a component or page for WCAG 2.1 compliance, covering contrast, keyboard navigation, screen readers, and motion.
When to Use
- Before shipping a new component or page
- During design reviews to catch issues early
- As part of a quarterly accessibility audit
- When retrofitting accessibility into existing components
The Prompt
Review this component for WCAG 2.1 AA compliance. Be thorough and specific.
Check:
1. **Color contrast** — Do all text/background pairs meet 4.5:1 (normal text) and 3:1 (large text)? Check every state: default, hover, active, disabled, focus, error.
2. **Keyboard navigation** — Can every interactive element be reached via Tab? Is the focus order logical? Are there keyboard traps?
3. **Screen readers** — Are ARIA roles, labels, and live regions correct? Will state changes be announced?
4. **Focus indicators** — Is focus visible in all states? Does it meet the 3:1 contrast requirement against adjacent colors?
5. **Touch targets** — Are interactive areas at least 44x44px?
6. **Motion** — Does the component respect prefers-reduced-motion? Are animations under 5 seconds?
7. **Content** — Are error messages descriptive? Are form labels associated? Is alt text meaningful?
For each issue, provide:
- The WCAG criterion number and level (e.g., 1.4.3 AA)
- What's wrong
- How to fix it
- Severity: Critical / Major / Minor
Here's the component:
[paste code or describe the component]
Example Output
## Accessibility Review: Login Form
### Critical (2)
1. **Error message not associated with input** — WCAG 1.3.1 (A)
The error text below the email field is a plain <span>. Screen readers
won't connect it to the input.
Fix: Add aria-describedby on the input pointing to the error span's id.
2. **Disabled submit button has no visible focus ring** — WCAG 2.4.7 (AA)
When Tab reaches the disabled button, there is no visual indicator.
Fix: Add a focus style even on disabled buttons, or remove them from
tab order with tabindex="-1".
### Major (1)
1. **Password field contrast in error state** — WCAG 1.4.3 (AA)
Red error border (#E53E3E) on white background passes, but the
placeholder text (#A0AEC0) on white is only 2.7:1.
Fix: Darken placeholder to at least #6B7280 (4.6:1).
### Minor (1)
1. **Loading spinner has no aria-live announcement** — WCAG 4.1.3 (AA)
When the form submits, a spinner appears but screen readers are silent.
Fix: Add aria-live="polite" with text like "Signing in, please wait."