Line Length
Checked by line-length
Long lines are tiring in a way people rarely put into words. Your eyes jump along a line a few words at a time, then sweep back to the left to find the next one. The longer the line, the longer that sweep, and the easier it is to land on the wrong line.
Keep body text between 45 and 75 characters per line.
Your eyes do not glide along a line of text. They jump a few words at a time, then make one long sweep back to the left to find the next line. Short lines break that rhythm with constant returns. Long lines make the sweep so long that it is easy to land on the wrong line.
Sources disagree at the edges. Butterick allows up to 90 characters, Baymard recommends 50 to 75, and WCAG caps lines at 80. 45 to 75 is where they all overlap, so that is the band I use.
Finding the next line
The cost of a long line shows up at the return. The dashed line traces one, from the end of a line to the start of the next.
Reading is a series of small jumps. Your eyes land on a word, take in a few letters on either side, and hop forward to the next spot. At the end of the line they make one long jump back to the left and down, and that return is the part that fails first. The further the eye has to travel, the flatter that diagonal gets, and the easier it is to drop onto the line below the one you meant, or to read the same line twice. Nobody notices this as a problem with the layout. They just feel that the page is tiring and start to skim.
At 120 characters the return is a long, almost flat diagonal, and a small slip drops you a line too low. At 65 it is short and steep. Both are set small here so that 120 characters fit in this column.
Line height
Line length and line height move together. More space between lines gives the return a bigger target, so longer lines need more of it. For body text, start at 1.5.
Your eyes do not glide along a line of text. They jump a few words at a time, then make one long sweep back to the left to find the next line. Short lines break that rhythm with constant returns. Long lines make the sweep so long that it is easy to land on the wrong line.
Butterick suggests 1.2 to 1.45, WCAG asks for at least 1.5. On screens I side with 1.5. This page is a good reference: its column is 576px, about 72 characters of 16px Inter, inside the band, with a 1.75 line height.
Usage
1ch is the width of the 0 glyph, which makes it the natural unit for a
measure. Tailwind's max-w-prose is 65ch. But a zero is wider than the
average letter in most interface fonts. In Inter, 65ch holds about 85
characters and 55ch about 70.
<p class="max-w-[55ch] leading-normal text-pretty">
Exports now run in the background, so you can keep working.
</p>p {
max-inline-size: 55ch;
line-height: 1.5;
}Pick the ch value for your font, then count a few lines. Anything that
changes letter widths changes the result, including
letter spacing. A narrower column also strands more single
words at the end of paragraphs, which text-wrap: pretty
cleans up.
Resources
Line length - Matthew Butterick's case for 45 to 90 characters, and the easy ways to get there.
Readability - the optimal line length - Baymard Institute's research summary, which lands on 50 to 75 characters.
Understanding visual presentation - The WCAG criterion that caps lines at 80 characters and asks for 1.5 line spacing.
Axioms - Every Layout on setting a measure in ch once and letting the whole site inherit it.
CSS length units - How ch is defined, as the advance width of the 0 glyph.