Media, Images & Files

A practical guide to readable type on the modern web

Most websites are harder to read than they need to be. Here's how to fix the basics without becoming a typography expert.

The Wux Webtools Team The Wux Webtools Team 6 min read AI-assisted, human-reviewed
Abstract geometric composition of overlapping text blocks demonstrating typography hierarchy and spacing principles
Table of contents
  1. Why most websites are harder to read than they should be
  2. Font size: bigger than you think
  3. Line height: give text room to breathe
  4. Line length: shorter than you think
  5. Contrast: not as simple as black on white
  6. Typeface choice: default fonts are better than you think
  7. Responsive typography: fluid type scales
  8. Paragraph spacing and text alignment
  9. Testing readability in practice
  10. What this looks like in practice
  11. When to break the rules

Why most websites are harder to read than they should be

The average website in 2026 ships with a custom font family, carefully chosen brand colors, and a design system that specifies spacing down to the pixel. Yet the body text—the thing most visitors actually came to read—often sits at 14px in a low-contrast gray, set in a typeface optimized for headlines, not paragraphs.

This isn't a rant about designers. It's a reminder that readability is a distinct discipline from visual design, and the two don't always align. A typeface that looks sharp in a hero section can be exhausting at paragraph length. A color palette that photographs well can fail contrast checks. A layout that works on a 27-inch monitor can collapse into a narrow column on mobile.

The good news: readable type doesn't require a typography degree. It requires attention to a handful of variables that have disproportionate impact.

Font size: bigger than you think

The most common readability mistake on the web is body text that's too small. Designers often set body copy at 14px or 15px because it "looks clean" at desktop scale, then forget that a significant portion of readers are on phones, often in less-than-ideal lighting.

A practical baseline for body text in 2026:

  • Desktop: 18px minimum, 20px preferred
  • Mobile: 16px minimum, 18px preferred

These numbers feel large if you're used to smaller type, but they reflect how people actually read on screens. Larger text reduces eye strain, improves comprehension, and makes your content accessible to readers with mild vision impairment who haven't adjusted their browser settings.

If your design system mandates smaller type, test it on a phone in sunlight. If you squint, it's too small.

Line height: give text room to breathe

Line height (leading) is the vertical space between lines of text. Too tight, and lines blur together. Too loose, and the eye loses the thread between lines.

For body text, a line height of 1.5 to 1.7 works for most typefaces. Headlines can go tighter (1.1 to 1.3), but body copy needs breathing room.

The CSS:

body {
  font-size: 18px;
  line-height: 1.6;
}

This is one of the easiest readability wins. If your body text currently sits at line-height: 1.2 or uses a fixed pixel value, change it today.

Line length: shorter than you think

Comparison diagram of text columns showing too short under 40 characters, ideal 45 to 75 characters with 65ch example, and too long over 90 characters or 150 plus on a 1920px monitor
InfographicGood line length vs bad line length — Why narrower text columns are easier for the eye to track

The optimal line length for body text is 45 to 75 characters per line, roughly 8 to 12 words. Lines longer than 90 characters make it hard for the eye to track back to the start of the next line. Lines shorter than 40 characters create a choppy, fragmented reading experience.

Most websites get this wrong by letting text span the full width of the viewport, especially on desktop. A 1920px-wide monitor can fit 150+ characters per line, which is exhausting to read.

The fix is a max-width on your text container:

.prose {
  max-width: 65ch; /* 65 characters */
  margin-inline: auto;
}

The ch unit is underused but perfect for this: it scales with font size and roughly corresponds to character width.

Contrast: not as simple as black on white

WCAG 2.1 specifies a minimum contrast ratio of 4.5:1 for body text (AA level) and 7:1 for enhanced accessibility (AAA level). Most websites meet this on paper but fail in practice because they use light gray text on white backgrounds.

Common offenders:

  • #666666 on #FFFFFF (4.54:1, barely passes)
  • #777777 on #FFFFFF (4.47:1, fails)
  • Any shade lighter than #767676 on white (fails)

If your design system specifies "text-secondary" as a light gray, test it. The WebAIM contrast checker is the fastest way to verify.

Dark mode complicates this further. Pure white text on pure black creates halation (a glowing effect) that's harder to read than slightly off-white on dark gray. A better approach:

@media (prefers-color-scheme: dark) {
  body {
    background: #1a1a1a;
    color: #e4e4e4;
  }
}

Typeface choice: default fonts are better than you think

Custom web fonts are ubiquitous, but they come with trade-offs. They add latency, increase page weight, and can block rendering if not loaded carefully. For body text, system fonts are often the better choice.

A robust system font stack in 2026:

body {
  font-family: system-ui, -apple-system, 'Segoe UI', 
               Roboto, Helvetica, Arial, sans-serif;
}

This gives you San Francisco on macOS/iOS, Segoe UI on Windows, and Roboto on Android—all highly readable, professionally designed typefaces that load instantly.

If you do use a custom font for body text, choose one designed for long-form reading, not display. Avoid:

  • Ultra-light or ultra-bold weights for body copy
  • Condensed or extended variants
  • Fonts with low x-height (the height of lowercase letters)

Test your chosen typeface at paragraph length before committing.

Responsive typography: fluid type scales

Fixed font sizes don't scale well across devices. A 20px body font that's comfortable on desktop can feel oversized on mobile.

Fluid typography uses clamp() to scale font size smoothly between a minimum and maximum:

body {
  font-size: clamp(1rem, 0.9rem + 0.5vw, 1.25rem);
}

This scales from 16px on small screens to 20px on large screens, with smooth interpolation in between. It's more sophisticated than media query breakpoints and adapts to any viewport width.

For a full type scale (headings, body, small text), tools like Utopia generate fluid scales based on your constraints.

Paragraph spacing and text alignment

Two small details that matter:

  1. Paragraph spacing: Add space between paragraphs (margin-block-end: 1em) or use a first-line indent (text-indent: 1.5em), but not both. Most web content uses spacing.
  1. Text alignment: Left-aligned (or right-aligned for RTL languages) is almost always more readable than justified text, which creates uneven word spacing unless hyphenation is enabled. Center-aligned body text is hard to read and should be reserved for short passages.

Testing readability in practice

Checklist infographic listing readability tests: read on phone in different lighting, run Lighthouse accessibility audit, ask someone over 50 to read the page, and check bounce rate on text-heavy pages
InfographicHow to test readability in practice — A simple four-step checklist to catch readability problems before readers do

Readability isn't purely objective, but you can test it:

  • Read your own content on your phone in different lighting conditions
  • Run a Lighthouse accessibility audit to catch contrast and font size issues (see how to read a Lighthouse report for guidance)
  • Ask someone over 50 to read a page without adjusting their settings
  • Check your analytics for bounce rate on text-heavy pages—if people leave quickly, readability might be a factor

If your content is hard to read, people won't read it. It's that simple.

What this looks like in practice

Quick-reference infographic showing recommended body text settings: 18 to 20px desktop, 16 to 18px mobile, line height 1.5 to 1.7, line length 45 to 75 characters, contrast targets and dark mode colors
InfographicReadable body text at a glance — A compact reference for the body text settings that matter most

A readable body text style in 2026 might look like:

.prose {
  font-family: system-ui, sans-serif;
  font-size: clamp(1.125rem, 1rem + 0.5vw, 1.25rem);
  line-height: 1.6;
  color: #1a1a1a;
  max-width: 65ch;
  margin-inline: auto;
}

.prose p {
  margin-block-end: 1.25em;
}

@media (prefers-color-scheme: dark) {
  .prose {
    background: #1a1a1a;
    color: #e4e4e4;
  }
}

This covers font size, line height, line length, contrast, and responsive scaling in about a dozen lines of CSS. It's not exciting, but it works.

When to break the rules

These guidelines apply to body text—the paragraphs people read for information. Headlines, captions, UI labels, and marketing copy have different constraints and can bend these rules.

But if someone came to your site to read an article, a documentation page, or a product description, readable type is not optional. It's the baseline expectation.

Frequently asked questions

Should I use a custom web font for body text?
Only if it's specifically designed for long-form reading and you're willing to optimize loading (font-display: swap, preloading, subsetting). System fonts are faster, free, and often more readable. Reserve custom fonts for headings and branding where they have more impact.
What's the fastest way to check if my text is readable?
Open your site on your phone in bright sunlight. If you squint or zoom in, your font size or contrast is insufficient. For contrast specifically, use the WebAIM contrast checker. For overall readability, run a Lighthouse accessibility audit.
Does readable type hurt my design aesthetic?
Readable type is a design constraint, like mobile responsiveness or load time. It limits some choices but doesn't preclude good design. Many of the most visually striking sites (Stripe, Linear, GitHub's docs) prioritize readability without compromising aesthetics.
How do I convince stakeholders that bigger text is better?
Show them the site on a phone in realistic conditions, or ask them to read a full article on the current site. If that doesn't work, A/B test a version with larger, more readable type and measure time-on-page or scroll depth. Readable content performs better.

Sources & further reading

  1. Web Content Accessibility Guidelines (WCAG) 2.1
  2. WebAIM Contrast Checker
  3. Butterick's Practical Typography
  4. Utopia Fluid Type Scale Calculator
About the author
The Wux Webtools Team

Last updated:

Keep reading