JoyToolsJoyTools

WCAG Contrast Checker

100% Client-Side Private — Zero Server Uploads

Calculate relative luminance and test WCAG 2.1 AA/AAA text accessibility contrast ratio compliance online.

🔒 100% Client-Side: All data is processed locally in your browser and never leaves your device (Zero Server Uploads).
E-E-A-T Security Proof →
Interactive Workspace
Color Formats & Values#F97316
HEX#F97316
RGBrgb(249, 115, 22)
HSLhsl(25, 95%, 53%)
#F97316
Hue25°
Sat95%
Light53%
Color Harmony Palette (complementary)
#F97415
#159AF9
Tailwind CSS 10-Shade Palette (50 to 900)
50#FEF3EB
100#FEE1CD
200#FCC49C
300#FBA66A
400#FA8938
500#F96B06
600#D15A05
700#A94904
800#7C3603
900#4B2002
WCAG 2.1 Accessibility Contrast CheckerRatio: 2.8:1
Live Typography Preview — JoyTools Accessibility
The quick brown fox jumps over the lazy dog. Contrast ratio is 2.8:1 (Fail).
AA Normal: FAIL
AA Large: FAIL
AAA Normal: FAIL
AAA Large: FAIL
Share & Developer Embed

How do I use WCAG Contrast Checker?

1

Enter Foreground (text) and Background color codes, or click "Load Sample Data".

2

Inspect the real-time WCAG 2.1 contrast ratio (`1:1` to `21:1`) across AA and AAA compliance tiers.

3

Adjust lightness sliders or click "Swap Colors" until Normal Text, Large Text, and UI Components pass.

What features does WCAG Contrast Checker offer?

W3C WCAG 2.1 Relative Luminance & Contrast Ratio calculation

Instant compliance badges for AA Normal, AA Large, AAA Normal, and AAA Large text

Live typography preview card with custom text and background colors

100% private in-browser testing

WCAG 2.1 Relative Luminance & Contrast Ratio Thresholds

Contrast ratio is computed as $(L_1 + 0.05) / (L_2 + 0.05)$, where $L$ is linearized sRGB relative luminance ($L = 0.2126R + 0.7152G + 0.0722B$).

WCAG 2.1 Success Criteria 1.4.3 (AA), 1.4.6 (AAA), and 1.4.11 (Non-Text)
Element CategoryFont Size & Weight DefinitionWCAG AA MinimumWCAG AAA Enhanced
Normal Body Text< 18pt (24px) regular, or < 14pt (18.66px) bold4.5 : 17.0 : 1
Large Scale Text≥ 18pt (24px) regular, or ≥ 14pt (18.66px) bold (700)3.0 : 14.5 : 1
UI Components & IconsInput borders, focus rings, interactive SVG icons (SC 1.4.11)3.0 : 14.5 : 1 (Recommended)
Disabled / DecorativeInactive controls, pure decoration, brand logotypesExempt (No minimum)Exempt (No minimum)

Frequently Asked Questions about WCAG Contrast Checker

Why does white text (`#FFFFFF`) on pure orange (`#FF6600`) fail WCAG 2.1 AA despite looking readable?

The W3C relative luminance formula weights green at `71.52%` and red at `21.26%`, causing mid-luminance orange and cyan backgrounds to score around `3.0:1` against white. Darkening the orange or switching to dark text (`#111827`) achieves `>7:1`.

What exact pixel sizes qualify as "Large Text" under WCAG 2.1?

WCAG defines large text in CSS points (`1pt = 1.333px`): at least `18pt` (`24px`) for normal weight (`400`), or at least `14pt` (`18.66px`, typically rounded to `19px`) for bold weight (`≥700`).

Do form input borders and icons require `4.5:1` contrast?

Under WCAG 2.1 Success Criterion 1.4.11 (Non-text Contrast), interactive UI component boundaries (like text input borders, checkboxes) and meaningful icons require at least a `3.0:1` contrast ratio against adjacent surfaces.

How are semi-transparent (`rgba`) foreground colors evaluated for contrast?

Semi-transparent text must first be alpha-composited over the background color (`C_out = C_fg * α + C_bg * (1 - α)`) before computing relative luminance $L_1$ and $L_2$.