Font Size Too Small for Mobile: How to Fix It

No Comments
Font size too small for mobile: how to fix it
TL;DR

Text that looks fine on a desktop monitor can strain the eye on a phone. Lighthouse flags a page when more than 40% of its text renders below 12px. The fix is to set a base body size of at least 16px, use relative units instead of fixed pixels, confirm the viewport meta tag is present, and verify on a real handset. A 16px baseline also stops iOS from auto zooming your forms.

What this check flags

This audit fires when too much of your text is too small to read comfortably on a mobile device. Lighthouse measures the rendered font size of every text node and passes the page only when at least 60% of the text, by character count, is 12px or larger. Put the other way around, if more than 40% of your text falls below 12px, the check fails. The 12px figure is a hard floor, not a target. It is the point below which characters become genuinely hard to parse on a phone, forcing visitors to pinch and zoom or simply give up. Google treats illegible body text as a mobile usability problem, and on a mobile first indexed web that friction works against both your rankings and your conversions.

The 16px baseline and why it matters

Passing the audit at 12px is the bare minimum. The widely accepted standard for body copy is 16px, and there are three reasons to treat it as your floor.

Legibility. A phone is held close to the eye but has few physical inches of screen, so text needs to be proportionally larger. At 16px a typical paragraph reads cleanly without zooming, which keeps people on the page instead of fighting it.

No pinch and zoom. When body text dips under 16px, mobile users start zooming to read, then scroll sideways to follow lines that no longer fit the viewport. Every gesture is friction, and friction is where visitors leave.

The iOS input trap. Safari on iOS automatically zooms the page whenever a user taps into a form field whose font size is below 16px, treating anything smaller as too tiny to read. The result is a jarring jump every time someone focuses a search box or a contact form. Setting your input font size to 16px or larger prevents the auto zoom entirely. This is the rendered size after any scaling, so the computed value is what counts, not just the number in the stylesheet. Android Chrome does not do this, but iOS is too large a slice of mobile traffic to ignore.

Where small fonts creep in

Tiny text is rarely deliberate. It usually slips in through a few common patterns.

Desktop first CSS. A design tuned for a wide monitor often uses 13px or 14px body copy that looks elegant on a desktop but cramped on a phone, with no mobile override to bump it back up.

Hardcoded pixel values. Captions, table cells, badges, form labels, and footer links are frequently set in fixed pixels like 10px or 11px. Because pixels do not scale with user preferences, those elements stay small everywhere.

An unset or broken viewport. Without a correct viewport meta tag the browser renders the page at desktop width and shrinks it to fit, dragging every font below the legible threshold even when your CSS values are fine.

How to fix it

Start by confirming the viewport meta tag sits in the head of every page. Without it, nothing else renders correctly on mobile.

<meta name="viewport" content="width=device-width, initial-scale=1">

Next, set a base size of at least 16px on the body and let everything else inherit using relative units, which scale with the root and with user preferences so a single change cascades across the page.

html { font-size: 100%; }       /* 16px default */
body { font-size: 1rem; line-height: 1.5; }
small, .caption { font-size: 0.875rem; }   /* 14px, the practical floor */
input, select, textarea { font-size: 1rem; }  /* stops iOS zoom */

The rule of thumb that passes comfortably is 16px for body, 14px for captions, and never below 12px for anything. Replace fixed pixel font sizes with rem or em, then test on a real device. Emulators do not reproduce how text feels in your hand, and the iOS form zoom is best confirmed on an actual iPhone.

How to diagnose it

Run Lighthouse in Chrome DevTools or PageSpeed Insights and open the "Document uses legible font sizes" audit. It lists every offending selector, the font size it rendered at, and the percentage of text that is too small. A crawler such as Screaming Frog surfaces these issues across every URL at once, which matters when the problem lives in a shared template. To confirm a single element, inspect it in DevTools and read the computed font size rather than the authored value.

Common mistakes

Do not reach for maximum-scale=1 or user-scalable=no to silence the iOS zoom. Disabling zoom blocks people who need to enlarge text and is an accessibility failure. Fix the font size instead. Do not assume passing at 12px is good enough, because 12px clears the audit but still reads small in the hand. Do not raise sizes on parent containers while leaving children pinned to hardcoded pixels, since those children will not inherit the change. And do not test only in a narrow desktop window, which does not reproduce real device pixel density or the iOS input behavior.

FAQ

Q. Does Lighthouse really fail my page only above a threshold?

A. Yes. It passes when at least 60% of your text by character count is 12px or larger, and fails only when more than 40% falls below 12px. A few small captions will not sink an otherwise legible page.

Q. Why does my form zoom in on iPhone when I tap a field?

A. Safari on iOS auto zooms any input whose rendered font size is below 16px. Set the input font size to 16px or larger and the zoom stops. The computed size after scaling is what triggers it, not just the declared value.

Q. Should I use pixels or relative units for font sizes?

A. Use relative units like rem and em. They scale with the root size and with the visitor's own preferences, so one base change cascades cleanly and the page stays accessible. Fixed pixels stay small everywhere.

Need a full technical audit?

SEO ProCheck runs deep crawls that catch issues like this across your whole site.

Get in touch

Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.

About SEO ProCheck

Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.

Work With Me

Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.

Subscribe to our newsletter!

More from our blog