Skip to main content
Beta: Front-End Checklist is currently in beta. Some issues are still being fixed. Thanks for your patience.

Support text resizing to 200%

Text can be resized up to 200% without loss of content or functionality using browser settings.

Utilities
Quick take
Typical fix time 20 min
  • Use rem/em units for font sizes instead of fixed px
  • Avoid fixed-height containers that clip text
  • Ensure containers grow when text size increases
  • Test at 200% zoom—all content should remain visible
Why it matters: Users with low vision need larger text—if your layout breaks at 200% zoom or clips text in fixed containers, they can't read your content.

Rule Details

Text must be resizable to 200% without loss of content or functionality for users with low vision. WCAG 1.4.4 Resize Text (opens in new tab), its Understanding document (opens in new tab), and the font-size reference (opens in new tab) all point in the same direction: relative sizing and flexible containers.

Code Example

/* ❌ Bad: Fixed pixel sizes don't scale with browser settings */
body {
  font-size: 16px;
}
h1 {
  font-size: 32px;
}
.small {
  font-size: 12px;
}
 
/* ✅ Good: Relative units scale with user preferences */
:root {
  font-size: 100%; /* Respects browser default (usually 16px) */
}
body {
  font-size: 1rem;
}
h1 {
  font-size: 2rem;
}
.small {
  font-size: 0.875rem;
}

Why It Matters

Users with low vision need larger text—if your layout breaks at 200% zoom or clips text in fixed containers, they can't read your content.

Flexible Containers

/* ❌ Bad: Fixed height clips overflowing text */
.card {
  height: 200px;
  overflow: hidden;
}
 
/* ✅ Good: Min-height allows growth */
.card {
  min-height: 200px;
}
 
/* ❌ Bad: Fixed width truncates text */
.button {
  width: 100px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
 
/* ✅ Good: Flexible width with minimum */
.button {
  min-width: 100px;
  padding: 8px 16px;
}

Line Height and Spacing

/* ✅ Good: Relative line height and spacing */
body {
  line-height: 1.5;
}
 
p {
  margin-bottom: 1em;
}
 
.container {
  padding: 1rem;
}

Media Queries for Large Text

/* Adjust layout when text is resized */
@media (min-width: 40em) {
  .sidebar {
    width: 25%;
  }
}
 
/* Better: Use container queries for text-based breakpoints */
.card-container {
  container-type: inline-size;
}
 
@container (max-width: 20ch) {
  .card {
    flex-direction: column;
  }
}

React Component Example

// ✅ Good: Fluid typography with clamp
const FluidText = styled.p`
  font-size: clamp(1rem, 2.5vw, 1.5rem);
  line-height: 1.6;
`
 
// ✅ Good: Container adapts to content
const Card = styled.div`
  min-height: 150px;
  padding: 1rem;
 
  /* Ensure text doesn't overflow */
  overflow-wrap: break-word;
  word-wrap: break-word;
  hyphens: auto;
`

Testing at 200%

Browser Zoom

  1. Firefox: View → Zoom → Zoom Text Only → 200%
  2. Chrome: Settings → Appearance → Font Size → Very Large
  3. Safari: Settings → Websites → Page Zoom → 200%

Check List

  • All text is readable
  • No content is clipped or hidden
  • No horizontal scrolling on mobile
  • Interactive elements remain usable
  • Labels stay associated with form fields

Common Issues

/* ❌ Bad: Text truncation hides content */
.nav-item {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
 
/* ✅ Better: Allow wrapping */
.nav-item {
  overflow-wrap: break-word;
}
 
/* ❌ Bad: Fixed viewport units for text */
.hero-title {
  font-size: 5vw;
}
 
/* ✅ Better: Clamped with readable minimum */
.hero-title {
  font-size: clamp(1.5rem, 5vw, 3rem);
}
Zoom vs Text Size

WCAG requires 200% text resize, not browser zoom. Test with text-only zoom (Firefox) or browser font size settings, not Ctrl+Plus which scales everything.

Exceptions

  • Temporary or intentionally inert UI can be removed from the focus order, but only when the same state is also communicated clearly to assistive technology users.
  • A focus-management issue should be evaluated in the rendered interaction, not only from static markup, because route changes, overlays, and JS timing can change the real behavior.
  • If a component is both unlabeled and focus-broken, fix the stronger user-facing orientation problem first rather than reporting multiple secondary symptoms.

Support Notes

  • Resize and reflow behavior can differ across browser engines and OS accessibility settings, so test the rendered page in the supported browsers rather than relying only on CSS inspection.
  • If zoom, text-resize, or reflow behavior differs by browser, document the fallback layout behavior explicitly.

Verification

Automated Checks

  • Inspect the browser accessibility tree or accessibility pane for the relevant element, role, or accessible name.
  • Run an automated accessibility checker such as axe or Lighthouse where applicable.

Manual Checks

  • Test the affected UI with keyboard-only navigation and confirm the rule holds in the rendered experience.
  • Re-test one representative user flow with a screen reader if this rule affects a key interaction.

Use with AI

Copy these prompts to use with your AI assistant, or install the MCP server to use directly from Claude, Cursor, or Windsurf.

Check

Verify implementation

Resize text to 200% using browser text-only zoom settings and verify no content is clipped, truncated, or overlaps. Confirm all functionality remains accessible and text containers expand appropriately.

Fix

Auto-fix issues

Use relative units (rem, em) for font sizes instead of fixed pixels. Ensure containers can grow with text content. Avoid fixed-height containers that clip overflowing text. Test with browser text-size preferences.

Explain

Learn more

Explain how users with low vision adjust text size through browser settings, and why fixed pixel sizes or clipping containers prevent users from accessing content at their preferred reading size.

Review

Code review

Review the rendered markup and interactive states that affect Support text resizing to 200%. Flag exact elements, roles, labels, focus behavior, or keyboard interactions that violate the rule, and note how to verify the fix with browser accessibility tooling or assistive tech.

Sources

References used to support the guidance in this rule.

Further Reading

Tools and supplementary material for exploring the topic in more depth.

axe DevTools
deque.comTool

Rules that often go hand-in-hand with this one.

Support content reflow at 400% zoom

Content reflows when zoomed to 400% without requiring horizontal scrolling or loss of functionality.

Accessibility
Avoid images of text

Real text is used instead of images containing text, except for logos or when specific visual presentation is essential.

Accessibility
Support both portrait and landscape orientation

Content and functionality work in both portrait and landscape unless a specific orientation is essential to the activity.

Accessibility
Use readable font sizes on mobile

Text must be large enough to read without zooming on mobile devices. Using relative units (rem/em) allows browser font size preferences to be respected.

CSS

Was this rule helpful?

Your feedback helps improve rule quality. This stays internal for now.

Loading feedback...
0 / 385