Color Blindness Simulator
Preview any color or palette through eight color-vision deficiency models — protanopia, deuteranopia, tritanopia, and their anomalous variants — using the Brettel/Viénot simulation matrices.
- Eight CVD types covered, including anomalous trichromacies
- Brettel & Viénot LMS-space simulation, not a hue rotation
- Side-by-side comparison against the original color
- Works on swatches, palettes, and full design tokens
Direct answer
Color Blindness Simulator
Original
#10B981
As deuteranopia
#4F4392
Simulations use Brettel/Viénot/Mollon transformation matrices — standard approximations. Real color vision varies between individuals; use the simulation as a guide, not a definitive accessibility check.
When this saves you time
Real workflows where color blindness simulator replaces tedious manual work or an in-app subscription tool.
Audit categorical chart colors
Verify success / error UI states
Stress-test a brand palette
Choose CVD-safe sequential scales
Distinguish regions on a choropleth
Confirm form validation isn't color-only
How it works
The methodology — every transformation documented so the output is reproducible.
Convert sRGB to linear RGB
The input HEX is gamma-decoded so the simulation operates in physically linear light, not gamma-compressed channel values.
Project into LMS cone space
Linear RGB is multiplied by the Hunt-Pointer-Estevez matrix to produce the response of the eye's L, M, and S cones — the actual receptor system color vision is built on.
Apply the deficiency matrix
For dichromacies we use the Brettel/Viénot 1997 plane projection — the L, M, or S response is replaced with a value computed from the other two cones. Anomalous trichromacies blend the dichromat simulation with the original by a severity factor.
Return to sRGB for display
The simulated LMS is converted back to linear RGB, gamma-encoded to sRGB, and rendered as a HEX you can compare directly to the original.
Worked examples
| Input | Result | Notes |
|---|---|---|
| #FF0000 (pure red) · Deuteranopia | ≈ #8E7C00 (muddy yellow) | Pure red collapses toward yellow — the classic red/green confusion. |
| #00FF00 (pure green) · Deuteranopia | ≈ #E6D200 (muddy yellow) | Green and red converge in the same region under deuteranopia. |
| #2563EB (blue-600) · Tritanopia | ≈ #1E89AB (teal) | Blue shifts toward cyan/teal because the S-cone response is removed. |
| #10B981 (emerald-500) · Protanopia | ≈ #C7B800 (olive) | Greens with a red component lose vibrance for protanopes. |
| #7C3AED (violet-600) · Protanopia | ≈ #3C58D0 (cool blue) | Violet loses its red component and reads as plain blue. |
Common mistakes to avoid
Treating CVD as one condition
Assuming a hue rotation is a simulation
Relying on color alone for state
Skipping tritanopia because it's rare
Frequently Asked Questions
The biology behind the simulation
Human color vision starts with three cone photoreceptors in the retina, peaking near 564 nm (L, red), 533 nm (M, green), and 437 nm (S, blue). Color-vision deficiency means one cone is absent (dichromacy) or its peak is shifted (anomalous trichromacy). The most common cause is an X-linked recessive trait affecting the L or M opsin genes — which is why CVD is far more prevalent in men (one X chromosome) than women (two).
Because the math is well-understood, simulation is not guesswork. The Brettel/Viénot 1997 algorithm projects a color onto the plane spanned by the two remaining cone responses, returning the color a dichromat would perceive as indistinguishable from the original. The Machado 2009 extension handles anomalous trichromacies by interpolation. Both are peer-reviewed and used in academic vision-science research.
Design strategies that survive CVD
The fastest fix is redundant encoding: pair color with shape, label, or position. A success state becomes a checkmark plus green; a chart series gets a dashed line plus a distinct hue. ColorBrewer and Viridis offer pre-computed CVD-safe categorical and sequential scales — use them as a starting point and verify with the simulator.
For interactive UIs, lean on contrast and lightness rather than hue differences. Two colors at different L values (50 vs 80 in OKLCH) remain distinguishable under any CVD type because lightness is preserved across all three cone deficiencies.
When to test, and what to test against
Test early — before the brand palette is signed off — and re-test at component level for anything that uses color as a signal: charts, status indicators, form errors, badges, availability dots, heatmaps, and choropleth maps. Plain text on a surface usually survives CVD because the underlying mechanism (luminance contrast) is unaffected; what fails is anything that distinguishes meaning through hue alone.