How to Test Website Accessibility Zoom Layouts with Screenshots
Learn how to check layouts at 200% text size and 400% zoom, capture useful evidence, and verify that content and controls remain usable.
To test website accessibility at 200% or 400% zoom, run two separate checks: enlarge text to 200% for WCAG Success Criterion (SC) 1.4.4, then test reflow at the equivalent of a 320 CSS-pixel-wide viewport for SC 1.4.10. A common setup for the reflow check is a 1280 by 1024 CSS-pixel starting viewport at 400% browser zoom. Capture the default and zoomed states, then operate the page: screenshots document what changed, but they do not prove that controls work or establish WCAG conformance by themselves. See W3C’s explanation of Reflow and its explanation of Resize Text.
How do I test website accessibility at 200% or 400% zoom?
- Choose representative pages and states: a long article, navigation, a form, a dialog, and any page with a table or other complex component. Include content revealed after interactions.
- Record the browser, operating system, viewport dimensions in CSS pixels, page, and state. Browser chrome and operating-system UI reduce usable space, so measure the actual viewport instead of assuming the zoom percentage yields an exact width.
- Capture a baseline screenshot at normal zoom.
- Set browser zoom to 200% and inspect text and functionality as a separate resize-text pass.
- For reflow, start at 1280 by 1024 CSS pixels and zoom to 400%, or use a proportionally reduced setup if the browser cannot zoom that far. Check the actual resulting CSS viewport.
- Inspect the whole page and operate controls. Save a screenshot of the zoomed state and focused screenshots of issues.
- Write down reproduction steps and the affected content or operation; after a fix, repeat the check with the same viewport and zoom.
How can I test whether a website layout reflows when zoomed?
SC 1.4.10 checks whether vertically scrolling content can be presented at a width equivalent to 320 CSS pixels without loss of information or functionality and without requiring scrolling in two dimensions. WAI describes this as corresponding to a 1280 CSS-pixel starting viewport at 400% zoom. The criterion also specifies a 256 CSS-pixel height equivalent for content designed to scroll horizontally. These are CSS-pixel dimensions, not physical screen pixels. The usable viewport varies with browser and operating-system UI. See the WCAG 2.1 text.
At the target size, check that a person can follow ordinary vertically read content without horizontal scrolling back and forth to read lines. Look for clipped text, overlapping regions, obscured content, inaccessible controls, and images or components extending beyond the available layout. Responsive behavior may stack columns, relocate navigation, or adjust images; those changes are acceptable when information and functionality remain available.
Test interaction as well as appearance. Open menus, expand accordions, focus and submit form controls, inspect dialog contents, trigger tooltips, and scroll through content. Pay special attention to fixed or sticky elements that may consume much of the narrow viewport or cover content. WebAIM recommends checking common interactive components through 400% zoom in its Responsive Design and Reflow guidance.
Keep 200% text resize separate from 400% reflow
| Pass | Criterion | Primary check |
|---|---|---|
| Text enlargement to 200% | SC 1.4.4 | Text can be enlarged without loss of content or functionality. |
| Reflow at 320 CSS-pixel equivalent | SC 1.4.10 | Content reflows without loss or two-direction scrolling, subject to the criterion’s exception. |
A quick demonstration at 200% zoom is not, by itself, the SC 1.4.10 reflow test. Keep the notes and screenshots for the two passes distinct so an issue in one does not obscure the result of the other.
What screenshots should I take when checking accessibility zoom?
- Baseline: the normal-zoom page and state.
- 200% resize: the affected content and controls, plus the overall page when useful.
- Reflow target: the 400% zoom state from the documented starting viewport, or the equivalent measured CSS viewport.
- Issue detail: a close view showing a specific overlap, clip, lost control, or changed layout.
Label each capture with page, state, zoom, viewport, browser, operating system, and observed issue. Screenshots are a practical way to compare default and zoomed states and document a bug. WCAG specifies behavior and viewport sizes; the cited criteria do not prescribe a screenshot format or number. A screenshot cannot show whether keyboard or pointer interaction succeeds, so record those checks separately.
Two-dimensional content and exceptions
Some content needs a two-dimensional layout for its use or meaning. WCAG examples include maps, diagrams, video, games, presentations, data tables, and interfaces that need persistent toolbars while a user manipulates content. Assess the specific content that needs both dimensions and explain why; the presence of a map or table does not exempt the entire page. See WAI’s Reflow guidance.
Horizontal scrolling is not automatically a failure in every circumstance. Consider the type of content, its purpose, and the applicable dimension in the criterion. Document why a component requires two-dimensional presentation and check that the rest of the page reflows.
Implementation clues for developers
These W3C techniques are informative examples, not the only valid implementations and not conformance proof on their own:
- C32 demonstrates using media queries and CSS grid to reflow columns. Its procedure checks content and functionality at 400% without scrolling in the perpendicular direction.
- C37 discusses fitting images with
max-widthand height behavior so they stay within available layout space at 400%.
When an issue appears, inspect fixed widths, minimum widths, unbreakable strings, positioned elements, sticky headers, and fixed overlays. Check whether columns and navigation can adapt, whether images fit the available space, and whether dialogs can be fully read and operated at the target viewport. Retest behavior, not just CSS appearance.
Reliable evidence and issue reporting
For each finding, record the URL or page identifier, steps to reach the state, browser and operating system, initial and resulting viewport dimensions in CSS pixels, zoom, and the control or content affected. Attach baseline and zoomed screenshots, and describe the interaction result in words—for example, whether a menu opened and its items could be reached. This makes the evidence reproducible and distinguishes a visual defect from a functionality failure.
Use the same measured viewport and browser setup for the retest after a fix. If results differ across browsers or systems, note each configuration rather than treating one screenshot as universal evidence. These recordkeeping steps are practical documentation recommendations, not additional WCAG requirements. WAI also provides Easy Checks for a first accessibility review; Massachusetts publishes a web and app accessibility testing checklist.
Or skip the browser setup
For capturing a page as an image, ScreenshotNeo is a website screenshot API and MCP server. Its API returns a screenshot or PDF from one GET request. The screenshot call below captures the target page; it does not set browser zoom or replace the manual reflow and interaction checks described above. See the ScreenshotNeo documentation.
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, newsletter popups, and chat widgets are removed before the shot; each cleanup step can be turned off.
- Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed. Response headers report the page verdict and billing status.
- An MCP server lets AI agents, including Claude and Cursor, take screenshots with the
take_screenshottool. - 1,000 screenshots a month are free with no card. Paid plans start at $5 for 3,000 screenshots.
Sign up for 1,000 free screenshots a month, with no card required.
Performance, reliability, and cost notes
Browser zoom testing is a manual inspection task; the key cost is the time to reach representative page states and operate controls. Keep a short, repeatable set of pages and states, and record the environment so later comparisons are useful. A screenshot is a point-in-time record: dynamic content, delayed assets, or a different interaction state can change what it shows.
For API captures, ScreenshotNeo says only clean shots are billed: bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing. It supports caching with a chosen TTL, which can help avoid repeating unchanged captures. Plans are Free (1,000 per month), Starter ($5 for 3,000), Growth ($15 for 15,000), Pro ($39 for 60,000), Scale ($99 for 250,000), and Business ($249 for 1,000,000); yearly billing gives two months free, and all features are on every plan. API screenshots can support documentation, but they do not simulate the user’s browser zoom configuration unless the capture is configured accordingly, and they cannot substitute for operating the interface.
Troubleshooting
| Problem | Likely cause | What to do |
|---|---|---|
| The viewport is not 320 CSS pixels at 400% zoom. | Browser chrome, system scaling, or the starting viewport differs from the assumed setup. | Measure the actual CSS viewport. Adjust the starting viewport or use a proportionally reduced setup, and record the dimensions. |
| A screenshot looks fine, but a control cannot be used. | A static image does not show keyboard or pointer behavior. | Operate the control at the target size and record the interaction result separately. |
| The page scrolls horizontally. | A region may have fixed or minimum width, an unbreakable string, or genuinely two-dimensional content. | Identify the exact region and purpose. Fix unintended overflow; justify and limit any necessary two-dimensional region. |
| A dialog or menu is cut off. | Its positioning or dimensions may not adapt to the narrow viewport, or fixed content may cover it. | Open and operate it at the target size; inspect its scroll behavior and ensure all information and controls remain available. |
| Two captures do not match. | The page state, viewport, browser, system, or dynamic content changed. | Repeat from the same documented setup and state; record any remaining differences. |
| An API capture is blank or shows a bot check. | The site returned a blank page, failed to load, or presented a bot check/CAPTCHA. | Check the returned page verdict and billing headers, then inspect the target page and capture configuration. Such outcomes are not billed under ScreenshotNeo’s stated billing rules. |
FAQ
Does WCAG require screenshots for zoom testing?
No. Screenshots are useful documentation, but the cited criteria define behavior and viewport conditions rather than a required evidence format or count.
Does passing at 400% prove the page meets WCAG?
No single screenshot or technique establishes conformance. Inspect information and functionality, test interactions, and assess any applicable two-dimensional content.
Can I test only the home page?
A home page alone may not expose issues in forms, dialogs, navigation, long content, or complex components. Choose representative pages and interaction states for the site being evaluated.


