What Is APCA?
APCA — the Advanced Perceptual Contrast Algorithm — is a contrast model developed for the drafts of WCAG 3. Instead of a ratio, it outputs Lc (“lightness contrast”), a signed number running from about 0 to +106 for dark text on light backgrounds and to about −108 for light text on dark. It is polarity-aware — the two directions score differently — and its guidance is font-aware: thinner and smaller text needs higher Lc.
APCA exists because the WCAG 2.x ratio, useful as it is, has known blind spots, and a model built on modern vision science can see what the ratio cannot. This piece of our contrast guide explains what the Lc number means, where the two models agree and diverge, and — since this is the part most often gotten wrong — what APCA’s legal status actually is.
Why does APCA exist?
The 2.x ratio treats contrast as
pure arithmetic on luminance, and three
consequences follow. First, it over-credits dark pairings and
under-credits light ones: gray #777777 text on black measures ≈4.7:1 —
a passing grade for body text — while most eyes find it genuinely murky,
because near black the formula’s ambient-light constant does a large share of
the work. Second, it treats polarity as symmetric when perception is not:
swap white and a brand blue and the ratio is identical in both directions,
but light text on a dark ground reads differently than dark text on a light
one. Third, it ignores fonts entirely: 4.5:1 passes a hairline
200-weight face and a sturdy semibold alike, though one of them is plainly
harder to read. The case for the model, in its own words, is laid out in
the APCA documentation.
What does the Lc number mean?
Lc measures how strongly the text separates from its background, perceptually. The sign carries polarity: positive for dark-on-light, negative for light-on-dark. The magnitude is what you read, and the commonly cited bands — guidance, not law — run roughly:
- Lc 90 — comfortable for body text
- Lc 75 — the minimum for body text
- Lc 60 — sufficient for large text
- Lc 45 — headlines and large UI elements
The bands shift with the font: the same Lc that carries a bold 24px headline is not enough for 14px regular, and APCA’s guidance ties the required Lc to size and weight rather than pretending one number fits all text. That coupling is the model’s most practical difference from the ratio — and the reason it resists being reduced to a single pass/fail verdict.
How do WCAG and APCA compare on real pairings?
Four pairings, both numbers computed. The brand blue is #2563eb:
| Pairing | WCAG ratio | APCA Lc | Reading |
|---|---|---|---|
near-black #111827 on white | ≈17.7:1 | ≈+104 | agree: strong enough for anything |
mid gray #767676 on white | ≈4.5:1 | ≈+72 | agree: right at the body-text boundary |
white on brand blue #2563eb | ≈5.2:1 | ≈−80 | agree: fine at body sizes |
gray #777777 on black | ≈4.7:1 | ≈−31 | diverge |
The first three rows tell the reassuring story: for ordinary pairings the two
models mostly rank things the same way. The fourth row is the blind spot
made visible. The ratio scores #777777 on black above the body-text floor —
numerically stronger than the mid-gray-on-white row. APCA places it at ≈Lc
−31, below even the band for headlines. One model says “body text, go ahead”;
the other says “not even close.” Set the two pairings side by side on a
screen and judge which model your eyes side with.
Open these four pairings in Scale Composer — every WCAG ratio with its APCA Lc alongside, agreements and the divergence in one panel.

Is APCA a legal requirement?
No — and this is worth stating plainly, because the enthusiasm around the model sometimes suggests otherwise. APCA is not a requirement in any accessibility standard or regulation today. WCAG 3 remains a draft, and its authors are explicit that its contents may change. The regulations that cite WCAG — in the US, the EU and elsewhere — cite WCAG 2.x, which means the 4.5:1 and 3:1 ratios remain the compliance reference for the foreseeable future. Testing against APCA instead of the ratios does not satisfy any current conformance requirement.
Its practical role today is judgment alongside compliance: the ratio decides what ships, Lc informs what should ship. This is why Scale Composer computes APCA for every pairing and shows the Lc value beside every WCAG ratio, but attaches no pass/fail verdict to it — APCA’s thresholds depend on the size and weight of the text in question, which a color panel cannot know.
How should a team use both numbers?
Treat the ratio as the floor
and Lc as the second opinion, and let each veto
in one direction only. A pairing that fails WCAG does not ship, whatever its
Lc — compliance is not negotiable by a draft model. A pairing that passes
WCAG but posts a weak Lc for its intended size deserves a second look — the
#777777-on-black row above is exactly the failure the ratio cannot see. The
two-model situation is likely to persist for years: WCAG 3 may eventually
make something like APCA normative, and until it does, the both-numbers
workflow is the honest way to work.
See polarity with your own eyes
The fastest way to internalize what the ratio misses is to flip a pairing. Load a color pair and swap its polarity — dark-on-light one moment, light-on-dark the next. The WCAG ratio holds perfectly still while the Lc value changes sign and magnitude, and the gap between the two readings is APCA’s argument, made in your own colors.