Contrast Ratio Pass Rate: The Metric That Hides the Real Failures

A dashboard says 95 percent of your text passes contrast. The team relaxes. The audit is a pass. And then a user with low vision opens the site, and the text they cannot read is the price, the button label, and the error message. The pass rate was true, and it was useless, because the 5 percent that failed were the text people actually read.

WCAG 2.2 success criterion 1.4.3, Contrast (Minimum), requires a contrast ratio of at least 4.5 to 1 for normal text, and 3 to 1 for large text, defined as 18 point or 14 point bold. Level AAA raises it to 7 to 1 for normal text and 4.5 to 1 for large text. The ratio is a hard threshold: 4.499 to 1 fails, because there is no rounding. A colour that looks fine on a designer's monitor and measures 4.4 to 1 is a failure, not a near miss.

Why the pass rate lies

A pass rate is an average, and averages hide distribution. A site with 1,000 text nodes and 50 failures has a 95 percent pass rate, but if those 50 failures are the primary call-to-action buttons, the form error messages, and the price, the site is unusable for the people the criterion exists for. The metric does not weight by importance, and it does not distinguish between a footer link and a checkout button. A dashboard that reports only the rate is reporting the wrong thing.

WebAIM's Million 2026 study found that 95.9 percent of home pages had detectable WCAG 2 failures, with an average of 56.1 errors per page. Low contrast is consistently one of the most common failure types, and it is also one of the most fixable: the fix is usually a colour change in a design token, not a rebuild. The reason it persists is that the metric makes it look like a small problem, and a small problem does not get prioritised.

What to measure instead

Measure by component, not by page. Report the contrast pass rate for the primary action, the form fields, the error messages, and the navigation, separately from the body text. A site where the body text passes at 100 percent and the primary button fails at 0 percent has a real defect, and the dashboard should say so in those terms.

Measure the worst case, not the average. The lowest contrast ratio on the page is the number that matters, because the user who cannot read the lowest-contrast text cannot read the page. A site with one text node at 2.85 to 1, like #999 on white, has a failure, even if the other 999 nodes pass at 7 to 1. The colour #595959 on white, at approximately 7 to 1, passes, and that is the comparison that makes the threshold concrete.

Measure over time, and measure after every design change. Contrast regressions are the most common accessibility regression, because a designer changes a colour in a design system and the change propagates to a component that was passing. A contrast check in the design system, run on every token change, catches the regression before it ships, and it is cheaper than an audit after the fact.

The pass rate is a vanity metric. The number that matters is the lowest contrast ratio on the page, and the component it belongs to. Report that, and the fix will prioritise itself.

Keep reading: Focus visible pass rate: a metric that catches what contrast ratios miss, Alt text coverage is lying to you: count decisions, not images, Focus Not Obscured: Measuring 2.4.11 Instead of Guessing.

Frequently asked questions

What is the WCAG contrast ratio requirement?

WCAG 2.2 success criterion 1.4.3 requires at least 4.5 to 1 for normal text and 3 to 1 for large text, defined as 18 point or 14 point bold. Level AAA raises it to 7 to 1 and 4.5 to 1. There is no rounding: 4.499 to 1 fails.

Why is a 95 percent contrast pass rate misleading?

Because it is an average that hides distribution. If the 5 percent that failed are the primary buttons, error messages, and prices, the site is unusable for the people the criterion exists for, even though the dashboard says 95 percent.

What is the most common contrast failure?

Low contrast is consistently one of the most common WCAG failure types. WebAIM's Million 2026 study found 95.9 percent of home pages had detectable WCAG 2 failures, averaging 56.1 errors per page.

How should I measure contrast instead of a pass rate?

Measure by component, not by page, and report the lowest contrast ratio on the page with the component it belongs to. Check contrast on every design token change, because regressions propagate from design systems.