Hi There!
I put together this tool to simulate what having a color vision deficiency, or CVD, may look like to normal trichromats (people with normal color vision). This tools works by calculating how stimulated the L (long wavelength), M (medium wavelength), and S (short wavelength) cone cells of a person with a CVD would be when looking at the image on a specific display. Then the color that would produce that same stimulation in normal trichromats is calculated and displayed.
What Does All This Stuff Do?
Simulation Methods - Machado 2009
This method is the current state-of-the-art in CVD simulation. It takes the raw RGB values and uses them to drive a virtual display. The spectra emitted by the display is absorbed by L and M cones which have been shifted (via a linear interpolation) to simulate either Protan type (L moves toward M) or Deutan type (M moves toward L). After calculating how stimulated each of these cones would be the inverse process is applied, but with normal cone sensitivities. This yields the RGB values that the given display would need to be driven with in order for a normal trichromat to see what someone with the given color vision deficiency would see.
Simulation Methods - Shapinsky 2026
This is my personal approach which builds on top of the work of Machado 2006 with some "improvements" for the digital age. It is important to note that unlike the first method, this method has not been tested for accuracy or reviewed by anyone who knows anything.
This method, like the previous one, relies on a set of display primaries (what the red, green and blue channels of a display look like spectrally) to produce a simulated spectrum against which the stimulation of L, M and S cones can be calculated. However, unlike Machado I have added a "calibration step" where, instead of the RGB values from the image being used to drive the display directly I first calculate how they would be driven if the monitor had been calibrated properly this explains most of the difference between the two approaches and why my method leads to more similar results with different sets of primaries.
Another major difference is that instead of using interpolation to calculate the new LMS sensitivities I use a photopigment/optical filter model. This uses the work of Govardovskii 2000 (provides templates for A1 photopigments, which humans have), Stockman, Sharpe and Fach 1999 (lens density spectrum), and Bone, Landrum and Cairns 1992 (macular pigment density), to model the LMS sensitivities of a theoretical human fovea. This allows a lot more freedom to shift the cones to wherever you want and also allows the simulation to be more sensitive to certain types of display differences.
The last major difference is that my method applies a Von Kries chromatic adaptation transform, which just corrects for any white point shifts the image may have picked up while being transformed. This mimics the system in the brain which corrects for different colors of light.
Color Vision Deficiency types - Protan
When the L cone's sensitivity is shifted toward the M cone this is called Protan(omaly/opia). This is one of the most common kinds of color blindness and results in certain reds and greens becoming less discernible. Protanopia refers to cases where the sensitivity of the L cone has shifted so much that it is now indistinguishable from the M cone. Protanomaly refers to all other cases where the L cone has shifted.
Color Vision Deficiency types - Deutan
When the M cone's sensitivity is shifted toward the L cone it is called Deutan(omaly/opia). This is another common kind of red/green color blindness. Like Deutan, Protanopia is when the M cone has completely shifted to have the same sensitivity as the L cone and Protanomaly is when that shift is not complete.
Color Vision Deficiency types - Tritan
Tritan type CVD is the most rare of the three main classes. It refers to shifts in the sensitivity of the S cone which result in difficulty distinguishing between blue and green. Like the other cases -opia refers to a complete shift (onto the M cone) and -omaly refers to all other cases.
Cone Sensitivity
Select a Test Image
, drag or an image to use your own.