Updated July 15, 2026

Why Maximum Contrast Isn’t Maximum Readability

Here is a two-minute experiment. Take a long article, set it as pure black text on a pure white screen at full brightness, and read a couple of paragraphs. Then look at a blank wall. Many readers see a faint after-image — ghost lines hanging where the text was — and back on the page, a subtle shimmer at the letter edges, as if the strokes were vibrating against the white. Not everyone sees it, and the strength varies genuinely from eye to eye — uncorrected astigmatism makes it markedly worse — but it is one of the most commonly reported complaints about reading on screens.

Maximum contrast is not maximum readability because contrast requirements are floors, not targets: text needs enough contrast to resolve crisply — 4.5:1 at minimum, comfortably more — but past the point where the eye has fully resolved the letterforms, extra contrast adds glare rather than information. Pure black on pure white measures 21:1, and for long-form reading many readers do better in a band around 12–16:1: near-black text on white or off-white. What the floors are and how they are measured is covered in our contrast guide; this article is about what happens above them.

Why are contrast ratios floors, not targets?

Because that is how the requirement is written. WCAG asks for a contrast ratio of at least 4.5:1 for normal-size text — a minimum that guarantees letterforms stay resolvable for readers with moderately reduced vision. Nothing in the standard rewards 21:1 over 15:1; both pass identically, and the checkers that report pass or fail are answering a compliance question, not scoring readability.

The maximalist mistake is treating the ratio as a score to run up — if 4.5:1 is required, 21:1 must be nearly five times better. But the floor answers one question (can this be read at all, by nearly everyone?) and comfort above the floor is a different question, which the standard deliberately leaves open.

What actually happens at 21:1?

Two things, both familiar once named.

The first is glare. On a bright screen, a white page is not paper — it is a light source, and black strokes at maximum contrast sit against the brightest field the display can produce. The bright surround bleeds perceptually over the dark strokes, an effect in the halation family: the shimmer from the opening experiment. Reports of it vary between individuals — which is worth taking seriously rather than averaging away — and readers with astigmatism tend to be hit hardest, because an imperfectly focused eye smears the bright field further across the dark strokes.

The second is that the extra contrast is not buying anything. Vision science describes the eye’s response to contrast as saturating: sensitivity rises steeply at low contrast, then levels off well before the physical maximum. The intuitive version — reading is edge detection. The eye needs edges strong enough to trace letterforms; once they are fully traced, additional edge strength cannot make them more traced. Past saturation, the surplus shows up as strain, not as information.

What does the comfort band look like in numbers?

Take three candidates for body text on a white #ffffff page:

CandidateValueRatio on whiteTrade-off
Pure black#00000021.0:1Maximum crispness, maximum glare on a bright field; the lightness axis is pinned at its ceiling
Near-black#222222≈15.9:1Visually still “black ink”, measurably softer against the white; headroom above for headings
Dark gray#4a4a4a≈8.9:1Clears even the 7:1 AAA floor, but reads washed-out in sunlight and on low-quality panels — better as a secondary tier than as body

All three pass every WCAG level for body text. The differences are comfort and hierarchy, not compliance — which is exactly why the choice deserves more thought than a checker gives it. A pattern many mature systems land on: body text around 12–16:1 (#333-to-#222-class on white, or a #1a1a1a-class near-black on an off-white like #f5f5f5, ≈16:1), headings darker or fully black — glare scales with how long you look, and a five-word heading tolerates what a thousand words cannot — and captions deliberately subtler, but never below the floor.

This is a position Scale Composer’s own engine takes. When it derives text roles for a surface, it scores candidates for sufficient contrast plus best readability rather than maximum contrast — with a chroma penalty that depends on lightness, so light text is penalized harder for carrying color — and caption roles pick the subtlest step that still passes. Derived text lands in the comfort band by construction, not by taste. Open a derived palette and read the scored text picks — around seventeen roles per surface, each with its WCAG ratio and APCA value shown side by side, and none of the text roles sitting at 21:1.

A palette in Scale Composer with derived text roles and their contrast scores, body text landing near-black rather than pure black

Why does hierarchy need headroom?

Because emphasis is relative. If body text already sits at 21:1, the lightness axis has nowhere left to go — headings can grow and thicken, but they cannot get darker than the body, and one of typography’s oldest signals goes silent. Set the body at ≈15:1 instead and a heading at ≈19:1 reads as a deliberate step up; below the body, captions and metadata can step down toward the 4.5:1 floor without crowding it. Hierarchy is a ladder, and a ladder needs rungs on both sides of where you stand.

What about readers who need maximum contrast?

They exist, and they are the honest counterweight to everything above. For some readers — low vision, cataracts, conditions that reduce contrast sensitivity — the shimmer never comes and maximum contrast is simply easier. Operating systems expose this as a user preference, and CSS surfaces it as the prefers-contrast media query, so a page can serve the softened pairing by default and swap to full black-on-white when prefers-contrast: more is set.

The design answer is respecting the preference, not hardcoding either extreme: a site locked at 21:1 ignores the many readers who find it glaring, and a site locked at 12:1 ignores the readers who asked their system for more. The preference exists precisely because no single value serves everyone.

How do you find your own comfort band?

By reading, not by measuring. Open the same palette twice — the softened text roles next to a forced black-on-white maximum — and read a full paragraph in each. Note where your eyes settle, then look away and note which version follows you. The floors are non-negotiable; the band above them is yours to choose — deliberately, with both versions in front of you.

Keep reading