Guides

Accessible color contrast: what WCAG 2.2 requires and how to pass

Updated 2026-09-14 · 3 min read · by the ColorSwoop team

Hundreds of millions of people have a color vision deficiency, and everyone reads low-contrast text more slowly. Contrast is the cheapest accessibility win there is — and the easiest to see once the numbers are next to the samples.

The numbers

ElementAAAAA
Normal text4.5:17:1
Large text (18pt / 14pt bold)3:14.5:1
UI components & icons3:1—

What those thresholds look like, on the same white background:

AaThe quick brown fox
#111111 on #FFFFFF 18.88:1 · AAA Near-black: far past AAA. The ceiling.
AaThe quick brown fox
#595959 on #FFFFFF 7:1 · AAA A mid gray right at the AAA line.
AaThe quick brown fox
#767676 on #FFFFFF 4.54:1 · AA The classic "just passes AA" gray.
AaThe quick brown fox
#949494 on #FFFFFF 3.03:1 · AA large Large text only. Not for a paragraph.
AaThe quick brown fox
#B0B0B0 on #FFFFFF 2.17:1 · Fail Fails everything — and it is a very common placeholder color.
AaThe quick brown fox
#8ECAE6 on #FFFFFF 1.79:1 · Fail Pretty light blue as text. Unreadable.
Ratios computed with the same function the contrast checker uses.

How the ratio is calculated

Each color is converted to relative luminance (a weighted, gamma-corrected mix of its red, green and blue). The ratio is (Llighter + 0.05) / (Ldarker + 0.05). Black on white is 21:1; a mid gray on white is around 4.5:1. Try any pair in the contrast checker.

Fixing a failing pair

  1. Keep the hue; change the lightness. Darken text or lighten background in small steps until it passes.
  2. If the brand color must stay, use it for large text, borders or backgrounds, and choose a darker shade for body text. Color pages on ColorSwoop list shades for this reason.
  3. Never rely on color alone: add icons, labels or underlines for links and states.
AaThe quick brown fox
#8ECAE6 on #FFFFFF 1.79:1 · Fail The failing pair.
AaThe quick brown fox
#1B6F8A on #FFFFFF 5.7:1 · AA Same hue, darkened: passes AA with the brand intact.
AaThe quick brown fox
#FFFFFF on #8ECAE6 1.79:1 · Fail Or flip it: the light blue as a background for large white text — 3:1 territory.
AaThe quick brown fox
#0B2447 on #8ECAE6 8.65:1 · AAA Or a deep navy on the light blue: the pair passes AAA and both colors stay.
Three ways out of the same failure. Lightness is the lever; hue rarely has to move.

Color blindness

Red-green deficiencies are the most common. Here is a palette that leans on red and green as its only distinction, and what happens to it:

Normal vision
#D62828
#2A9D2A
#F4A261
#264653
Deuteranopia (green-blind)
#8C7D1F
#938536
#CEBC61
#384053
Protanopia (red-blind)
#615725
#A08E16
#BAAA5B
#3F4554
Tritanopia (blue-blind)
#EC002B
#009886
#FF9193
#0D4A4A
Grayscale (monochromacy)
#6F6F6F
#888888
#B5B5B5
#424242
Under deuteranopia and protanopia the red and green converge into two nearly identical olives. The orange and navy survive because they differ in lightness, not just hue.
✕ Red vs green as the only cue
✓ Blue vs orange, and different lightness
For charts and status colors, prefer blue/orange pairs and vary lightness between adjacent colors so they remain distinguishable in grayscale.

Every palette page on ColorSwoop has a Color blindness simulation section: switch between protanopia, deuteranopia, tritanopia and grayscale to see the palette as those viewers do, and read which pairs become hard to tell apart. Palettes with clear lightness steps, like most minimal and gradient palettes, are naturally safer.

Checklist before launch

  • Body text ≥ 4.5:1 in light and dark mode.
  • Buttons and form borders ≥ 3:1 against their surroundings.
  • Focus indicators visible and ≥ 3:1.
  • Information never conveyed by color alone.
  • Run the palette through the color-blindness simulation once.

FAQ

What contrast ratio is required for WCAG AA?

4.5:1 for normal text, 3:1 for large text (at least 18pt, or 14pt bold) and for user-interface components and graphical objects.

What is WCAG AAA?

The enhanced level: 7:1 for normal text and 4.5:1 for large text. Aim for it on body copy when you can.

Does color contrast apply to placeholder text and icons?

Icons and UI controls need 3:1. Placeholder text is still text and needs 4.5:1 if it conveys information.

Is dark mode held to the same ratios?

Yes. 4.5:1 for body text and 3:1 for large text and controls, measured against whatever the background actually is. Off-white on near-black passes comfortably; mid-gray on near-black often does not.