Resize Text
Text has to survive being enlarged to 200% without losing content or function, and without assistive technology. Screen magnifier software does not count. A mainstream browser's zoom does, and so does a text-size control you build into the page yourself, which is the route most people forget is available. Captions and images of text are excepted. Most sites pass this by default, since every major browser offers full-page zoom and one working mechanism is enough. What breaks it is something the author did. The commonest of those by a distance is a meta viewport tag carrying user-scalable=no, or a maximum-scale below 2. It ships in a lot of boilerplate, and it blocks pinch-zoom on a phone outright.
Why it matters
Zoom is the accessibility feature almost everyone ends up using, because presbyopia, the gradual loss of close-up focus that comes with age, catches up with nearly everyone who lives long enough. A layout that falls apart at 200% tells older shoppers the site was never built with them in mind, and they are a growing share of who buys online. The half people forget is that the steps on the way up count too. If your zoom offers 125% and 150% before it reaches 200%, nothing may be lost at any of them. Testing only the endpoint can walk straight past the break.
Who this rule protects
Low-vision users who browse at 200% or higher every single day meet the failure before anyone else does. Older users run into it gradually as close focus goes. Anyone on a high-density screen with scaled text, and anyone pinch-zooming a phone, hits the same wall when a page blocks the zoom.
How to check it yourself
- Set the browser zoom to 200% on key pages and complete a real task, such as reading a product page in full or filling out checkout from start to finish.
- Watch for clipped text, elements that overlap each other, and controls that vanish or become impossible to reach once the zoom is applied.
- Step through the zoom levels on the way up rather than only checking the endpoint, because nothing may be lost at 125% or 150% either.
- Check the meta viewport tag. A user-scalable value of no fails, and so does a maximum-scale below 2. What you want to see is neither of them present.
- Look for containers with a fixed height and overflow hidden, absolutely positioned content, and popups sized to their content at the original font size. Those are the three named causes of clipped text.
- Check text-based form controls specifically, meaning inputs, textareas and buttons. Their text can stay put while everything around it grows.
- Text may truncate in a genuinely constrained space, such as a table column or a mail-style list. That is allowed on two conditions. The full text is reachable on focus or activation, and something other than the truncation itself tells the user it is there.
Failures we see most often
- A meta viewport tag carries user-scalable=no, so pinch-zoom is blocked outright on a phone.
- A button with a fixed height clips its own label once the text enlarges at 200% zoom.
- Navigation overlaps the logo at 200% zoom and stops being clickable.
- Text is sized in viewport units as the main way the size is set, so it is tied to the window rather than to the reader's setting and browser zoom does nothing to it. Media queries that step the size up, or an on-page text-size control, can rescue it. Nothing else will.
- A form input keeps its original text size while the page around it enlarges.
- A popup is sized to its content at the default font size, so at 200% the content spills out of the box.
- A heading is clipped by an overflow hidden set on the container it sits in.
Who this one is for
Read from this rule's own note above, so the grouping and the note cannot disagree.
- Low visionpeople who can see the screen but not easily
How this one is tested
We list 2 ACT rules against 1.4.4. Each one defines exactly what a checker looks at, which is how automated tools decide what to flag. Each one also checks a slice, so passing every rule here is not the same as meeting the criterion, and a rule can be proposed rather than approved or need a person to finish it. The note beside each says which.
- Meta viewport allows for zoomA tool can check this
- Zoomed text node is not clipped with CSS overflowA tool finds candidates, you decide
How to fix it
- Delete user-scalable=no and any maximum-scale below 2 from your viewport tag. One line, and one documented failure gone.
- Use a minimum height rather than a fixed height, so a container grows along with the text inside it.
- Size text in relative units, meaning em, rem or percentages, and keep viewport units for layout rather than for type.
- Reserve overflow hidden for decoration, and never put it on a box holding words somebody needs to read.
- Add 200% zoom to the release checklist, next to the mobile layout check it most resembles.
- Where a column genuinely cannot grow, truncate deliberately, reveal the full text on focus or activation, and show a visible sign that there is more to see.
Step-by-step fix guides (15)
- C12: Size text in percent so it scales
- C13: Use named font sizes that respect user defaults
- C14: Size text in em units, not pixels
- C17: Let form fields grow when text resizesAdvisory
- C20: Cap line length with relative column widths
- C22: Style real text instead of text images
- C28: Size text containers in em units
- SCR34: Compute sizes so they scale with the text
- G142: Build with technologies whose browsers support zoom
- G146: Use liquid layouts that fit any window
- G178: Provide working on-page text-size controls
- G179: Stop enlarged text clipping in fixed containers
Passes vs. fails
Passes
The layout reflows into a single column at 200%, and every label and button grows along with the text, fully intact.
Fails
At 200% zoom the Proceed to checkout button shows about half its label, and the order total is cut off underneath it.
In audits and lawsuits
We walk the money journey at 200% zoom in every audit we run, meaning the product page, the cart and checkout, because findings there photograph clearly for a report. A button that clips its own label needs no argument attached. The most automatable finding here is the meta viewport tag, and every scanner reports it, so a client's scan often names it first. The honest caveat is that desktop browsers ignore the tag, and most modern mobile browsers either ignore it or offer a setting that overrides it. The people it still blocks are on older mobile browsers. Remove it anyway. It costs one line and it takes a documented failure off your report.