Body Text Sizes in rem (14px to 20px)

Guide to choosing body text sizes in rem for readability. Covers the 14px to 20px range, line height pairing, and optimal reading width in characters.

Typography

Detailed Explanation

Body Text: Finding the Right rem Value

Body text is the most-read content on any page. Choosing the right size in rem directly impacts readability, accessibility, and user engagement.

Common Body Text Sizes

px rem Usage
14 0.875 Dense UI, dashboards, admin panels
15 0.9375 Compact blogs, documentation
16 1 Standard web body text (default)
18 1.125 Long-form reading, articles
20 1.25 Large-format editorial, accessibility-first

Why 16px (1rem) Is the Sweet Spot

Research on reading ergonomics suggests that 16px is a comfortable minimum for body text on screens viewed at arm's length (~50–70 cm). At this size, most adults can read without squinting or leaning forward. However, for long-form content (blog posts, documentation), bumping to 18px (1.125rem) significantly improves reading comfort and reduces eye strain.

Line Height Recommendations

Line height (leading) should increase proportionally with body text size:

Body size Line height Actual leading
14px (0.875rem) 1.5 21px
16px (1rem) 1.5–1.6 24–25.6px
18px (1.125rem) 1.5–1.6 27–28.8px
20px (1.25rem) 1.5 30px

Optimal Line Length

The ideal line length for body text is 45–75 characters per line. In CSS, you can approximate this with max-width:

.prose {
  font-size: 1rem;        /* 16px */
  line-height: 1.6;       /* 25.6px */
  max-width: 65ch;        /* ~65 characters */
}

The ch unit is relative to the width of the "0" character and works beautifully with rem-based font sizes.

Responsive Body Text

Consider increasing body text size on larger screens:

body {
  font-size: 1rem;         /* 16px on mobile */
}

@media (min-width: 768px) {
  body {
    font-size: 1.125rem;   /* 18px on tablet+ */
  }
}

This approach uses the root rem system to scale all relative values automatically when the body size changes.

Use Case

A content-focused website choosing between 16px and 18px body text, using rem values to ensure the typography scales gracefully when users adjust their browser font size.

Try It — px ↔ rem Converter

Open full tool