MobileCheck

Line height and line length for readable text on any screen

Updated October 17, 2026 · Covers: Lines are packed too tightly Lines are too long Text column is too narrow

Font size gets most of the attention, but two quieter settings decide whether a paragraph is pleasant to read: the space between lines (line height) and how many characters fit on each line (line length, or measure). Get them wrong and even large, high-contrast text feels tiring. The good news: both are fixed with a few lines of CSS.

What it means

Line height is the vertical distance from one line of text to the next. In CSS it's set with line-height. A value of 1 means the lines are as tall as the font size, with almost no breathing room; 1.5 adds half the font size again.

Line length is the number of characters on one line. Typographers have long recommended roughly 45–75 characters for body text, and WCAG 1.4.8 (a AAA criterion) suggests no more than 80. Too long and the eye struggles to find the start of the next line. Too short and the text breaks into fragments of two or three words, with constant line jumps and ragged edges.

Why it matters

Readers don't read letter by letter; their eyes jump along a line and then sweep back to the start of the next one. Tight line spacing makes lines blur together, so the return sweep lands on the wrong line. Very long lines make that sweep long and error-prone. Very short lines interrupt reading every couple of words. None of this blocks anyone outright, but it slows reading and makes long content feel harder than it is, especially for people with dyslexia or low vision. WCAG 1.4.12 Text Spacing also expects your layout to keep working when a reader overrides line height to 1.5 times the font size, so a design that only survives tight spacing has a hidden accessibility problem too.

How MobileCheck finds it

For each paragraph-like block with enough text, MobileCheck measures the rendered line height and estimates the average number of characters per line from the block's text and its number of lines. The thresholds are:

CheckFlagged whenRecommended
Lines are packed too tightlyline-height below 1.21.4–1.6 for paragraphs
Lines are too longmore than ~95 characters per linemax-width around 60–75ch
Text column is too narrowunder ~20 characters per line, over 5+ linesuse the full width on phones

Long lines are mostly a tablet and desktop-width problem, so check them on an iPad or Galaxy Tab as well as on phones. Narrow columns are mostly a phone problem: a two-column layout or generous side padding that looks fine at 768px can leave only a few words per line at 360px. The report highlights each affected paragraph on the screenshot.

How to fix line height

Use a unitless value. A unitless line-height is inherited as a ratio, so each element computes it from its own font size. A value with units (px, em, rem) is computed once on the parent and inherited as a fixed length, which is why a heading inside a container with line-height: 20px ends up with overlapping lines.

body {
  line-height: 1.5;      /* good: inherited as a ratio */
}
h1, h2, h3 {
  line-height: 1.2;      /* headings can be tighter */
}

/* avoid */
.content { line-height: 22px; }

Headings are usually short and set in large type, so 1.1–1.3 is fine there. Body text, list items and long captions do better at 1.4–1.6. Fixed pixel line heights also make text clip or overlap when someone enlarges the font, which you can see in the large text scenario.

How to fix long lines

Limit the width of text blocks, not of the whole page. The ch unit is the width of the "0" character in the current font, so it tracks the font size and gives a good approximation of characters per line:

.prose p,
.prose ul,
.prose ol {
  max-width: 68ch;
}
.prose {
  margin-inline: auto;   /* center the column if you like */
}

Because average letters are narrower than "0", 68ch typically holds somewhat more than 68 real characters; values between about 60ch and 75ch land in the comfortable range for most fonts. Images, tables and code blocks can stay wider than the text column.

How to fix narrow columns on phones

Narrow columns usually come from layouts designed for wider screens. Collapse multi-column layouts into one column on phones, and keep side padding modest:

.article {
  column-count: 2;
  column-gap: 2rem;
}
@media (max-width: 40rem) {
  .article { column-count: 1; }
}

.sidebar-layout {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
  gap: 1.5rem;
  padding-inline: 1rem;   /* not 3rem on a 360px screen */
}

Also watch for text wrapped around floated images on small screens. A 50%-wide float leaves only a sliver for text beside it; on phones, let the image take the full width instead. And if a narrow column is caused by text that is simply too big for the space, the fix might be a smaller heading size rather than less padding. See text too small on mobile for sensible font sizes.

How to check the fix

Run the free check again with at least one small phone and one tablet, since the two problems show up at opposite ends of the range. In the phone window you can rotate the device to landscape, where line length jumps suddenly on phones with wide screens. If you change breakpoints, check the in-between sizes too; the list of mobile viewport sizes shows the widths worth testing.

Frequently asked questions

What is the best line height for body text?

For most fonts, 1.4 to 1.6 works well for paragraphs. Set it without units, for example line-height: 1.5, so it scales with each element's font size. Headings can use 1.1 to 1.3.

What is the optimal line length for reading?

Roughly 45 to 75 characters per line is the traditional comfortable range. In CSS, a max-width between about 60ch and 75ch on text blocks gets you there for most fonts.

Why use ch units for max-width?

One ch is the width of the zero character in the current font, so a width in ch grows and shrinks with the font size. That keeps the number of characters per line roughly constant even when users enlarge text.

Related guides