Color Tools
Check WCAG contrast ratios between foreground and background colors for accessibility compliance.
Foreground (Text) field — type a hex value like #E9E6DD or pick one with the color swatch.Background color the same way using its hex field or swatch.Lightness sliders to fine-tune either color without changing its hue — the ratio updates live.Contrast Ratio panel (e.g. 17.26:1) and check how the text looks in the Preview.WCAG Compliance to see which levels pass: AA Normal, AA Large, AAA Normal, and AAA Large.See at a glance whether a pair passes each threshold — 4.5:1 for AA normal text, 3:1 for AA large text, and 7:1 / 4.5:1 for AAA.
Design text-on-background combinations that are readable from the start instead of fixing failures after an audit.
The Lightness sliders keep hue and saturation fixed so you can nudge a color until it clears the ratio you need.
WCAG has different limits for "large" text. The preview shows samples from 24px large down to 12px tiny, so you test against what actually ships.
Paste your current brand or theme colors to verify they hold up on both light and dark surfaces before a release.
Everything runs locally in your browser. Nothing is uploaded, logged, or sent to a server.
It's the ratio of the lighter color's luminance to the darker color's, computed as (L1 + 0.05) / (L2 + 0.05). It ranges from 1:1 (identical) to 21:1 (black vs white).
For AA: 4.5:1 for normal text and 3:1 for large text. For AAA: 7:1 for normal text and 4.5:1 for large text.
Per WCAG 2.1, text at least 18pt (24px) or at least 14pt (~18.66px) and bold. The lighter thresholds apply to that size.
No. The ratio is symmetric — it compares the lighter against the darker color, so swapping foreground and background gives the same result.
Both #RRGGBB and 3-digit shorthand like #fff work, with or without the leading #. Invalid values simply won't produce a meaningful ratio.
Yes. It converts each channel with the WCAG relative-luminance formula (the sRGB gamma curve) and computes the standard contrast ratio from those values.
Never. All calculation happens locally in JavaScript. Your colors are not sent to, stored on, or logged by any server.