Free colour contrast checker

Choose two colours. Check their contrast. Make every word easier to read.

Need an accessible colour system?

We define colour tokens and check text and UI contrast for web and mobile apps.

You’ll send your enquiry from the project brief on the next page.

Loading Color Contrast Checker...

What this contrast result covers

Use the ratio for one solid sRGB color pair, then test the interface around it

4.5:1

Normal text at level AA

WCAG 2.2 requires at least 4.5:1 for text below the large-text threshold. The value is a hard threshold, so compare the unrounded ratio.

3:1

Large text and necessary UI cues

Large text uses a 3:1 minimum at Level AA. Necessary outlines, icons, states, and meaningful graphics have a separate 3:1 non-text requirement.

1 pair

Not a full accessibility audit

This checker compares two solid sRGB colors. It cannot inspect gradients, images, component states, typography, keyboard use, or page semantics.

Thresholds and exceptions follow W3C guidance for text contrast, enhanced contrast, and non-text contrast. Color used to convey meaning is covered separately by Use of Color. WCAG 3 remains a W3C Working Draft.

Understanding WCAG standards

The text thresholds shown in the result cards

WCAG level AA

Minimum Text Contrast

Normal Text: 4.5:1 contrast ratio minimum(Below 18pt regular or 14pt bold)
Large Text: 3:1 contrast ratio minimum(18pt+ or 14pt+ bold)

Success Criterion 1.4.3 sets these minimums for text and images of text. Placeholder, hover, and focus text are included; inactive controls and logotypes are exceptions.

WCAG level AAA

Enhanced Text Contrast

Normal Text: 7:1 contrast ratio minimum(Below 18pt regular or 14pt bold)
Large Text: 4.5:1 contrast ratio minimum(18pt+ or 14pt+ bold)

Success Criterion 1.4.6 raises the text thresholds. It is an enhanced target, not evidence that the rest of a page or product meets Level AAA.

How color contrast works

The current sRGB calculation and the limits of a two-color check

1. Convert sRGB to relative luminance

Each 8-bit color channel is normalized and linearized using the current 0.04045 breakpoint. The red, green, and blue results are then weighted.

L = 0.2126 × R + 0.7152 × G + 0.0722 × B

2. Compare the lighter and darker colors

The ratio runs from 1:1 for identical luminance to 21:1 for black and white. Foreground and background order does not change the WCAG 2.2 result.

(L1 + 0.05) / (L2 + 0.05)

3. Compare the unrounded ratio

The pass or fail check uses the full calculated value before the displayed ratio is rounded. Then it applies the selected text-size and conformance threshold.

Best practices for accessible color contrast

Where to test the same pair before a design ships

✓
Must Have

Test the adjacent colors

Check the foreground against the color directly behind it. For a gradient or image, test the least contrasting area the text can cross.

✓
Must Have

Do not rely on color alone

Pair status colors, selected states, charts, and validation messages with text, shapes, patterns, or another visible cue.

✓
Pro Tip

Check every active state

Measure default, hover, focus, selected, pressed, and error states against their adjacent colors. Inactive controls have specific exceptions.

✓
Suggested

Use the rendered size and weight

Only treat text as large at 18pt (24 CSS px) regular or 14pt (about 18.67 CSS px) bold. Smaller text uses the normal-text threshold.

✓
Pro Tip

Document token pairings

Record approved foreground/background pairs and their intended roles. A color token does not pass or fail until it is paired with another color.

✓

Review the finished interface

Recheck implementation after font rendering, overlays, opacity, and state styles are applied. A design-file value can change in production.

Common contrast mistakes to avoid

Four places where a single token-level check can mislead you

Trusting a neutral pair by eye

#777777 on #F5F5F5 looks plausible but measures about 4.11:1. It passes the large-text minimum and fails Level AA for normal text.

Normal Text

Sampling one spot on an image

A photo or gradient can put several backgrounds behind one line of text. Test the least contrasting area or use a solid overlay with a known result.

Text on Image

Checking body text as large text

A 16px label or paragraph is normal text, even when it appears prominent in a compact interface. It needs 4.5:1 for Level AA.

16px Label

Applying the inactive exception too widely

Truly inactive controls are exempt from these contrast criteria. Placeholder text, hover text, focus text, and active control indicators are not.

Inactive Control

Color contrast FAQs

Current WCAG 2.2 thresholds, exceptions, and testing boundaries

Need the whole interface reviewed?

Share the product, design file, or component library. Design Overflow can scope the design and implementation work around states, tokens, and the rendered interface.

Discuss the interface