A plain-English mobile accessibility checklist
Forty-two practical checks for mobile web and native apps, organised by interaction surface, with WCAG 2.2 mappings.

This checklist is the working document we use on mobile audits. It is organised by interaction surface rather than by WCAG criterion, because that is how mobile work actually presents itself: someone hands you a build, and you start at the top of a screen and work down. Each item maps to the relevant WCAG success criteria so you can keep your conformance evidence aligned.
Viewport and zoom
- The viewport meta tag does not include
user-scalable=noormaximum-scalevalues below 5. Disabling zoom is the single most common mobile accessibility failure. - Pinch zoom works on every screen up to at least 200 percent without horizontal scroll bleeding off-canvas (WCAG 1.4.10 Reflow, AA).
- Text remains legible at 200 percent zoom without truncation or overlap.
- The page works in both portrait and landscape orientation, unless a specific orientation is essential for content type (WCAG 1.3.4 Orientation, AA).
Tap targets and gesture alternatives
- All interactive controls are at least 24 by 24 CSS pixels (WCAG 2.5.8 Target Size Minimum, AA), and ideally 44 by 44 (Apple Human Interface Guidelines, Android Material spec, WCAG 2.5.5 AAA).
- Inline links within paragraphs are exempt from the 24-pixel rule but should still have generous tap padding via line-height.
- Adjacent tap targets have at least 8 pixels of spacing to avoid accidental activation.
- Any drag interaction (slider, sortable list, map pan) has a single-tap alternative (WCAG 2.5.7 Dragging Movements, AA).
- Multi-finger gestures are not the only way to perform an action.
- Long-press actions are also available via a tap-revealed menu.
Focus and visible state
- Every interactive control has a visible focus indicator. Default browser focus rings often fail WCAG 2.4.13.
- The focus indicator has at least 3:1 contrast against its surroundings.
- Focused elements are not entirely hidden behind sticky headers, footers, or floating widgets (WCAG 2.4.11 Focus Not Obscured, AA).
- Focus order matches visual order. Modal dialogs trap focus until dismissed.
- Skip links are present and reach the main content area.
Typography and reflow
- Body text is at least 16 pixels at default zoom; smaller secondary text is at least 14 pixels.
- Line height is at least 1.5 for body text and 1.25 for headings (WCAG 1.4.12 Text Spacing, AA).
- Layout reflows to a single column at 320 pixels wide without horizontal scroll bars (WCAG 1.4.10 Reflow, AA).
- Dynamic Type (iOS) and Font size (Android) settings affect content sizing on native apps.
- System bold-text accessibility settings are honoured on native apps.
Forms and input
- Every input has an associated label, either via
<label for>oraria-label. - The keyboard type matches the expected input via
inputmodeandtypeattributes (numeric, email, tel, url). - The
autocompleteattribute is set on personal-information fields (name, email, address, phone) so password managers and form autofill work (WCAG 1.3.5 Identify Input Purpose, AA). - Errors appear inline next to the affected field, and are programmatically associated via
aria-describedby. - Errors are also announced to screen readers via a polite live region, not only displayed visually.
- Required fields are indicated visually and programmatically (
aria-required="true"or HTML5required). - Multi-step forms remember entered values when the user navigates back (WCAG 3.3.7 Redundant Entry, A).
- Login forms allow paste into password fields. Disabling paste is a WCAG 3.3.8 failure for users who rely on password managers.
Media, motion and orientation
- Auto-playing carousels can be paused, stopped, or hidden (WCAG 2.2.2 Pause, Stop, Hide, A).
- Videos have captions for all audio content (WCAG 1.2.2 Captions, A).
- Videos longer than three minutes have an audio description track (WCAG 1.2.5 Audio Description, AA).
- Animations that flash do so at fewer than three flashes per second (WCAG 2.3.1 Three Flashes, A).
- The
prefers-reduced-motionmedia query disables non-essential animation.
Offline, errors and recovery
- Network errors are described in plain language, not via error codes alone.
- Offline state is announced to assistive technology, not only shown via icon.
- Form data is not lost when the connection drops mid-submission.
- Session timeouts give users a chance to extend (WCAG 2.2.1 Timing Adjustable, A) and warn before expiry.
Native app specifics
- Every interactive element has an accessibility label distinct from its visual label where context demands.
- Heading hierarchy is communicated via
accessibilityTraitson iOS andaccessibilityHeadingon Android. - Custom controls expose role, state and value via accessibility APIs.
- Modal screens trap VoiceOver and TalkBack focus until dismissed.
- Dynamic content updates use accessibility announcements rather than relying on visual change alone.
Verification path
Run an automated scan with axe-android or axe-ios as a baseline, then walk through this checklist by hand on a real device with screen reader on. Real devices catch issues that simulators miss, particularly tap target overlap and focus rendering under high-contrast modes.