BRev Free Tools
At BRev Digital, essentials should be a right — free, forever.
Open in workspacekeep several tools open at once
All tools
Contrast checker

Colour contrast checker — WCAG AA & AAA, free

Check any two colours against the WCAG 2.1 thresholds — 4.5:1 for body text, 3:1 for large text and UI components, 7:1 for AAA — and see the verdict on real sample text rather than as a bare number. When a pair fails, the nearest passing colour is computed for you in both directions, with a keep-the-hue mode so a brand colour survives. Build a palette to get a full contrast matrix, and check the pair through protanopia, deuteranopia, tritanopia and achromatopsia. Everything runs on your device.

Contrast ratioWCAG 2.1 — computed on your device
Foreground / text
Background
2.46:1
Fails every text threshold — this pair is not readable
AA large3:1AA4.5:1AAA large4.5:1AAA7:1UI & graphics3:1
16px — normal body text (needs 4.5:1)
The quick brown fox jumps over the lazy dog, 0123456789.
18.66px bold — counts as large (needs 3:1)
The quick brown fox jumps over.
24px — counts as large (needs 3:1)
The quick brown fox.
12px — small print, still needs 4.5:1
Terms apply. Fine print is held to the same standard as body copy.
ContinueInput border (3:1)
The ratio is rounded down to two decimals before it is judged, so a true 4.4999 reads 4.49 and fails AA. Rounding up would hand you a pass the specification does not give.
Make it passthe nearest colour that clears the bar, in four directions
Text · darker4.53:1
Sample text
L* −18.0hue kept
Text · lighter
Cannot reach 4.5:1 by making the text lighter — the best this direction reaches is 2.46:1.
Background · darker4.54:1
Sample text
L* −75.1hue kept
Background · lighter
Cannot reach 4.5:1 by making the background lighter — the best this direction reaches is 2.46:1.
Keep hue moves only the HSL lightness, so a brand colour stays recognisably itself — but a lightness-only move cannot always reach a high target. Free mixes towards black or white, which desaturates and reaches further. Every suggestion is re-measured before it is shown: the ratio printed on a card is that card's colour against the other one, not an estimate.
Foregroundevery representation of this one colour
black text wins
Hex
RGB
HSL
Oklch
Relative luminance
CIE L*
Hue / saturation
Black text on it8.52:1
White text on it2.46:1
Backgroundevery representation of this one colour
black text wins
Hex
RGB
HSL
Oklch
Relative luminance
CIE L*
Hue / saturation
Black text on it21.00:1
White text on it1.00:1
APCA lightness contrastWCAG 3 draft — informative only, never a conformance verdict
Lc 48.4Lc 45+ — headlines and large display text only
APCA (Accessible Perceptual Contrast Algorithm) is the candidate successor being drafted for WCAG 3. It is polarity-aware — light-on-dark and dark-on-light are scored differently, which WCAG 2 cannot do — and it weights small text more heavily. It is a draft. Nothing you are legally or contractually held to is measured in Lc today; ship against the WCAG 2.1 ratio above and treat this as a second opinion when the ratio is borderline. Implemented from APCA 0.1.9 (SA98G / G-4g constants).
Palette contrast matrixwhich of your colours can sit on which — up to 12
#1a6ae8#0f172a#f8fafc#e11d48#16a34a#f59e0b
text ↓ / bg →#1a6ae8#0f172a#f8fafc#e11d48#16a34a#f59e0b
#1a6ae81.003.634.691.041.492.28
#0f172a3.631.0017.063.805.418.31
#f8fafc4.6917.061.004.483.142.05
#e11d481.043.804.481.001.422.18
#16a34a1.495.413.141.421.001.53
#f59e0b2.288.312.052.181.531.00
AAA (7:1) AA (4.5:1) Large text / UI only (3:1) Fails everythingHover a cell for the exact levels it passes.
Colour-blindness simulationhow the same pair reads to a dichromat
Sample text
Protanopia (no red cone)≈1% of men2.34:1 · #a3a3e8 on #ffffff
Sample text
Deuteranopia (no green cone)≈1% of men — the most common dichromacy2.51:1 · #9c9ce9 on #ffffff
Sample text
Tritanopia (no blue cone)≈0.01% of people, sexes equally2.44:1 · #6dafc6 on #ffffff
Sample text
Achromatopsia (no colour)≈1 in 30,0002.46:1 · #a5a5a5 on #ffffff
Your palette
Deuteranopia (no green cone)
These are approximations. They are computed from cone-fundamental models — Viénot, Brettel & Mollon (1999) for protanopia and deuteranopia, Brettel, Viénot & Mollon (1997) for tritanopia — which model a dichromat with one cone type entirely absent. Most colour-blind people are anomalous trichromats: they have all three cones but one is shifted, so they see more colour than this shows. Use the simulation to catch a design that depends on hue, never to claim a design has been validated.
What the numbers actually meanthe parts of WCAG contrast that are usually got wrong

Why 4.5:1?

WCAG's baseline is 3:1 — the contrast the ISO/ANSI standards treat as the minimum for readable text for normal vision. Success Criterion 1.4.3 then multiplies that by 1.5 to cover roughly 20/40 vision, the loss typical of a person around 80, or of anyone with mild uncorrected sight. That is where 4.5:1 comes from. AAA's 7:1 is the same idea taken to about 20/80 vision, the point at which magnification is usually needed anyway.

What “large text” actually means

Large text gets the easier 3:1 bar because bigger letterforms have thicker strokes, and stroke width is what contrast has to carry. WCAG defines it as at least 18 point, or 14 point bold. At the CSS reference resolution that is 24px, or 18.66px when the weight is bold. A 20px regular heading is not large text; it needs the full 4.5:1. This is the single most common mistake in a hand-written contrast audit.

Non-text still has a bar

SC 1.4.11 requires 3:1 for user-interface components and graphical objects: input borders, the focus indicator, toggle states, icons that carry meaning, and the parts of a chart you have to be able to tell apart. A form field whose border is a 1.6:1 grey is a failure even when the label above it is perfect.

Contrast is not the same as legibility

A ratio is a measurement of two flat colours. It knows nothing about the font. Thin weights, tight letter-spacing, low x-height, long line lengths, italics, condensed faces and text over a photograph all reduce readability at an identical ratio. 21:1 hairline type is harder to read than 7:1 set in a solid weight at a comfortable measure. Treat the ratio as a floor you must clear, not as proof you are done.

The exceptions — and how they are abused

  • Disabled controls and purely decorative text are exempt from 1.4.3. That does not make an unreadable disabled control good design; it makes it legal.
  • Placeholder text has no exemption. It is real text, and pale grey placeholder used as the only label is one of the most common failures on the web.
  • Logotypes are exempt. The rest of your brand colour is not.
  • Text that is part of a photograph is not exempt if it carries information.

Hue-only differences fail before contrast does

Around one man in twelve has some form of colour-vision deficiency. Red and green of similar lightness are the classic trap: a red “error” and a green “ok” can have an excellent contrast ratio against the page and still be the same colour to a deuteranope. WCAG covers this separately under SC 1.4.1 Use of Colour: colour must never be the only way information is conveyed. Add an icon, a label, a shape, or a lightness difference.

Need to lift colours out of an image first? The image colour picker extracts a palette from any picture on your device — paste its hex list into the matrix above to see which of those colours can actually carry text.
Every ratio, suggestion and simulation on this page is computed in your browser. No colour, palette or image is uploaded.