Common Violations

Insufficient Color Contrast: The 4.5:1 Rule Explained

Light grey text on a white background looks clean in a design mockup. For millions of people with low vision — including most people over 40, whose contrast sensitivity naturally declines with age — it can be difficult or impossible to read. WCAG's answer to "how much contrast is enough" isn't a subjective judgment call; it's a precise mathematical ratio, which is exactly why it's one of the most reliably automated checks available. Industry data puts insufficient contrast at roughly 68% of ADA web accessibility complaints — the third most-cited issue after alt text and form labels.

The actual numbers

WCAG Success Criterion 1.4.3 (Contrast Minimum), Level AA, requires:

  • 4.5:1 for normal body text
  • 3:1 for large text — defined as 18pt+ regular weight, or 14pt+ bold

The ratio is calculated from the relative luminance of the text color and the background color, not a simple visual estimate — this is why a scanner like axe-core can compute it exactly and flag a failure with zero false positives, unlike almost any other WCAG check.

Where this actually breaks in practice

  • Grey-on-white or grey-on-grey text — the single most common source, usually from a design system's "muted" or "secondary" text color being set too light
  • Text over images or gradients — a caption that has enough contrast against the lightest part of a background photo but not the darkest
  • Placeholder text in form fields, which designers frequently style lighter than body text by convention, often dropping well below 4.5:1
  • Disabled-looking buttons that are actually still interactive and readable text, not truly disabled

How to fix it

Pick colors that meet the ratio, and verify with a real contrast calculator rather than eyeballing it — the difference between passing and failing is often a shade most people can't distinguish by eye. WebAIM's contrast checker and Chrome DevTools' built-in color picker (which shows the live ratio as you adjust) are both free and accurate.

/* Before: 2.8:1 — fails AA */
color: #999999;
background-color: #ffffff;

/* After: 4.6:1 — passes AA for normal text */
color: #767676;
background-color: #ffffff;

If a design system's token is the actual source of the failure, fix the token once rather than patching individual pages — a single "muted foreground" color that's too light usually cascades into dozens of individual violations across a site.

A more accurate model is coming, but isn't the standard yet

APCA (Accessible Perceptual Contrast Algorithm) is a newer, perceptually-based contrast model being developed for WCAG 3.0 that more accurately reflects how the human eye actually perceives contrast — WCAG 2.x's ratio formula is known to both over- and under-flag certain color combinations. AllyProof reports APCA scores as an informational preview alongside the standard WCAG check, but 2.x's 4.5:1/3:1 ratio is still the enforceable standard today — treat APCA results as a heads-up on borderline cases, not a replacement.

Official references

Common questions

What is the minimum color contrast ratio for WCAG AA?
4.5:1 for normal text and 3:1 for large text (at least 24px, or 18.66px if bold). This is Success Criterion 1.4.3 (Contrast Minimum), Level AA.
Does the 4.5:1 rule apply to large text?
No. Large text (at least 24px, or 18.66px bold) only needs 3:1. Logos and purely decorative text are exempt, and disabled controls have no contrast requirement.
How is the contrast ratio calculated?
It is the ratio between the relative luminance of the lighter and darker colors, ranging from 1:1 (identical) to 21:1 (black on white). Because it is pure math, tools can measure it exactly.
What is the AAA contrast requirement?
WCAG Level AAA (SC 1.4.6) raises the bar to 7:1 for normal text and 4.5:1 for large text. Most accessibility laws require AA, not AAA.

Want to see how your own site scores?

Run a free accessibility scan