Skip to content
nearnull

Color Blindness Simulator

See how a color palette looks with protanopia, deuteranopia, tritanopia and achromatopsia, and find colors that become hard to tell apart. Runs entirely in your browser. Nothing is sent to any server.

One color per line, in any format. Up to 12 colors.

Simulation
Normal vision The colors as entered
Protanopia No red cones. About 1 in 100 men.
Deuteranopia No green cones. About 1 in 100 men; milder forms affect about 5 in 100.
Tritanopia No blue cones. Rare, well under 1 in 10,000 people.
Achromatopsia No color vision, only brightness. About 1 in 30,000 people.
Hard to tell apart
#2ca02c / #ff7f0e Protanopia · ΔE 4.6
#1f77b4 / #9467bd Protanopia · ΔE 5.7
#d62728 / #2ca02c Deuteranopia · ΔE 7.3
#1f77b4 / #9467bd Deuteranopia · ΔE 8.0
#d62728 / #1f77b4 Achromatopsia · ΔE 1.1
#d62728 / #9467bd Achromatopsia · ΔE 4.6
#2ca02c / #1f77b4 Achromatopsia · ΔE 9.9
#2ca02c / #ff7f0e Achromatopsia · ΔE 9.0
#2ca02c / #9467bd Achromatopsia · ΔE 6.4
#1f77b4 / #9467bd Achromatopsia · ΔE 3.5

What is a color blindness simulator?

Around 8% of men and 0.5% of women have some form of color vision deficiency, most often a reduced ability to tell red from green. A simulator shows how a set of colors appears to them, so you can see whether a chart legend, a status badge or a map still works. This tool transforms each color with the Machado, Oliveira and Fernandes (2009) model for protanopia, deuteranopia and tritanopia, converts it to grayscale for achromatopsia, and flags pairs of colors whose difference drops below a ΔE of 10, the point where they become hard to tell apart.

Examples

The same simulation in code, as a reusable SVG filter, and built into the browser:

JavaScript
// Machado et al. 2009, deuteranopia, on linear RGB
const M = [[0.367322, 0.860646, -0.227968],
           [0.280085, 0.672501,  0.047413],
           [-0.01182, 0.04294,   0.968881]];
const sim = M.map((row) => row[0] * r + row[1] * g + row[2] * b);
Python
import numpy as np

M = np.array([[0.367322, 0.860646, -0.227968],
              [0.280085, 0.672501, 0.047413],
              [-0.01182, 0.04294, 0.968881]])
simulated = linear_rgb @ M.T
SVG filter
<filter id="deuteranopia">
  <feColorMatrix type="matrix" values="0.367 0.861 -0.228 0 0
    0.280 0.673 0.047 0 0  -0.012 0.043 0.969 0 0  0 0 0 1 0" />
</filter>
CSS
/* preview a whole page through the SVG filter above */
html { filter: url(#deuteranopia); }

Use Cases

Checking chart and map palettes

Make sure every series in a chart or every category on a map stays distinguishable, especially the red and green pairs that fail most often.

Status colors in interfaces

Success, warning and error states often rely on green, yellow and red alone. See whether they collapse and add icons or labels where they do.

Reviewing a brand palette

Test a set of brand colors before they're used across a product, so accessibility issues are caught once instead of on every screen.

Explaining accessibility to a team

Show designers and stakeholders what a palette actually looks like to colorblind users, which is more convincing than a guideline.

Frequently Asked Questions

How accurate is the simulation?
It uses the Machado 2009 model at full severity, which is widely used in research and in browser developer tools. Real color vision varies from person to person, and the milder forms (protanomaly, deuteranomaly) are far more common than the full ones, so treat the result as a worst case.
What does the ΔE value mean?
ΔE is the distance between two colors in the CIE Lab color space, which roughly follows human perception. Below about 10 two colors are easy to confuse when they're small or not side by side, so pairs under that threshold are listed.
Why are pairs that look different listed under achromatopsia?
With no color vision only brightness is left, and many palettes use colors of similar lightness. If those colors carry meaning, add a second cue such as a pattern, an icon or a text label.
How do I fix a palette that fails?
Vary lightness as well as hue, prefer blue and orange over red and green for pairs that must contrast, and never use color as the only way to convey information. Palettes such as Okabe-Ito were designed for this.
Is my data sent to a server?
No. Every simulation runs in your browser with plain JavaScript. Nothing you enter is transmitted or stored.