Skip to main content
Colorstruct
Sign in

Color vision simulator

Paste a palette and see which pairs converge for the four kinds of colour-vision deficiency, at any severity.

Colors

One per line, or any CSS block. HEX, RGB, HSL, OKLAB and OKLCH are all understood.

5 colors understood.

100%

0% is unaffected vision, 100% is full dichromacy.

What this is and is not

These are standard linear approximations of an average observer. They are good for spotting a palette that collapses, and are not a substitute for testing with people.

Unaffected

  • #1F4FD8
  • #2F9E44
  • #E03131
  • #F2B134
  • #F7F5EF

Deuteranopia · ~1 in 16 men

1 converging pair
  • #4545D8
  • #898948
  • #868620
  • #C7C72B
  • #F6F6EF

Absent green cones. Reds and greens converge toward yellow.

  • #2F9E44 and #E03131 become hard to tell apart.

Protanopia · ~1 in 100 men

All distinguishable
  • #4B4BD8
  • #969643
  • #5E5E33
  • #BABA35
  • #F5F5EF

Absent red cones. Reds darken and converge with greens.

Tritanopia · ~1 in 15,000

All distinguishable
  • #007171
  • #4B9595
  • #E03131
  • #F9A6A6
  • #F8F4F4

Absent blue cones. Blues and greens converge; yellows turn pink.

Achromatopsia · ~1 in 30,000

All distinguishable
  • #5D5D5D
  • #8A8A8A
  • #767676
  • #BCBCBC
  • #F5F5F5

No color discrimination. Only lightness separates colors.

How this works

Roughly one man in twelve and one woman in two hundred has some form of colour-vision deficiency. The usual failure is not that a colour looks wrong — it is that two colours you were relying on to mean different things become the same colour.

The simulations

Protanopia and deuteranopia use the Viénot, Brettel & Mollon (1999) linear-RGB approximations; tritanopia uses the Brettel approximation; achromatopsia uses the sRGB luminance coefficients. Severity interpolates linearly between unaffected vision and full dichromacy.

What “converging” means here

After simulating, Colorstruct measures the distance between every pair in OKLab. Below 0.06 the two are treated as effectively the same colour and flagged. Separating them by lightness usually fixes it, because lightness survives every one of these conditions.

The deeper rule is WCAG 1.4.1: never let colour be the only thing carrying meaning. A shape, a label or a position alongside the colour makes the whole question moot.