Color Blindness Simulator
← All toolsTwo swatches that read as different colours to you can land on the same colour for the roughly 8% of men with a red-green deficiency. Put your palette in and this says which pairs — not just what the palette looks like, but which two of them stopped being two.
100% is full dichromacy. Anything below it is the anomalous form, which is the far more common one.
Your palette as you see it
Simulated Deuteranopia
The matrix actually being applied
Viénot, Brettel & Mollon (1999). Applied to linear RGB, then re-encoded through the sRGB transfer curve. Below 100% severity it is blended toward the identity, which is what the numbers show.
An image the secondary mode
Drop an image here, or click to choose one. It never leaves this tab.
A simulation approximates. It does not certify.
What you are looking at is a population model of one kind of colour vision, rendered on your display, in your lighting, through your eyes. It is a good way to find the pairs that are likely to be a problem and a bad way to conclude that a design is accessible. Nobody with a colour vision deficiency sees exactly this, and no browser tool can tell you what any individual person sees.
Treat a clean report as "nothing obvious here" rather than as a pass. The reliable fix is not to find colours that survive the simulation — it is to stop colour carrying meaning on its own. A legend with shapes as well as colours, a line with a dash pattern, a status with a word next to the dot: those work for every deficiency at once, including the ones no simulator models well.
Contrast is a separate question with separate thresholds, and this page does not answer it. Two colours can be clearly distinguishable to everyone and still fail as text on a background. The contrast checker is the other half.
How the collision report works
Every pair of swatches is converted to CIE Lab and measured twice: once as you entered it, once after simulation. A pair is flagged when it started at least 10 ΔE*ab apart — far enough that you can tell them apart — and finishes under 10, which is where a pair stops reading as two colours and starts reading as one colour twice.
The threshold is stated because it has to be. Under about 2.3 ΔE*ab is the classic just-noticeable difference, and a report using that would fire on almost nothing. Ten is a judgement, but it is a stated one, and both numbers are on screen for every flagged pair so you can disagree with it and still use the answer.
What each mode simulates
Deuteranopia and deuteranomaly come from the M cone being absent or shifted. Around 6% of men are somewhere on this axis, which makes it by far the most important row in the table. Protanopia and protanomaly are the L cone, at around 2% of men, and they also darken reds noticeably, which the simulation reproduces. Achromatopsia collapses everything onto luminance — vanishingly rare, and the strictest single test you can put a palette through, because anything that survives it is carrying its meaning in lightness rather than in hue.
Tritanopia is not here. Viénot 1999 does not publish a matrix for it, because the single-plane reduction that model uses is not valid on the S-cone axis; doing it properly means implementing Brettel 1997's two half-planes and the test that picks between them. Rather than borrow a coefficient from a different model and not say so, this page leaves it out and says why.
FAQ
- Which simulation model is this?
- Viénot, Brettel & Mollon (1999), 'Digital video colourmaps for checking the legibility of displays by dichromats', Color Research & Application 24(4), 243-252. One 3x3 matrix per deficiency, applied to linear RGB — the sRGB gamma comes off first and goes back on afterwards, because the matrix is a statement about light rather than about the numbers in a PNG. The exact coefficients in use are printed on the page, straight out of the table the simulation runs on.
- Why is there no tritanopia?
- Because Viénot 1999 does not publish one. The single-plane reduction that paper derives is valid for the L and M cone axes and is not valid for the S axis; simulating tritanopia properly needs Brettel 1997's two half-planes and an axis test to pick between them. A tritan matrix would have to be invented or borrowed from a different model, and a page that mixes models without saying so is worse than one that is missing a rare deficiency. Tritanopia affects well under a tenth of a percent of people; deuteranomaly, which this page does simulate, affects around 6% of men.
- What does the severity slider actually do?
- It blends the matrix toward the identity in linear light, so 50% lands halfway in the eye rather than halfway along a gamma curve. That is an approximation of anomalous trichromacy, not a published model of it: Machado, Oliveira & Fernandes (2009) fit severity properly from shifted cone fundamentals, and this is not that. It is here because deuteranomaly is far more common than deuteranopia, so a dichromat-only tool misses the usual case entirely.
- Where does the collision threshold come from?
- CIE76 ΔE*ab, with a cutoff of 10. Under about 2.3 is the classic just-noticeable difference (Mahy, Van Eycken & Oosterlinck, 1994), which is far too strict here — it would only flag pairs that were already almost identical. 10 is roughly where a pair stops reading as two colours and starts reading as one colour twice. The report uses it in both directions: a pair is flagged when it was at least 10 apart to begin with and lands under 10 once simulated. CIE76 is Euclidean distance in Lab; CIEDE2000 is more accurate for saturated blues, and this site made the same trade in its colour-name lookup and says so there too.
- Does a clean report mean my palette is accessible?
- No. A simulation approximates one person's colour vision from a population model; it does not certify anything, and no browser tool can. It tells you where to look. Colour should never be the only thing carrying meaning in the first place — pair it with a label, a shape, a pattern or a position, and check the pairs that matter for contrast as well, which is a different question with its own thresholds.
- Is my image uploaded anywhere?
- No. The file is read by your own browser, drawn to a canvas in this tab and processed pixel by pixel here. Nothing is sent anywhere, which is also why the preview is capped at 520px on its long edge: every pixel costs a matrix multiply on your machine.