Colour vision simulator
Drop in an image or paste a palette and see it the way roughly one man in twelve and one woman in two hundred sees it. Severity is adjustable, because most colour vision deficiency is partial rather than total.
This is not a contrast check. Colour vision deficiency changes which hues can be told apart. It does not reduce contrast sensitivity, acuity or reading speed. A red and a green that collapse into the same muddy tone here may still have perfectly good luminance contrast, and text that fails a contrast check fails it for everyone, colour vision deficient or not. The two questions are separate, so answer them separately: use the WCAG contrast grid or the APCA contrast grid for legibility, and this page only for whether your colours stay distinguishable.
Severity
At 100% this is dichromacy, the full absence of one cone type. Most people with a colour vision deficiency are anomalous trichromats, somewhere in the middle of this slider.
An image
The image is read in your browser with a canvas. It is never uploaded.
As you see it
Original
Protanopia
Long-wave cone. About 1% of men. Machado 2009.
Deuteranopia
Medium-wave cone. About 6% of men, the most common. Machado 2009.
Tritanopia
Short-wave cone. Rare, and affects men and women equally. Brettel 1997.
A palette
How this is calculated
Every pixel is converted from sRGB to linear light before the matrix is applied, and converted back afterwards. Applying these matrices straight to sRGB values is the usual mistake and it produces visibly wrong, over-dark results, because sRGB is not proportional to light.
Protanopia and deuteranopia use Machado, Oliveira and Fernandes (2009), which provides a separate matrix for each tenth of severity, derived from a shift in the cone's spectral response. Intermediate positions on the slider are interpolated between the two neighbouring matrices. This is not the original faded toward the simulation: a 40% protanomalous view is its own physiological model, and it is not simply 40% of the way to protanopia.
Tritanopia uses Brettel, ViƩnot and Mollon (1997), projecting onto one of two half-planes in cone response space depending on which side of the neutral axis the colour falls. Machado's model was fitted for the red-green axes and is less reliable on the blue-yellow one, so it is not used here. Brettel describes full dichromacy only, so the severity slider does interpolate toward the original for tritanopia. That difference is worth knowing: the tritan panel at 50% is a blend, the protan and deutan panels at 50% are not.
Every matrix here preserves the neutral axis, which is the check that they are right: greys and white come through unchanged, because a dichromat sees them exactly as you do.
What to do with it
If two colours in your palette converge here, they are not carrying information on their own. Add a second channel: a label, a shape, a pattern, a position, or a difference in lightness large enough to survive. Lightness is the reliable one, since it is untouched by colour vision deficiency.
Related
Build an evenly bright palette in the OKLCH palette generator, then check it for legibility in the WCAG or APCA grid.
Runs entirely in your browser. Nothing is uploaded, nothing is stored, no network calls. Back to tools.
