Accessibility for designers
Baseline: WCAG 2.2, target Level AA.
If you’re a engineer, you use a technical version of accessibility guidelines.
Interactive elements
Buttons vs links
- Button: performs action on current page (submit, toggle, open modal)
- Link: navigates to new URL or resource
Labels
- Every interactive element needs a visible label
- Icon-only buttons need a text label for screen readers (note in design specs)
- Provide clear instructions when input requires specific format
Color and contrast
Text contrast (against background)
- Normal text (16px): minimum 4.5:1
- Large text (18px+ or 14px+ bold): minimum 3:1
- Disabled elements: exempt
Non-text contrast
- UI components, icons, input borders: minimum 3:1 against adjacent colors
- Disabled elements: exempt
Don't rely on color alone
- Supplement with icons, text labels, or patterns
- Example: error state needs red color + error icon + error message
Focus states
- Design visible focus indicator for all interactive elements
- Focus outline must have sufficient contrast against all backgrounds
- Never remove focus outlines without replacement
Structure
Headings
- Use h1–h6 to create logical hierarchy
- Don't skip levels (h1 → h3 is wrong, use h1 → h2 → h3)
- Visual size doesn't dictate heading level
Page title
- Every page needs descriptive title (browser tab)
- Main h1 should match or be similar to page title
Images
- Meaningful images: need descriptive alt text (note in design specs)
- Decorative images: mark as decorative (empty alt)
Hover/focus content (tooltips, popovers)
Avoid hiding critical content behind hover. If unavoidable:
- Must appear on both hover and keyboard focus
- User can dismiss without moving pointer
- Content stays visible until user dismisses
- Pointer can move over revealed content without it disappearing
Consistency
- Same action = same label across all screens
- Don't mix "Save" and "Confirm" for identical actions
- Navigation looks and works identically everywhere
Responsive and text
Text resizing
- Content must work at 200% text zoom
- No broken layouts or cut-off text
Reflow
- Content works without horizontal scroll at 320px width
- Exception: data tables that require 2D layout
Text spacing
- Design must tolerate increased line-height, letter-spacing, word-spacing
Touch targets
Minimum size
- Interactive targets: at least 24×24 CSS px
- If smaller: 24px circle around target must not overlap adjacent targets
Gestures
- Multipoint gestures (pinch, swipe) need single-tap alternative
- Drag interactions need non-drag alternative (buttons, arrows)
Logical order
- Tab order follows visual reading order
- Primary actions are reachable where users expect them
- Modals trap focus inside until closed, then return focus to trigger
Error states
- Errors clearly visible (not just color)
- Error message near the input or referencing it by name
- Message explains the problem and how to fix it