By · Updated

APCA Contrast Checker

APCA Color Contrast Lc Score with WCAG 3 Draft Thresholds

No ratings yet
Result

—

OneTask is free, with no sign-up, and built by one person.
If this tool saved you time, a coffee helps keep new ones coming.

How the APCA Contrast Checker works

This APCA contrast checker scores text against its background the way the WCAG 3 draft does. Pick a text colour and a background, enter the font size and weight you plan to use, and the readout gives the APCA Lc score, which way round the contrast runs, whether that combination passes for your text, and the highest of the draft WCAG 3 levels it clears. The WCAG 2 ratio is shown next to it so you can see where the two methods disagree. The table lists every APCA level with what it is meant for, and the minimum font size the score allows at each weight from 300 to 700.

APCA contrast checker: reading the Lc score

APCA, the Accessible Perceptual Contrast Algorithm, is the contrast method in the working draft of WCAG 3. It replaces the WCAG 2 luminance ratio with a lightness contrast value, Lc, on a scale from 0 to about 106, where the sign tells you the polarity: positive for dark text on a light background, negative for light text on dark. The number is designed to track how readable text actually is, so it depends on which colour is the text and which the background, and its thresholds are tied to font size and weight rather than a single pass mark.

Why it differs from WCAG 2. The 4.5:1 ratio treats colours symmetrically and uses a simple luminance model, so it passes some mid-grey and orange combinations that are hard to read and fails some dark-mode pairings that are fine. APCA models the non-linearity of perceived lightness, the flare of a bright background and the difference between light-on-dark and dark-on-light, which is why a swap of the two colours produces a different Lc but the same WCAG ratio. Body-text grey #767676 on white is the classic case: it just passes WCAG AA at 4.54:1 but scores about Lc 72 in APCA, short of the 75 wanted for body text at 16px, and #888888 on white drops to Lc 63.

The levels. Lc 90 is the preferred body-text level and works at any weight including thin faces. Lc 75 is the minimum for body text of 16px or larger at normal weight. Lc 60 is the minimum for content text that is larger or bolder, around 24px regular or 18px bold. Lc 45 is for headlines and large text of 36px and above. Lc 30 is the floor for non-text elements such as icons, input borders and placeholder text, and Lc 15 is the lowest usable value, for decorative elements and disabled controls only. Anything below 15 is treated as invisible.

Font size and weight. APCA's real output is a lookup: for a given Lc, what is the smallest text that stays readable at each weight? The table gives that minimum for weights 300 to 700, derived from the draft lookup table, and the readout compares it with the size and weight you entered. Heavier weights can go smaller at the same contrast; thin weights need both higher contrast and larger sizes, which is why light 300-weight body text so often looks washed out.

Status of the standard. WCAG 3 is a working draft and APCA is not yet a normative requirement; WCAG 2.x remains the standard cited in law and procurement. Use this checker to design text that is comfortably readable, and keep the WCAG 2 checker for compliance. Where the two disagree, the safest choice is to satisfy both, which usually means a slightly darker text colour than WCAG 2 alone would require.

APCA contrast of greys on white

Grey text on #ffffff at 16 px and weight 400.

APCA Lc and WCAG 2 ratio for grey text on white

Text colour APCA Highest level WCAG 2
#000000 Lc 106.0 Lc 90 21.00:1
#111111 Lc 105.4 Lc 90 18.88:1
#222222 Lc 102.9 Lc 90 15.91:1
#333333 Lc 98.7 Lc 90 12.63:1
#444444 Lc 92.6 Lc 90 9.74:1
#555555 Lc 85.9 Lc 75 7.46:1
#5b6472 Lc 79.9 Lc 75 5.98:1
#666666 Lc 78.8 Lc 75 5.74:1
#6b6b6b Lc 76.5 Lc 75 5.33:1
#707070 Lc 74.3 Lc 60 4.95:1
#767676 Lc 71.6 Lc 60 4.54:1
#777777 Lc 71.1 Lc 60 4.48:1
#808080 Lc 66.9 Lc 60 3.95:1
#888888 Lc 63.1 Lc 60 3.54:1
#949494 Lc 57.1 Lc 45 3.03:1
#999999 Lc 54.6 Lc 45 2.85:1
#a0a0a0 Lc 51.0 Lc 45 2.61:1
#aaaaaa Lc 45.8 Lc 45 2.32:1
#bbbbbb Lc 36.7 Lc 30 1.92:1
#cccccc Lc 27.3 Lc 15 1.61:1
#dddddd Lc 17.6 Lc 15 1.36:1

APCA formula and worked examples

The formula: the APCA formula converts each colour to an estimated screen luminance Y, then takes Lc = (Ybg^0.56 − Ytext^0.57) × 1.14 × 100 for dark text on a light background, or (Ybg^0.65 − Ytext^0.62) × 1.14 × 100 for light text on dark, with a small offset and a soft clamp near black. The different exponents are why the score is not symmetrical.

First example. black text on white scores Lc 106.0, comfortably above the Lc 90 preferred for body text. Swap them and white on black scores Lc -107.9 — negative because the polarity is reversed, and slightly larger in size.

Second example. mid-grey #767676 on white scores Lc 71.6. Its WCAG 2 ratio is 4.54:1, which just passes AA, but at Lc 72 APCA only accepts it for larger or bolder text — a clear example of the two methods disagreeing.

How many Lc points do you need? Lc 90 is preferred for body text, Lc 75 is the minimum for body text, Lc 60 for content text that is not body copy, Lc 45 for large headings, Lc 30 for placeholder and disabled text and Lc 15 for non-text dividers.

FAQ

What is a good APCA score?

Lc 75 or above for body text, and 90 if you can get it. Headlines can go down to Lc 45, and icons and borders to Lc 30. Black on white scores about Lc 106, dark grey #333 on white about Lc 99, and mid-grey #767676 on white about Lc 72, which is why that grey reads as faint for small text even though it passes WCAG 2 AA.

What does a negative Lc value mean?

Light text on a dark background. APCA is polarity-aware, so white on black gives about Lc -108 and black on white about Lc 106. Compare the absolute value against the thresholds; the sign only records which way round the colours are.

Is APCA part of WCAG?

Not yet. It is the contrast method in the WCAG 3 working draft, which is still being developed and is not a legal or conformance standard. WCAG 2.1 and 2.2 with the 4.5:1 ratio remain the required standard. Treat APCA as the better guide to readability and WCAG 2 as the compliance check.

Why does swapping the text and background change the score?

Because APCA models how people read text, and light text on dark is perceived differently from dark text on light. The same two colours can pass in one direction and fall short in the other. WCAG 2 ignores this, which is one of the problems APCA sets out to fix.

What font size do I need at my contrast level?

Read the last row of the table: it gives the minimum size at your Lc for each weight. At Lc 75, for example, regular 400-weight text needs 16px, 700-weight can drop to 14px and 300-weight needs 24px. If your text is smaller than the figure for its weight, raise the contrast or the size.

See also: all Colour tools, Layout & Spacing, Shadows & Motion, Shapes & SVG, UI Components, Forms & Inputs.

Related tools