Inclusive design guidance for vision, motor, cognitive, and hearing accessibility with WCAG compliance.
Design guidance for creating accessible experiences for all users.
Guidelines for audio content accessibility
Provide closed captions for all pre-recorded audio and video content
Provide real-time captions for live audio content when feasible
Respect system caption style preferences (font, size, color, background)
Position captions to avoid obscuring important visual content
Provide audio descriptions for visual media content
Provide extended audio descriptions when standard descriptions are insufficient
Provide text transcripts for audio-only content
Consider providing sign language interpretation for important video content
Support mono audio for stereo content
Respect system audio balance settings
Ensure audio is compatible with Made for iPhone hearing aids
Consider how app sounds interact with Sound Recognition feature
Ensure app audio works with Background Sounds feature
Provide visual or haptic alternatives for audio cues
Never convey essential information through audio alone
Ensure speech audio has sufficient contrast against background audio
Speech at least 20dB above background
Provide independent volume controls for different audio types
Don't auto-play audio that lasts more than 3 seconds
Support audio ducking so VoiceOver remains audible
Guidelines for cognitive accessibility and clarity
Content should follow a logical reading order for screen readers
Use proper heading hierarchy (H1, H2, H3) for content structure
Use accessibility containers to define landmark regions
Navigation patterns should be consistent throughout the app
UI elements with same functionality should be identified consistently
Clearly identify and describe errors in form fields
Provide suggestions for correcting input errors when possible
Prevent errors through clear instructions and input constraints
Provide clear labels and instructions for user input
Identify the purpose of input fields to enable autofill
Use textContentType property
Focus changes should not automatically trigger unexpected context changes
Changing settings should not cause unexpected context changes
Use clear, simple language for UI text and instructions
Provide expansion for unusual abbreviations on first use
Write content at appropriate reading level for target audience
Aim for lower secondary education level when possible
Provide contextual help for complex tasks
Don't require users to remember information across screens
Show progress for multi-step processes
Warn users before session timeouts and allow extension
Allow users to review and confirm before final submission
Ensure app works properly with Guided Access enabled
Don't require sustained attention for non-essential features
Allow users to defer or dismiss interruptions like notifications
Guidelines for users with motor impairments
Respect Reduce Motion setting by replacing animations with fades or instant transitions
Disable parallax scrolling effects when Reduce Motion is enabled
Use crossfade transitions instead of sliding animations when Reduce Motion is enabled
Respect the Prefer Cross-Fade Transitions setting independently of Reduce Motion
Respect the Auto-Play Animated Images setting for GIFs and animations
Respect the Dim Flashing Lights setting for videos
Content should not flash more than 3 times per second
< 3 flashes/second
All interactive elements need visible focus states for keyboard navigation
Focus order should follow a logical sequence matching visual layout
All functionality must be accessible via keyboard/switch control
Provide keyboard shortcuts for common actions (especially on iPad/Mac)
Avoid conflicts with system keyboard shortcuts
Provide clear way to dismiss keyboard (especially on iPad with hardware keyboard)
Ensure app is fully navigable with Switch Control enabled
Group related UI elements for efficient Switch Control navigation
Ensure all interactive elements work with Voice Control
Accessibility labels should match visible text for Voice Control
Say 'Tap Submit' for button labeled 'Submit'
Support Dwell Control for users who use head tracking or eye tracking
Ensure app works with camera-based head tracking input
Provide hover states for iPadOS and macOS pointer interactions
Allow users to extend or disable time limits for interactions
Don't impose time limits unless essential to the function
Provide undo functionality for destructive or significant actions
Require confirmation for destructive actions
Guidelines for touch-based interactions and target sizes
All tappable elements must be at least 44x44 points
44pt × 44pt
Even small visual elements need 44x44pt tap area
Visual: any size, Tap area: 44pt × 44pt
Maintain adequate spacing between touch targets to prevent accidental activation
8pt minimum between targets
Touch targets on watchOS should be minimum 38x38 points
38pt × 38pt (watchOS)
Provide haptic feedback for important actions, confirmations, and state changes
Use UIFeedbackGenerator appropriately
Use appropriate haptic feedback types for different interactions
Impact (light/medium/heavy), Selection, Notification (success/warning/error)
Provide alternatives to complex gestures like multi-finger swipes or 3D Touch
Provide alternative undo mechanisms beyond shake gesture
Respect system touch accommodations for hold duration
Default: 0.5s, Adjustable via Touch Accommodations
Ensure app works with AssistiveTouch enabled
Support Hold Duration, Ignore Repeat, and Tap Assistance settings
Support cursor/pointer navigation for iPad and Mac Catalyst apps
Provide alternative methods for drag and drop operations
Guidelines for visual accessibility including contrast and text
Normal text (under 18pt) must have minimum 4.5:1 contrast ratio against background
4.5:1 minimum
Large text (18pt+ regular or 14pt+ bold) requires minimum 3:1 contrast ratio
3:1 minimum
For AAA compliance, normal text needs 7:1 and large text needs 4.5:1
7:1 / 4.5:1
UI components and graphical objects need 3:1 contrast ratio against adjacent colors
Focus indicators must have at least 3:1 contrast against background
Links must be distinguishable from surrounding text (not by color alone)
3:1 contrast or underline
Body text should be at least 11pt; never use text smaller than 10pt
11pt minimum body, 10pt absolute minimum
Apps must support Dynamic Type across all text styles
xSmall to AX5 (7 standard + 5 accessibility sizes)
Support the full range of Dynamic Type sizes from xSmall to Accessibility Extra Extra Extra Large
xSmall (14pt) to AX5 (53pt) for Body style
Layouts must adapt gracefully to all Dynamic Type sizes without truncation or overlap
Images and icons should scale proportionally with Dynamic Type settings
Respect the Bold Text accessibility setting throughout the app
Never use color as the only means of conveying information
UI should be usable for users with protanopia (red-blindness)
Affects ~1% of males
UI should be usable for users with deuteranopia (green-blindness)
Affects ~6% of males
UI should be usable for users with tritanopia (blue-blindness)
Affects ~0.01% of population
Test app with system Color Filters enabled (Grayscale, Red/Green, Blue/Yellow)
Respect Reduce Transparency accessibility setting by replacing blur effects with solid colors
Provide higher contrast colors and borders when Increase Contrast setting is enabled
Respect the Differentiate Without Color setting to add shapes to color-coded elements
Correctly handle Smart Invert to avoid double-inverting images and media
Use accessibilityIgnoresInvertColors for media
Ensure app remains usable with Classic Invert enabled
Provide proper Dark Mode support with maintained contrast ratios
All interactive elements must have meaningful accessibility labels
Use accessibilityLabel property
Buttons should have labels describing their action, not their appearance
Good: 'Add to cart' Bad: 'Plus button'
Images need accessibility labels unless purely decorative
Decorative: isAccessibilityElement = false
Provide hints for non-obvious interactions or custom controls
Use accessibilityHint property
Apply appropriate accessibility traits (button, link, header, adjustable, etc.)
Use accessibilityTraits property
Provide current value for adjustable controls like sliders
Use accessibilityValue property
Group related elements into single accessibility containers when appropriate
Use shouldGroupAccessibilityChildren
Provide custom actions for elements with multiple interactions
Use accessibilityCustomActions
Support VoiceOver rotor for navigation by headings, links, and landmarks
Announce dynamic content changes to VoiceOver users
Use UIAccessibility.post(notification:)
Properly handle modal views for VoiceOver navigation
Use accessibilityViewIsModal
Ensure app content remains usable when system Zoom is enabled
Don't place critical UI where Zoom controller typically appears
Support Larger Accessibility Sizes beyond standard Dynamic Type range
AX1 through AX5 sizes
Add underlines or shapes to buttons when Button Shapes is enabled
Show I/O labels on switches when the On/Off Labels setting is enabled
Respect the Auto-Play Video Previews setting