Pixel's Design Studio

APCA Contrast Checker

WCAG 2.x measures contrast as a simple luminance ratio. APCA is polarity-aware and size/weight-dependent — it tells you what you can actually read, not just what passes a formula.

Color pair

Preview

Headline text — 24px

Body text at 16px. The paragraph is the unit of thought.

Small text at 12px — captions, metadata, footnotes.

WCAG 2.x vs APCA — side by side

Same color pair. Two different answers. WCAG 2.x gives you a ratio. APCA gives you a perceptual lightness contrast value (Lc) that accounts for polarity — dark-on-light reads differently than light-on-dark.

WCAG 2.x (legacy)

16.91:1

Simple luminance ratio. Not polarity-aware. Does not account for font size or weight. One threshold for everything.

Normal AA (4.5:1)Normal AAA (7:1)Large AA (3:1)Large AAA (4.5:1)UI comp AA (3:1)

APCA (perceptual)

Lc +97.5

Normal polarity (dark on light)

Polarity-aware perceptual contrast. The Lc value maps to specific font size/weight combinations — not a single pass/fail.

Body 16px/400 (Lc 75)Content 14px/700 (Lc 60)Headline 24px+ (Lc 45)Non-text/UI (Lc 40)

APCA font lookup

Each cell shows the minimum |Lc| needed for that size/weight combination. Green cells pass for your current pair. Empty cells mean the combination is never permitted.

Size100200300400500600700800900
12px100907570
14px1009075706060
16px90757060555555
18px10075706055505050
20px10070605550454545
24px1009060555045404040
28px907555504543404040
32px757050454340404040
36px706045434040404040
48px605543404040404040
60px555040404040404040
72px504540404040404040
96px454040404040404040

Based on APCA Bronze conformance level. Your |Lc|: 97.5

Why this matters

Polarity-aware

White text on black reads differently than black text on white. WCAG 2.x treats them identically. APCA does not.

Size/weight dependent

A 48px heading needs less contrast than 14px body text. APCA encodes this. WCAG gives you "large" or "normal" — two buckets for all of typography.

Perceptually uniform

WCAG 2.x underreports contrast for dark backgrounds and overreports for mid-tones. APCA tracks how humans actually see.

Export

color: #141412; background: #f5f5f4; /* WCAG 16.91:1 | APCA Lc +97.5 */

Presets — where WCAG and APCA disagree

These pairs expose the gap between the two methods. Some pass WCAG but fail APCA for body text. Some fail WCAG but are perfectly readable at headline sizes according to APCA.

WCAG 2.x served well. But its contrast formula is from 2008. APCA accounts for human perception, font rendering, and spatial frequency. The standard is evolving. Your tools should too.