Test any two colors against WCAG 2.1 AA and AAA in real time. Live preview, hex or color picker input, swap, and auto-suggest a passing variant when your pair fails. Free, no sign-up, browser-only.
Web accessibility is no longer a moral nice-to-have. As of June 2025, the European Accessibility Act made WCAG 2.1 Level AA the minimum requirement for any digital product sold in the EU. The ADA Title III has carried similar weight in the US since the Robles v. Domino's settlement. Australia's DDA and Canada's AODA point at the same standard. The single most-checked WCAG criterion in compliance audits is 1.4.3 Contrast (Minimum) — the rule about color contrast. This guide walks through the math behind that rule, the thresholds you actually need to hit, the dark-mode and brand-color patterns that work in practice, and what the upcoming WCAG 3 / APCA shift will change.
WCAG 2.1 contrast is a ratio between the relative luminance of two colors. The four-step calculation:
((v + 0.055) / 1.055) to the 2.4 power. This undoes the gamma correction that displays apply.L = 0.2126·R + 0.7152·G + 0.0722·B. The green channel weighs more because human eyes are most sensitive to mid-spectrum light.The 0.05 fudge factor exists because real screens have ambient reflectance — even pure black is not truly zero luminance. Without it, very dark colors would produce mathematically infinite contrast ratios that have no real-world meaning.
| Standard | Normal text | Large text (≥ 18pt or 14pt bold) | UI components & graphics |
|---|---|---|---|
| WCAG 2.1 AA (legal floor) | 4.5 : 1 | 3 : 1 | 3 : 1 (criterion 1.4.11) |
| WCAG 2.1 AAA (aspirational) | 7 : 1 | 4.5 : 1 | — |
"Large text" in WCAG terms is 18pt or 24px regular, or 14pt or 19px bold. The thresholds drop because thicker strokes remain legible at lower contrast — but the visual angle matters more than the point size, so always verify on real devices and at user-zoom settings.
The exemptions are narrower than people assume. "Hover state" is not an exemption. "Marketing page" is not an exemption. "It's our brand color" is not an exemption.
| Region | Law / regulation | Standard | Effective |
|---|---|---|---|
| EU | European Accessibility Act | WCAG 2.1 AA via EN 301 549 | Mandatory June 2025 |
| US (federal) | Section 508 Refresh | WCAG 2.0 AA | Mandatory January 2018 |
| US (private sector) | ADA Title III (case law) | De-facto WCAG 2.1 AA | Active litigation since ~2017 |
| UK | Equality Act + Public Sector Bodies Regulations | WCAG 2.1 AA | Mandatory September 2020 (public sector) |
| Canada | Accessible Canada Act + AODA (Ontario) | WCAG 2.0 AA | Tiered by org size, fully mandatory by 2025 |
| Australia | DDA + DTA | WCAG 2.1 AA | Mandatory for federal government |
| Japan | JIS X 8341-3 | Aligned with WCAG 2.1 | Required for public sector |
Inverting a light palette does not produce an accessible dark palette. Pure white text on pure black hits 21:1 but produces ghosting and halation for users with astigmatism. The well-tested dark-mode pattern:
#0d0f11 or a very dark navy / charcoal so OLED screens still feel comfortable.#e5e7eb or similar — pulls the contrast down to ~16:1, easier on the eye.#9ca3af hits 4.5:1 on near-black; anything lighter starts to fail.Every team eventually faces the conflict: marketing wants the brand teal at #3DD9D6, but it fails AA on white. Three patterns that work:
The luminance ratio formula has known weaknesses: it overrates very-bright yellows on white (which actually look low-contrast) and underrates dark navy on black (which actually reads well). APCA — the Accessible Perceptual Contrast Algorithm — corrects both. APCA produces a signed lightness contrast value (typically −108 to +106) and prescribes thresholds that vary with font weight and size, not a single 4.5:1 cliff.
As of May 2026, APCA is in candidate-recommendation status for WCAG 3 with no firm ratification timeline. Practical advice: hit WCAG 2.1 AA for legal compliance today. If you have headroom, also test with an APCA tool (apcacontrast.com) so your palette future-proofs.
Search results for "color contrast checker" surface a dozen tools that look identical on the surface. They differ on three things that matter: whether they run client-side, whether they support the AAA threshold and 1.4.11 non-text contrast, and whether they suggest a passing variant when your pair fails. Here is how the most-used contrast tools compare in 2026:
| Tool | Client-side | AA + AAA + 1.4.11 | Auto-suggest fix | APCA preview | Cost |
|---|---|---|---|---|---|
| FreeDevTool WCAG Contrast Checker | Yes (no upload) | Yes | Yes (HSL walk) | Roadmap | Free |
| WebAIM Contrast Checker | Yes | AA + AAA only | Manual lightness slider | Separate tool | Free |
| axe DevTools (Chrome extension) | Local extension | Yes (whole page) | No | No | Free tier |
| Stark (Figma plugin) | Inside Figma | Yes | Yes (paid tier) | Yes (paid) | Freemium |
| Chrome DevTools Color Picker | Built into browser | AA + AAA hint | Click "AA suggested" | No | Free |
| Adobe Color Accessibility | Cloud (uploads palette) | AA only | No | No | Free w/ Adobe ID |
Every contrast check on this page runs in your browser using the W3C luminance formula — no color is sent to a server, no design file is uploaded, no account is required. Open the tool, paste any two hex codes (or use the native color picker), and the ratio updates as you type. The same is true of WebAIM's Contrast Checker, axe DevTools (which runs in your local Chrome), and Chrome DevTools' built-in color picker. Avoid tools that require uploading a Figma file or signing into a cloud workspace if you are checking unreleased brand colors or unannounced product designs.
The ADA itself does not specify a contrast number. US case law (Robles v. Domino's, Gil v. Winn-Dixie) treats WCAG 2.1 Level AA as the de-facto standard for ADA Title III compliance, which means 4.5:1 for normal text and 3:1 for large text (18pt regular or 14pt bold and above). Non-text UI components — form borders, focus rings, icon meaning — need 3:1 against adjacent colors under WCAG 1.4.11. Federal procurement (Section 508) references WCAG 2.0 AA, which has the same contrast numbers. If you ship to the EU, the European Accessibility Act enforces WCAG 2.1 AA via EN 301 549 as of June 2025 — the same 4.5:1 / 3:1 thresholds apply.
WebAIM's Contrast Checker has been the canonical reference for over a decade, and it is excellent for what it does. The reasons developers move to alternative tools:
Pair the checker with the Color Palette Picker when designing accessible palettes from scratch, the Hex to RGB / HSL Converter for token math, and the in-depth WCAG 2.1 AA Implementation Guide for the wider compliance story.
(L1 + 0.05) / (L2 + 0.05) where L1 is the lighter color. The higher the ratio, the more readable text becomes for users with low vision, color-blindness, aging eyes, or difficult viewing conditions like direct sunlight on a phone screen.rgba() or opacity, the actual rendered color is the result of compositing the foreground over whatever is behind it. WCAG expects you to test the final rendered color pair. If you are evaluating a semi-transparent text color, first calculate the composited sRGB value against its true background, then feed that composited color into the checker. This tool assumes opaque input for simplicity; use the computed RGB from browser DevTools for translucent UI.All tools run in your browser, no signup required, nothing sent to a server.