Comparison

WCAG contrast vs APCA

One is the standard you will be measured against. The other is the better model of what your eye is doing. You need both, for different reasons.

Short answer. Conform to WCAG 2.2 because that is what audits and procurement cite, and consult APCA when a technically-passing pair still looks thin — the disagreement between them is usually the interesting part.

WCAG 2.2 reports a ratio from 1:1 to 21:1, computed as (L1 + 0.05) / (L2 + 0.05) over the relative luminance of the two colors. It is simple, stable, and it is the number written into accessibility law and procurement policy nearly everywhere. Whatever else you do, this is the one you have to clear.

Its blind spots are well documented. It ignores font weight almost entirely and treats a hairline serif and a bold sans at the same size as equivalent. It is symmetric, so it reports the same figure for light-on-dark and dark-on-light — but the eye does not treat those as equivalent, and light text on a dark background needs measurably more separation to feel equally solid. And because the 0.05 term models ambient reflection, the ratio compresses badly at the dark end, where a large perceptual difference can read as a small numeric one.

APCA was drafted for WCAG 3 to address exactly those cases. It returns a signed lightness contrast — the sign carries the polarity — and it expects a font size and weight, because the threshold genuinely depends on them. It is a better predictor of appearance. It is also not a conformance standard yet, and claiming AA against it would not survive an audit.

WCAG 2.2 contrast vs APCA, side by side

DimensionWCAG 2.2 contrastAPCA
OutputRatio, 1:1 to 21:1Signed Lc value, roughly −108 to 106
PolaritySymmetric — same number either way roundSigned; light-on-dark and dark-on-light differ
Font size and weightOnly a coarse large-text thresholdModelled directly, with a lookup table
Dark-end accuracyCompresses; understates real differencesSubstantially better
Thresholds4.5:1 body, 3:1 large and non-text, 7:1 AAALc 60 body, Lc 75 for smaller or lighter text
Legal standingWhat WCAG 2.2, EN 301 549 and most policy citeNone yet — a WCAG 3 draft
Tooling supportUniversalGrowing but partial
Best used forProving conformanceDeciding whether it actually looks right

Where this comparison is unfair

The two disagree most sharply on light text over mid-tone and dark backgrounds, which is exactly where dark-mode interfaces live. When they disagree, believe APCA about appearance and WCAG about compliance — and if a pair passes WCAG but APCA calls it thin, it probably is thin, and shipping it is a decision rather than a pass.

APCA is still a draft and its thresholds have moved between revisions. Pinning a design system to a specific Lc target means accepting that the target may shift. That is a real cost of adopting it early, and it is a reason to treat it as advisory rather than as a second gate.

Frequently asked questions

Should I use WCAG or APCA for contrast?

Both. WCAG 2.2 is the conformance standard, so it is the one you must clear and the one an audit will measure. APCA is the better model of appearance, so it is the one that tells you why a passing combination still looks weak.

What contrast ratio passes WCAG AA?

4.5:1 for normal body text, 3:1 for large text — 18pt, or 14pt bold and above — and 3:1 for user interface components and graphical objects that convey meaning. AAA raises the first two to 7:1 and 4.5:1.

Why does light text on dark need more contrast?

Because the eye does not respond symmetrically to the two polarities. Light text on a dark field also produces halation — scattering within the eye that makes the glyphs appear to bloom — which is worse at high contrast and worse again for readers with astigmatism. The WCAG ratio has no term for any of this; APCA does.

Is APCA replacing WCAG contrast?

It is the contrast model drafted for WCAG 3, but WCAG 3 is not finished and has no adoption timeline. WCAG 2.2 remains the standard in force, and will for the foreseeable future.

Try it yourself

Definitions

Other comparisons