Any fixed-pixel element wider than 320 CSS px forces low-vision users at 400% zoom to scroll in two dimensions at once, breaking line-by-line reading.
1.4.10 Reflow
In Plain Language
1.4.10 Reflow (Level AA) requires content to be presentable without loss of information or functionality and without requiring scrolling in two dimensions, at a viewport of 320 CSS pixels wide for vertically scrolling content and 256 CSS pixels tall for horizontally scrolling content[1].
The 320 CSS px threshold is the width a 1280 CSS px viewport collapses to at 400% browser zoom -- it approximates the worst-case low-vision reading experience. Any fixed-pixel element wider than that (a 600 px hero image, a 480 px nav menu, a <table> with fixed columns) creates horizontal scrolling that compounds with the vertical scrolling reflowed content already requires. Two-dimensional scrolling makes it nearly impossible to track reading position when zoomed in: every line break forces a pan back to the left margin, and the next line has moved.
Why It Matters
- Low-vision users who zoom to 400% are the primary target population. At that zoom level a desktop viewport shrinks to roughly 320 CSS px of usable width, and any element wider than the viewport forces bidirectional panning that breaks line-by-line reading[1].
- Mobile users on narrow phones inherit the same layout. A 320 CSS px viewport is not hypothetical -- it is the small end of real devices, and a layout that reflows for low-vision desktop zoom also serves small screens without a separate codepath.
- Users with cognitive and learning disabilities benefit from single-direction scrolling because it removes the spatial tracking load of remembering where a line started horizontally while scrolling vertically between lines.
- 1.4.10 is mechanistically distinct from 1.4.4 Resize Text (Level AA), which requires text to scale to 200% without loss of content or functionality[2]. 1.4.4 is a text-only, 200% zoom target; 1.4.10 is a full-layout, 400% zoom target measured as a viewport width. A page can pass 1.4.4 (text scales cleanly) and still fail 1.4.10 (the layout around the text does not reflow).
Examples
Dashboard
View scan results and compliance status
Reports
Download accessibility audit reports
✔ Cards stack vertically at 320px -- no horizontal scroll needed
<!-- Good: auto-fit grid collapses to one column under 320px -->
<div class="card-grid">
<div class="card">...</div>
<div class="card">...</div>
</div>
<style>
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 1rem;
}
</style>
Dashboard
View scan results
Reports
Download audit reports
✘ Fixed 600px row forces horizontal scrolling at 320px
<!-- Bad: width:600px overflows a 320px viewport -->
<div style="width: 600px; display: flex;">
<div class="card">...</div>
<div class="card">...</div>
</div>
<!-- The page now scrolls both ways. At 400% zoom the
second card is off-screen and each reflowed line
requires a pan back to the left margin. -->
- Page
- Homepage
- Issues
- 12 errors, 3 warnings
- Score
- 64/100
✔ Table data presented as stacked cards at narrow widths
<!-- Good: below 320px, row cells become block-level
label/value pairs so the table reflows vertically -->
@media (max-width: 320px) {
table, thead, tbody, tr, th, td {
display: block;
}
td::before {
content: attr(data-label);
font-weight: 600;
}
}
| Page | Errors | Warnings | Score | Last Scan |
|---|---|---|---|---|
| Homepage | 12 | 3 | 64 | 2026-04-01 |
✘ Wide table forces horizontal scrolling -- columns hidden off-screen
How to Fix It
- Build layouts in relative units. Replace fixed pixel widths on containers, grids, and media with
max-widthplus percentage orfrunits. Flexbox and CSS Grid withauto-fit/minmax()collapse to a single column under 320 CSS px without a media query. - Test at a 320 by 256 CSS px viewport. Resize the browser to 320 CSS px wide (or zoom to 400% on a 1280 CSS px window) and walk the page. Every piece of content and every control must be reachable by vertical scrolling only. For any content that intentionally scrolls horizontally (a carousel, a wide code block), confirm the 256 CSS px height target[1].
- Contain wide content in its own scroller. The exception for two-dimensional layout applies to the specific element, not the whole page[1]. A wide data table, a schematic diagram, or a syntax-highlighted code sample can sit inside a
overflow: autowrapper so the element scrolls horizontally while the surrounding page continues to reflow. Do not setoverflow-xon<body>. - Cap media with
max-width: 100%. Images, videos, and<iframe>embeds with intrinsic pixel dimensions overflow narrow viewports unless constrained. A singleimg { max-width: 100%; height: auto; }rule eliminates the most common reflow failure in content-managed pages. - Watch the nav and the footer. Horizontal mega-menus and multi-column footers are the two layout regions most likely to carry fixed widths left over from a desktop-first design. Both need an explicit reflow pattern (collapsed menu, stacked footer columns) under 320 CSS px.
- Know what is exempt -- and what is not. WCAG exempts content that requires two-dimensional layout for use or meaning: data tables, maps, diagrams, video, games, and interfaces with persistent toolbars[1]. The exemption covers the element, not the page around it, and it does not cover layouts that are two-dimensional for visual preference rather than necessity. 1.4.10 is also distinct from 1.4.12 Text Spacing, which tests whether user-applied line-height, paragraph-spacing, letter-spacing, and word-spacing overrides break the layout -- a separate failure mode that a reflow-correct page can still trip.
References
- [1] W3C (2023). Understanding Success Criterion 1.4.10: Reflow. W3C, Accessed 2026-04-07. https://www.w3.org/WAI/WCAG22/Understanding/reflow.html ↩ ↩ ↩ ↩ ↩
- [2] W3C (2023). Understanding Success Criterion 1.4.4: Resize Text. W3C, Accessed 2026-04-07. https://www.w3.org/WAI/WCAG22/Understanding/resize-text.html ↩