Justification in narrow columns wrecks word spacing
Aliases: justified text · full justification · rivers
What it is
Justification forces the first glyph of every line to the left and the last to the right. Space left over, or space missing, can only be pushed into the gaps between words (and sometimes between letters). In a wide column with many words those gaps can be thinned out; in a narrow one a line has three or four gaps to work with, some stretch into holes, some crush into collisions. The paragraph then splits into vertical rivers — channels of white that happen to line up and cut the word stream.
This is not an argument about whether flush left is virtuous. It is: in the narrow columns interfaces actually use, justification almost always turns spacing into noise.
Why it happens
A line’s natural length almost never equals the column. The remainder is column width minus the sum of glyph widths. Flush left leaves that remainder at the end; justification divides it by the number of adjustable gaps. That number falls with the word count. Narrow columns have few words, each gap takes a large share, and the same paragraph then has “this line scattered like beads, the next crushed.” Reading identifies the word as a clump; if word space is sometimes wider than a letter and sometimes tighter than a counter, the clump’s boundary is moving.
Rivers are a by-product of that randomness: when large gaps on neighbouring lines fall at similar x, white joins vertically, and the eye rides the river down instead of the words across. That is attentional capture after the texture broke, not the reader choosing to wander.
Chinese justification is worse. There is no default word space between characters, so the engine can only stretch letter-spacing or lean on elastic punctuation. A narrow line with few punctuation marks has almost no material, so characters are forced apart into a row of evenly spaced tiles, and any word-like grouping disappears. Mixed fullwidth punctuation makes the elasticity even less predictable.
Hyphenation is how print gives justification more joints: one more break, one more gap. Interface engines hyphenate weakly, and more weakly across languages, so the justification that still works in print arrives in product columns as a brute stretch.
Studying it
Set the same passage flush left and justified at a fixed column width. What you measure is not neatness but variance of word spacing, count of rivers, and reading speed. Independents: column width (or words per line), hyphenation on or off, language (Latin / Chinese). Dependents: standard deviation of word spaces, countable vertical white channels, speed, rated effort.
The narrow condition has to actually be narrow — three to six Latin words a line, or around a dozen Han characters — or irregular spacing will be averaged away and the study will report a false negative that “justification is fine.”
Where it stops holding
Book interiors and newspaper columns, after professional hyphenation, optical margins, and hand adjustment, can take justification as the default of formal prose. That is not a narrow sidebar, and not phone body. Stretching a table, a nav, or a button group to both edges is object layout, not paragraph justification; do not mix the two. The last line should not be forced full (last-line-align), or two or three words will be exiled to the two ends. After the user enlarges type, the same pixel column holds fewer words, and a justification that was barely acceptable suddenly grows rivers — Dynamic Type turns a wide column into a narrow one.
Applying it
- Do not justify body copy, card captions, sidebars, or dialog paragraphs. Least of all in a column that is already short.
- If the brand insists on two flush edges, widen the column and turn hyphenation on, then look at spacing variance; if it is still large, go back to flush left.
- Leave Chinese paragraphs unjustified: with no word spaces to adjust, justification can only attack letter-spacing.
- Shrink a justified paragraph to a tiny greyscale. If you can point down a river of white, or see at a glance that some lines are looser than others, justification has already failed at that width.