Contrast checker · WCAG 2.2 + APCA · runs in your browser

Audit your whole palette’s contrast at once.

Paste a list of hex colors, your CSS variables, or a Tailwind config. a11ycontrast checks every text-on-background pair for WCAG 2.2 and APCA — and tells you the nearest accessible color for each failure.

bg#ffffffsurface#f3f4f6text#6b7280heading#111827brand#2563eblink#93c5fd
6 colors · 30 text-on-background pairs · 18 fail WCAG AA
text ↓ / bg →bgsurfacetextheadingbrandlink
bgAa1.10Lc 0Aa4.83Lc 79Aa17.7Lc 107Aa5.17Lc 80Aa1.80Lc 37
surfaceAa1.10Lc 0Aa4.39Lc 72Aa16.1Lc 99Aa4.70Lc 73Aa1.64Lc 30
textAa4.83Lc 74Aa4.39Lc 67Aa3.67Lc 27Aa1.07Lc 0Aa2.68Lc 38
headingAa17.7Lc 105Aa16.1Lc 98Aa3.67Lc 29Aa3.43Lc 28Aa9.84Lc 69
brandAa5.17Lc 75Aa4.70Lc 68Aa1.07Lc 0Aa3.43Lc 26Aa2.87Lc 39
linkAa1.80Lc 33Aa1.64Lc 27Aa2.68Lc 40Aa9.84Lc 68Aa2.87Lc 42

Failures & fixes (WCAG AA, normal text · 4.5:1)

  • Aabg on surface1.10:1 (needs 4.5)Nearest accessible text:Aa#6e6e6e4.63:1
  • Aabg on link1.80:1 (needs 4.5)Nearest accessible text:Aa#4f4f4f4.54:1
  • Aasurface on bg1.10:1 (needs 4.5)Nearest accessible text:Aa#6b778e4.51:1
  • Aasurface on text4.39:1 (needs 4.5)Nearest accessible text:Aa#f6f7f84.51:1
  • Aasurface on link1.64:1 (needs 4.5)Nearest accessible text:Aa#464d5d4.70:1
  • Aatext on surface4.39:1 (needs 4.5)Nearest accessible text:Aa#69707d4.53:1
  • Aatext on heading3.67:1 (needs 4.5)Nearest accessible text:Aa#7a81904.54:1
  • Aatext on brand1.07:1 (needs 4.5)Nearest accessible text:Aa#efeff14.50:1
  • Aatext on link2.68:1 (needs 4.5)Nearest accessible text:Aa#4a4f594.56:1
  • Aaheading on text3.67:1 (needs 4.5)Nearest accessible text:Aa#f8f9fc4.59:1
  • Aaheading on brand3.43:1 (needs 4.5)Nearest accessible text:Aa#edf0f74.53:1
  • Aabrand on text1.07:1 (needs 4.5)Nearest accessible text:Aa#f7f9fe4.59:1
  • Aabrand on heading3.43:1 (needs 4.5)Nearest accessible text:Aa#4a7eee4.65:1
  • Aabrand on link2.87:1 (needs 4.5)Nearest accessible text:Aa#1145b84.54:1
  • Aalink on bg1.80:1 (needs 4.5)Nearest accessible text:Aa#0472ee4.52:1
  • Aalink on surface1.64:1 (needs 4.5)Nearest accessible text:Aa#046bde4.58:1
  • Aalink on text2.68:1 (needs 4.5)Nearest accessible text:Aa#f2f8ff4.52:1
  • Aalink on brand2.87:1 (needs 4.5)Nearest accessible text:Aa#e8f3ff4.60:1

Why check the whole palette, not one pair

Single-pair checkers make you test combinations one at a time and miss the ones you forget. a11ycontrast builds the full matrix so nothing slips through:

WCAG thresholds, quickly

AA · normal text

At least 4.5:1. The baseline most laws and audits require.

AA · large text

At least 3:1. Large = 24px regular or 18.66px bold and up.

AAA · normal text

At least 7:1. Enhanced contrast for body copy.

APCA · Lc

Roughly Lc 75 for body text, 60 for large — the WCAG 3 direction.

Frequently asked questions

Is a11ycontrast free?

Yes — completely free, no account, no sign-up. It runs entirely in your browser.

Do you upload or store my colors?

No. a11ycontrast has no backend. Parsing and all contrast math happen in your browser, so your palette never leaves your device.

What input formats can I paste?

A plain list of hex colors, CSS custom properties (--ink: #0a0a0a;), a Tailwind-style color object, or rgb()/rgba() values. a11ycontrast extracts every color it can find and keeps the names where they exist.

What is the difference between WCAG 2.2 and APCA?

WCAG 2.x contrast ratio (1:1 to 21:1) is the current standard used by laws and audits — AA needs 4.5:1 for normal text and 3:1 for large text. APCA (Lc, roughly 0–106) is a newer, more perceptually accurate algorithm proposed for WCAG 3; it handles dark mode and thin fonts far better. Use WCAG for compliance today and APCA as a perceptual sanity check.

What are the WCAG AA and AAA thresholds?

AA: 4.5:1 for normal text, 3:1 for large text. AAA: 7:1 for normal text, 4.5:1 for large text. "Large" means 24px (18pt) regular or 18.66px (14pt) bold and up.

How is the "nearest accessible color" calculated?

a11ycontrast keeps the failing text color’s hue and saturation and shifts its lightness by the smallest amount needed to reach the target ratio (4.5:1) against that specific background — so the suggested fix looks as close as possible to your original color.

Does this matter for the European Accessibility Act?

Yes. Since 28 June 2025 the EAA requires many digital products and services sold in the EU to meet accessibility requirements (EN 301 549, which references WCAG AA). Sufficient color contrast is part of that, so auditing your whole palette is now a compliance task for many teams, not just a nicety.