ScreenshotNeo

BlogGuides

Mobile Accessibility: Best Practices for Accessible Apps and Websites

Build accessible mobile websites and apps with practical WCAG 2.2 guidance for layouts, touch, forms, assistive technology, and testing.

By the ScreenshotNeo team4 October 202611 min read

Accessible mobile experiences let people perceive content, operate controls with different input methods, understand what is happening, and complete tasks reliably with assistive technology and platform settings. Apply WCAG 2.2 to mobile websites and apps, then account for the differences between web pages, native app screens, and hybrid apps. W3C’s mobile document is useful interpretation, not a separate standard or a complete native-app manual.

This guide turns that framing into design, implementation, and testing decisions. WCAG’s normative success criteria determine conformance; the practical suggestions below help teams build and evaluate experiences against them.

1. What mobile accessibility covers

W3C says mobile accessibility is addressed by existing accessibility standards, including WCAG; it does not publish a separate set of mobile-only guidelines. Mobile use can involve touch, speech, other input methods, small screens, and changing environments such as bright sunlight. Mobile devices also include more than phones and tablets, though this guide focuses on apps and websites. W3C: Mobile Accessibility

WCAG 2.2 applies to web content. W3C’s Guidance on Applying WCAG 2.2 to Mobile Applications discusses native mobile apps, mobile web apps, and hybrid apps containing web components. It is a Group Draft Note with informative guidance on applying Level A and AA criteria; it is not itself normative and does not establish conformance.

Implementation What to evaluate
Mobile website or web app Web pages and their content against WCAG 2.2, including keyboard and assistive technology behavior.
Native app App screens and controls, WCAG criteria as applicable, and platform accessibility behavior and guidance.
Hybrid app Both the web content embedded in the app and the native container, navigation, and controls.

For mobile interpretation, a screen or view can be considered analogous to a web page, and a set of screens to a set of pages. This is a useful way to organize an evaluation; it does not mean the draft note alone determines whether a native app is accessible.

2. Start with the user’s task

Choose a representative task such as signing in, booking an appointment, or completing a purchase. Follow it from entry to completion using different input and display conditions. At each step ask four questions:

  1. Can users perceive it? Is text readable at zoom, is information conveyed without relying on color alone, and do images and controls have useful accessible names or alternatives?
  2. Can users operate it? Can a person use keyboard, switch, voice, touch, or assistive technology without a gesture being the only path?
  3. Can users understand it? Are labels, instructions, errors, and changes in state clear and consistent?
  4. Does it work reliably? Do focus, reading order, announcements, orientation, and platform settings remain usable throughout the task?

This task-based view catches issues that a static screen review can miss, such as focus being lost after a dialog closes or an error being visible but never announced.

3. Make layouts work across screen size and orientation

Support reflow and zoom

Test ordinary content at narrow widths and increased text size or zoom. Content should remain available without unnecessary two-dimensional scrolling. The exact applicability and exceptions belong to the normative WCAG 2.2 Reflow criterion; do not treat one device width or one visual check as proof of conformance.

  • Use responsive layouts that let text and controls wrap instead of clipping.
  • Check long labels, validation messages, navigation, tables, and dialogs, not only the landing screen.
  • Keep reading and focus order meaningful when columns collapse or content moves.
  • Avoid fixed-height text containers that hide enlarged content.

Preserve orientation choice

WCAG 2.2 criterion 1.3.4, Orientation, generally requires content to work in both portrait and landscape unless a particular orientation is essential. Avoid locking orientation for convenience. Check that rotation does not reset task progress, hide controls, or make a dialog unusable. See the normative Orientation criterion for its scope and exceptions.

Account for real viewing conditions

Small screens and touch do not describe every mobile context. Check contrast and legibility in a bright environment, and ensure essential meaning is not communicated only through subtle color differences, tiny icons, or animation.

4. Make touch and other input methods usable

Size and space targets

WCAG 2.2 criterion 2.5.8, Target Size (Minimum), defines a minimum target-size requirement with listed exceptions. It is not a guarantee that every control of that minimum size is comfortable for every person. Review the normative criterion, then test actual controls for accidental activation, especially adjacent icon buttons, close controls, and inline links.

Where practical, provide room around frequently used controls and make the target cover the visible control. Do not rely on visual spacing alone if the clickable area is smaller or overlaps a neighbor.

Offer alternatives to complex gestures and motion

For an action that requires a multipoint or path-based pointer gesture, WCAG 2.2 criterion 2.5.1 requires a simpler single-pointer alternative where applicable. If users can only pinch, draw a path, or swipe precisely to complete a task, add a clear button or another simple control. See Pointer Gestures.

For actions triggered by device motion, provide an alternative input method and consider the criterion’s exceptions. Do not make shaking or tilting the only way to undo, refresh, or navigate. See Motion Actuation.

Provide a non-dragging way to act

WCAG 2.2 criterion 2.5.7 covers dragging movements and requires a single-pointer alternative where it applies. A reorderable list, map control, or slider should have another way to set the same result, such as move-up/down controls or a numeric input. Check the criterion’s scope and exceptions at Dragging Movements.

5. Make content and controls understandable to assistive technology

Apply the relevant WCAG requirements for text alternatives, relationships, names and roles, focus order, labels, and status messages. On mobile, these fundamentals meet platform APIs: screen readers and other assistive technologies need controls exposed with meaningful names, roles, values, and state.

  • Give every interactive control a concise accessible name that describes its purpose; do not leave icon-only buttons unnamed.
  • Associate form labels and instructions with their controls. A placeholder is not a durable replacement for a label.
  • Expose state changes such as expanded menus, selected tabs, loading results, and validation errors through appropriate semantics and announcements.
  • Keep focus visible and predictable when opening or closing dialogs, changing screens, or updating content.
  • Preserve a sensible reading order when visual layouts reflow.
  • Use platform accessibility APIs and semantic controls instead of custom-drawn controls where possible. Custom controls need equivalent name, role, value, state, and operation behavior.

For native software, WCAG’s web assumptions may not map directly to every control or platform behavior. W3C’s WCAG2ICT guidance explains how WCAG 2 criteria can be applied to non-web documents and software, including mobile and native apps, while cautioning that it does not cover all non-web accessibility needs.

6. Design forms that do not make users repeat work

Make forms work with screen readers, voice input, and touch. Put labels and instructions before or alongside the relevant input, identify required fields clearly, and place errors where users can find them. On submission, summarize errors and move focus appropriately without discarding valid entries.

WCAG 2.2 criterion 3.3.7, Redundant Entry, addresses asking people to re-enter information already provided in the same process when the criterion applies. Preserve previously entered data or offer it as a selectable value instead of requiring another transcription. Review the exact scope and exceptions in Redundant Entry.

7. Test mobile web, native, and hybrid experiences

Use a combination of manual review, assistive technology, automated checks, and testing with people with disabilities. Automated tools can identify some markup and contrast problems, but cannot establish that a complete task is operable or understandable.

  1. Identify the implementation type and scope. List pages, app screens, embedded web views, dialogs, and shared components.
  2. Walk through core tasks. Include success, validation failure, cancellation, loading, empty, and offline or retry states where relevant.
  3. Check display changes. Test narrow widths, enlarged text or zoom, portrait and landscape, and bright viewing conditions.
  4. Use multiple inputs. Try touch and keyboard or switch input; test voice control where available. Include screen-reader navigation on the platforms your users rely on.
  5. Check focus and announcements. Verify control names, roles and states, reading order, error announcements, and focus after navigation and overlays.
  6. Review gestures and targets. Confirm alternatives for complex gestures, motion actions, and dragging where applicable, and inspect target size against WCAG’s criterion.
  7. Record evidence and regressions. Save the affected screen or state, steps to reproduce, expected behavior, actual behavior, assistive technology and platform, and the corresponding criterion or product requirement.

Do not equate passing an automated scan, testing one phone, or following the mobile draft note with full accessibility or legal compliance. WCAG2Mobile covers informative interpretation of selected WCAG 2.2 Level A and AA criteria; it excludes hardware aspects, implementation techniques, and Level AAA, and says it is not sufficient by itself to ensure accessible mobile apps.

8. Troubleshooting common failures

Symptom Likely cause What to change
A control is visible but a screen reader announces only “button” The control has no accessible name, or its icon has no text alternative. Add a concise programmatic name that describes the action; verify it in the platform screen reader.
Text or actions disappear at larger text sizes Fixed dimensions, clipped overflow, or a layout that assumes one font size. Allow content to grow and wrap; retest dialogs, navigation, and form errors with enlarged text.
A task only works with a pinch, precise swipe, or drag The interaction has no simpler pointer alternative. Add a button, stepper, or other single-pointer method that reaches the same outcome; check the relevant WCAG criterion.
Portrait works but landscape loses controls The layout is locked or does not adapt after rotation. Support both orientations unless one is essential; preserve task state and retest after rotation.
Users miss form errors Errors are only shown visually, are not associated with inputs, or focus does not reach a useful summary. Associate error text with the field, announce the change, and provide a predictable route to each invalid field.
Tap activates a neighboring control Targets are too small, too close, or their active areas overlap. Increase target areas and spacing, then test on a touch device. Check WCAG 2.5.8 and its exceptions.
Hybrid app behavior differs between screens Native and embedded web components expose semantics or focus differently. Audit the web view and native container separately, then verify transitions and shared task flow with assistive technology.

9. Capture screenshots as visual review evidence

Screenshots can help teams compare responsive layouts, document a visual regression, or attach a reproducible state to an accessibility issue. They do not show whether a screen reader receives the right name, role, state, and focus order, so combine visual evidence with interaction and assistive-technology checks.

For a mobile web page, use browser emulation or a real device to inspect a chosen viewport and state. A screenshot API can make repeatable visual captures easier; it does not replace accessibility evaluation.

DIY capture with a browser

In Chromium-based Playwright, a viewport capture can be scripted and run locally. Install Playwright and its browser package, save this as capture.mjs, then run node capture.mjs https://example.com. This captures a mobile-sized viewport; adjust the dimensions to match the scenario being reviewed.

import { chromium } from 'playwright';

const target = process.argv[2];
if (!target) throw new Error('Usage: node capture.mjs https://example.com');

const browser = await chromium.launch({ headless: true });
try {
  const page = await browser.newPage({
    viewport: { width: 390, height: 844 },
    deviceScaleFactor: 2,
    isMobile: true,
    hasTouch: true
  });
  await page.goto(target, { waitUntil: 'networkidle', timeout: 60000 });
  await page.screenshot({ path: 'mobile.png', fullPage: true });
} finally {
  await browser.close();
}

Playwright’s networkidle wait may never occur on pages with continuous network activity. If it times out, wait for a meaningful selector or use a deliberate short delay after navigation. A browser screenshot records rendered pixels, not the accessibility tree or assistive technology behavior.

10. Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server. One GET request returns an image or PDF. The request below captures a page; see the ScreenshotNeo documentation for request options.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
  • Cookie banners, popups, and chat widgets are removed before the shot; each cleanup step can be turned off.
  • Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed. Response headers report the page verdict and billing status.
  • An MCP server lets AI agents using Claude, Cursor, or another MCP client take screenshots, get page information, and capture PDFs.
  • 1,000 screenshots per month are free with no card. Paid plans start at $5 for 3,000 screenshots, and every feature is on every plan.

Use screenshots as visual review artifacts and pair them with actual keyboard, touch, and assistive-technology testing. Sign up for 1,000 free screenshots a month with no card.

11. Performance, reliability, and cost considerations

For browser-based capture, launch and close browser processes deliberately, reuse a browser for batches when appropriate, and wait for a task-relevant condition rather than assuming every page reaches network idle. Full-page capture and high device scale factors can produce larger images and take longer to render. Capture only the states needed for review and keep viewport, scale, wait condition, and target page consistent when comparing changes.

ScreenshotNeo offers selectable image formats, viewport and device presets, full-page capture with lazy images loaded, element capture, custom wait conditions, caching with a chosen TTL, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, and a usage API. These options can help fit captures into review pipelines. Only clean shots are billed; cache hits and unsuccessful or blank captures are free. Check response headers for the page verdict and billing status, and consult the docs for current parameters and usage details.

12. Frequently asked questions

Does WCAG 2 address mobile accessibility?

Yes. W3C says mobile accessibility is covered by existing standards including WCAG. Its mobile application document helps interpret WCAG 2.2 in mobile contexts.

Does WCAG apply to native apps?

WCAG is a web content standard, so mapping it to native software needs care. W3C’s WCAG2ICT resource explains application of WCAG 2 to non-web software, while warning that more guidance may be needed for complete non-web accessibility.

How large should touch targets be?

Use WCAG 2.2’s Target Size (Minimum) criterion as the normative reference, including its exceptions. Also test practical spacing and accidental activation for your users and controls.

Can a screenshot prove that an app is accessible?

No. It can document visual presentation at a particular size and state. It cannot establish keyboard operation, screen-reader output, semantics, or successful task completion.

No. Applicable legal obligations depend on jurisdiction and context, which this guide does not assess. Use the relevant standards and obtain appropriate compliance advice for the service in question.

Primary W3C references