WCAG color contrast: the 4.5:1 rule, explained properly

Published October 19, 2026 · about a 7-minute read

If you run an automated accessibility scan on almost any website, the single biggest pile of errors it spits back is color contrast. Low-contrast text is everywhere — that trendy light-grey-on-white body copy, the pale placeholder in a search box, the ghostly disabled-looking button that's actually clickable. It's also the single easiest category to fix, because it's math, not judgment. Let me lay out what WCAG actually asks for, including the part most people miss.

The ratio, and what it means

WCAG measures contrast as a ratio between the luminance of your text and the luminance of whatever sits directly behind it. Pure black on pure white is 21:1, the maximum. Identical colors are 1:1. The requirement depends on the conformance level and the text size:

ElementAA (the usual target)AAA
Normal text4.5:17:1
Large text3:14.5:1
UI components & graphics3:1—

Almost every law, procurement rule and internal policy I've seen targets Level AA, so in practice the numbers you care about are 4.5:1 for ordinary text and 3:1 for large text and interface bits. AAA is a stretch goal; most real sites don't hold themselves to 7:1 across the board, and WCAG itself doesn't recommend AAA as a blanket requirement. These thresholds haven't changed in WCAG 2.2 — they're the same as 2.0 and 2.1, so nothing you learned is out of date.

What counts as "large text" (the loophole people misuse)

Large text gets the easier 3:1 bar because big letterforms stay readable at lower contrast. The definition:

I see teams reach for this as an escape hatch: "the heading's big, so 3:1 is fine." Sometimes true. But your body text, form labels, nav links and captions are almost never large text, so they owe the full 4.5:1. Don't let one compliant <h1> convince you the page passes.

The rule everyone forgets: non-text contrast

Here's the one that trips up even careful teams. Success Criterion 1.4.11 (Non-text Contrast) is also AA, and it requires 3:1 for meaningful non-text things against their neighbors:

Automated scanners catch text contrast reliably but are weaker on 1.4.11, because deciding what's "meaningful" takes judgment. So this is exactly the kind of thing that passes an automated check and still fails a real accessibility audit. Check your focus states and form borders by hand.

What's exempt

Not everything needs to meet the ratio. WCAG explicitly exempts:

Don't over-apply these. "It's basically decorative" is a story teams tell themselves about text that actually matters. If a user needs to read it or act on it, it's in scope.

Where APCA fits (short version: not yet)

You'll hear about APCA — the Advanced Perceptual Contrast Algorithm. It's a newer, more perceptually accurate way to measure contrast, and it genuinely handles dark mode better than the old ratio math, which can mislead you on dark backgrounds. APCA is being prototyped for the future WCAG 3. But WCAG 3 is still a working draft with no conformance status, so for anything you have to actually certify today — an ADA posture, a VPAT, an EAA obligation — you measure against WCAG 2's 4.5:1 and 3:1. Use APCA as a design sanity check if it helps; don't report compliance against it.

Fixing it is usually a few lines

The good news: contrast failures are the cheapest accessibility wins you'll ever ship. You're not restructuring markup or rewriting components — you're darkening a grey. Take your #999 body text to something like #595959 on white and you clear 4.5:1. Give form inputs a border that actually hits 3:1. Make the focus ring 2px and visible. A single afternoon on a design system's color tokens can wipe out the majority of a site's reported errors.

The catch is drift: a new marketing section ships with pale-grey captions, a rebrand lightens the link color, a dark-mode variant nobody contrast-checked goes live. Contrast isn't a one-time fix, it's a thing that rots. Re-check after every visual change.

Find your contrast failures in seconds

Perimeter's accessibility check flags low-contrast text against WCAG AA thresholds alongside the rest of your site's security and compliance posture — and re-checks on a schedule, so a pale-grey caption that ships next month gets caught before a user (or a demand letter) does. Free, no signup.

Monitor your accessibility → · Compliance plan $49/mo · or run a free accessibility check