Color Blindness Simulator
See a palette or an image the way a colour-blind viewer does — and find the pairs that stop being distinguishable.
100% is full dichromacy — no working cone of that type at all. Lower values approximate anomalous trichromacy, where the cone is present but shifted, which is much more common. That blend is an approximation; see the notes below.
One hex colour per line, or paste CSS — anything that isn't a hex colour is ignored.
4 colours recognised.
| Vision | #ef4444 | #22c55e | #3b82f6 | #eab308 |
|---|---|---|---|---|
| Normal | #ef4444 | #22c55e | #3b82f6 | #eab308 |
| Protanopia | #756a46 | #d0b85d | #0084f6 | #d4b70a |
| Deuteranopia | #a18d3a | #b6a464 | #0087f6 | #dabc00 |
| Tritanopia | #f03e61 | #5cb6d3 | #0094b5 | #f3a6ae |
| Achromatopsia | #848484 | #acacac | #858585 | #bbbbbb |
Separation is measured in OKLab, so it is a number rather than a judgement about how the swatches look. Contrast is the WCAG ratio after simulation.
Protanopia — no long-wavelength (red) cones
- #22c55e vs #eab308 Close separation 0.046 · contrast 1.01:1 clearly different to normal vision
Deuteranopia — no medium-wavelength (green) cones
- #ef4444 vs #22c55e Close separation 0.077 · contrast 1.33:1 clearly different to normal vision
Achromatopsia — no working cones at all — monochrome vision
- #ef4444 vs #3b82f6 Collides separation 0.003 · contrast 1.01:1 clearly different to normal vision
- #22c55e vs #eab308 Close separation 0.048 · contrast 1.18:1 clearly different to normal vision
Roughly one man in twelve and one woman in two hundred has some form of colour-vision deficiency. This tool shows what your colours look like to them, and — more usefully — tells you which pairs stop being tellable apart. Everything runs in your browser: an image you open here is decoded and processed in the tab, never uploaded.
The four types. Protanopia is the absence of long-wavelength (red) cones, deuteranopia the absence of medium-wavelength (green) cones. Both are red-green deficiencies, both affect about 1% of men, and they are the reason a red/green status indicator is the classic accessibility mistake. Tritanopia — no short-wavelength (blue) cones — is far rarer at roughly 1 in 10,000, and unlike the other two it is not sex-linked. Achromatopsia is the absence of working cones altogether: vision is monochrome, at roughly 1 in 30,000.
What the simulation actually does. The dichromacy simulations use the method of Brettel, Viénot & Mollon (1997). A person missing one cone type cannot distinguish colours that differ only along that cone's axis, so the set of colours they can perceive collapses from a volume to a surface — two half-planes meeting along the neutral grey axis. The simulation projects each colour onto that surface, giving a colour you and they see the same way. The work is done in linear light rather than on sRGB values directly, because projecting gamma-encoded numbers gives the wrong answer. Achromatopsia is Rec.709 luminance, replicated across all three channels.
Worked example. Pure red #ff0000 becomes #6c5c0c —
a dark olive — under protanopia, but #a48b00, a distinctly brighter
yellow-brown, under deuteranopia. Both lose the redness, but only the protanope loses the brightness too, because the missing cone is the one carrying most of the luminance
response at long wavelengths. That difference is a good check on any simulator: if red comes
out equally bright in both, it isn't modelling the luminance loss.
Reading the pair findings. Separation is the Euclidean distance between two
simulated colours in OKLab, a perceptually uniform space — so 0.05 means roughly the same
perceptual gap wherever on the colour wheel it occurs, which is not true of raw RGB or HSL
distance. Below 0.04 the tool calls a pair collides; below 0.10, close. For
scale, the near-identical greys #808080 and #858585 sit at 0.017,
mid-grey against white at 0.400, and black against white at 1.000.
The distinction between clearly different to normal vision and already close for everyone matters more than the raw number. Tailwind's red-500 and green-500 are 0.364 apart normally and 0.077 apart under
deuteranopia — a real accessibility finding. Two colours only 0.02 apart to begin with are a
palette problem for every viewer, and fixing the deficiency case would not help.
A finding people miss: blue and orange survive all three dichromacies well —
Tailwind's blue-500 and orange-500 stay above 0.30 for protanopes,
deuteranopes and tritanopes alike, which is why that pairing is a common recommendation. But
under achromatopsia they fall to 0.070, because they are close in luminance. If your
interface has to survive greyscale printing as well as colour-vision deficiency, check the
achromatopsia row rather than assuming a colour-blind-safe palette covers it.
Limitations, stated plainly. The severity slider blends linearly between normal vision and full dichromacy. That is an approximation of anomalous trichromacy (protanomaly, deuteranomaly, tritanomaly) — the condition most colour-blind people actually have, where the cone exists but its sensitivity is shifted. The rigorous treatment is Machado, Oliveira & Fernandes (2009), which derives a separate matrix per severity step rather than interpolating; the difference is smallest at the extremes and largest in the middle of the range. Two bounds on the pair report: at most 200 colours are compared — every colour is checked against every other, so the work grows with the square of the palette — and the worst 50 pairs are listed per deficiency. Both say so on screen when they apply, and neither changes a verdict: what is reported is reported in full. Beyond that: dichromacy varies between individuals, simulations assume a calibrated sRGB display, and no simulation can tell you what someone else's experience is actually like. Treat the output as a design check, not as a claim about anyone's perception.
What to do about a collision. The fix is rarely a different hue. Separate the colours in lightness rather than hue, and — the part that actually satisfies WCAG — carry the information in something other than colour as well: a label, an icon, a pattern, a position. Colour should be the redundant channel, not the only one.
Related tools: Color Converter for the same colour in hex, RGB, HSL and OKLCH with a WCAG contrast checker, and Color Palette Generator to build a harmonious palette to test here.
How do I check if my colors are color-blind friendly?
Paste your palette as hex colors, then read the "Pairs that stop being distinguishable" section. It compares every pair under all four deficiencies and flags the ones that lose their separation. A pair marked "clearly different to normal vision" is the real finding — those are the pairs a colour-blind viewer loses that you do not.
What is the difference between protanopia and deuteranopia?
Protanopia is the absence of long-wavelength (red) cones; deuteranopia the absence of medium-wavelength (green) ones. Both confuse red with green, but protanopes also lose brightness in reds, because the missing cone carries most of the luminance response at long wavelengths. Pure red simulates to #6c5c0c for a protanope and the noticeably brighter #a48b00 for a deuteranope.
Which simulation method does this use?
Brettel, Viénot & Mollon (1997) for the three dichromacies, computed in linear light. That method projects each colour onto the two half-planes a dichromat can perceive. The simpler Viénot 1999 single-matrix variant is a fine approximation for red-green deficiencies but is not valid for tritanopia, so this tool uses the two-half-plane form throughout. Achromatopsia is Rec.709 luminance.
Is red and green the only pairing I need to worry about?
No. Blue and purple collide badly for protanopes — indigo #6366f1 and violet #8b5cf6 are 0.063 apart normally and 0.009 apart under protanopia. And any pair close in luminance, like blue and orange, collapses under achromatopsia and in greyscale printing even though it survives all three dichromacies.
What does the severity slider mean?
100% is full dichromacy — the cone type is entirely absent. Lower values approximate anomalous trichromacy, where the cone is present but its sensitivity is shifted, which is much more common than full dichromacy. The blend is a linear approximation; the rigorous model is Machado et al. (2009).
Are my images uploaded anywhere?
No. The image is decoded with createImageBitmap and processed on a canvas in your tab. There is no network request at any point, and you can load the page, go offline, and it still works.
How do I fix a pair that collides?
Separate them in lightness rather than hue, and make sure the information is carried by something besides colour — a label, an icon, a shape, or a position. WCAG requires that colour is never the sole means of conveying information, so a redundant channel fixes the accessibility issue whether or not the hues are distinguishable.