The grey passed. I'd still change it.

Two grey palettes, two measurements, and the typography a color checker can't choose for you.

4 min read

An analog panel meter with two scales and one needle. When a reading comes in, the needle swings across and settles. On the upper scale it stops inside the pass band. On the lower scale the same needle stops short of it. WCAG scale Mirror strip APCA scale Zero adjust WCAG pass APCA pass Needle 12 34 56 7
One reading on two scales. The needle settles inside the WCAG band and stops short of the APCA one.

I find muted text easy to overlook. It sits quietly under a heading or beside a date, doing exactly what I wanted visually. Then the contrast checker passes it, and there seems to be nothing left to question.

Here are two versions of the same text. The light sample uses a mid grey on an off-white background. The dark sample uses a lighter grey on a warm near-black. I'm using a separate palette here, not this site's colors, so we can look at the decision on its own.

Apr 16, 2026

Read this

Light palette#74706cWCAG 4.56:1 passAPCA Lc 69 meets 60

Apr 16, 2026

Read this

Dark palette#a5a19cWCAG 7.08:1 passAPCA Lc 51 under 60

The dark pair gets the higher WCAG ratio: 7.08:1 against 4.56:1. APCA ranks their contrast the other way round: about Lc 51 in dark and Lc 69 in light.

WCAG 2 ratio

  1. Dark 7.08:1
  2. Light 4.56:1

APCA Lc

  1. Light 69
  2. Dark 51
Each side ranks the two pairs above, scored from their hex codes. The lines cross because WCAG and APCA disagree on which pair has more contrast.

That doesn't prove which sample every reader finds easier. It does show that the two measurements are not interchangeable.

What the numbers describe

WCAG 2 calculates a ratio from the colors' relative luminance. Swapping foreground and background leaves that ratio unchanged. Its AA text criterion sets a minimum of 4.5:1 for normal text and 3:1 for large text.

APCA models lightness contrast differently for light text on dark and dark text on light. Its signed Lc value keeps that direction: negative means light text on dark. Use the size of the number when you consult its typography guidance. The charts here show it without the sign.

I would keep the WCAG check and use APCA as another input. An APCA result is not a substitute for WCAG 2 conformance, and neither calculation is a reading test with users.

A palette needs roles

Here is a five-step grey ramp on the same near-black background. Each step increases contrast. The useful question is where to use each step.

WCAG 2 ratio on #181512, out of 21

#75716d3.76, under AA 4.5#8c88845.17, reaches AA 4.5#a5a19c7.08, reaches AA 4.5#bbb7b29.12, reaches AA 4.5#d8d3cf12.24, reaches AA 4.5

APCA Lc on #181512, out of 106

#75716d27, under Lc 60#8c888438, under Lc 60#a5a19c51, under Lc 60#bbb7b263, reaches Lc 60#d8d3cf79, reaches Lc 60
Both charts score the same five colors on #181512, from the hex codes. WCAG ratios and APCA Lc values use different scales, so neither is a percentage of the other. Filled bars reach the line.

The second step already passes the WCAG normal-text minimum at 5.17:1, while its APCA Lc is about 38. The lightest step reaches 12.24:1 and Lc 79.

I would start with the lighter end for sustained reading. Before assigning a middle step to a label, I would check the actual font size, weight, and the APCA font guidance. "Secondary" describes its place in the hierarchy. It doesn't tell us how much effort reading it should take.

For the dark sample, one step lighter is enough. #a5a19c becomes #bbb7b2, and APCA moves from Lc 51 to 63.

Apr 16, 2026

Read this

Before#a5a19cWCAG 7.08:1 passAPCA Lc 51 under 60

Apr 16, 2026

Read this

One step lighter#bbb7b2WCAG 9.12:1 passAPCA Lc 63 meets 60

Keep the color. Change the type.

The samples below use exactly the same foreground and background. The color scores do not change. The typography does.

Your next payment is due on Friday.

Your next payment is due on Friday.

Your next payment is due on Friday.

#bbb7b2 on #181512 throughout: WCAG 9.12:1, APCA Lc 63. The lines are 13px regular, 18px regular and 24px bold.

This is why I wouldn't turn Lc 60 into a blanket rule for labels. APCA's simplified guidance ties that level to at least 24px regular or 16px bold reference text. A small, regular label needs a closer look.

Check the next state too

A color can survive the default-state check and change on hover. Fading #d8d3cf to 80% opacity over #181512 produces #b2ada9 after compositing and rounding to 8-bit sRGB.

Apr 16, 2026

Read this

Link at rest#d8d3cfWCAG 12.24:1 passAPCA Lc 79 meets 60

Apr 16, 2026

Read this

Hover at 80% opacity#b2ada9WCAG 8.18:1 passAPCA Lc 57 under 60

Its WCAG ratio falls from 12.24:1 to 8.18:1. Its APCA Lc falls from about 79 to 57.

Both WCAG ratios still pass for normal text. But the hover has spent about a third of the contrast without changing the label's size or weight. I would try an underline before making a useful link fainter.

I'd keep the darker greys away from small text people need to read. I'd try the lighter steps at the actual reading size, then check links again in their hover and focus states. That takes longer than checking two hex values. It also answers more of the questions I care about.