Color Contrast Cheatsheet — WCAG Quick Reference
For: Designers, developers, design system maintainers
Color contrast is the most-failed WCAG criterion. Not because it's technically hard — but because designers don't have the ratios memorized. This cheatsheet has the four numbers you need, when each one applies, and the gotchas that catch most teams.
References: WCAG 2.2 SC 1.4.3, 1.4.11, 2.4.7, 2.4.11
Want to audit color contrast against this checklist on real screens — instantly, from your phone?
Use AccessAudit AI — runs offline, captures photo evidence per item, exports a sharable PDF.
The Four Numbers
Memorize these. Everything else is detail.
4.5:1 — body text (small) against its background
WCAG 1.4.3 AA
3:1 — large text (≥18pt regular OR ≥14pt bold) against its background
WCAG 1.4.3 AA
3:1 — UI components and meaningful graphics (buttons, icons, form borders, focus indicator)
WCAG 1.4.11 AA
7:1 — body text under WCAG AAA (only required for AAA-target sites; AA is the legal floor in most jurisdictions)
WCAG 1.4.6 AAA
When 3:1 Applies (the most-missed)
Icon buttons against their background (not against icon color)
Form input borders that distinguish field from background
Required-field asterisks (against page background)
Focus rings (against the unfocused state of the element)
WCAG 2.4.11 (new in 2.2)
Toggle switches in OFF state (against background)
Required heatmap colors that convey information
Common Pitfalls
Brand colors (light gray on white) usually fail body text — make a separate "accessible body" tint
e.g. #999 on white = 2.85:1 → fail. #767676 on white = 4.54:1 → AA pass.
Hover/focus states often LOWER contrast — verify both unfocused AND focused states pass
Image backgrounds make contrast indeterminate — overlay solid scrim (rgba(0,0,0,0.5)+ for body text on photo)
Disabled state — WCAG explicitly EXEMPTS disabled controls from contrast requirement, but err toward visibility for usability
Run this on your phone
Point your iPhone camera at any color pair to see WCAG contrast ratio + pass/fail in real time. 100% on-device.