Color Blindness Palette Simulator
Simulate protan, deutan and tritan vision for a palette and find colors that become confusable.
Try an example: Five classic chart colors · Red and green status colors, mild deutan
How it works
Paste 2–24 colors and simulate protanomaly, deuteranomaly and tritanomaly from mild to full dichromacy with the Machado, Oliveira and Fernandes (2009) model. Pairs whose simulated CIEDE2000 difference falls below your threshold are listed, so you can fix chart, map and UI palettes before anyone squints.
- Each color is gamut-mapped to 8-bit sRGB, decoded to linear light and multiplied by the Machado, Oliveira and Fernandes (2009) simulation matrix. The published matrices cover severities 0–100% in 10% steps; other severities interpolate linearly between the two nearest matrices, as the authors suggest. 100% simulates dichromacy.
- For normal vision and each simulated type, every pair is compared with CIEDE2000 in CSS Lab (D50). Pairs below the threshold are reported as confusable, together with their normal-vision difference; pairs that are already too close in normal vision are listed once, under normal vision.
- The threshold is a design heuristic, not a standard: around 10 suits small chart marks and thin lines, larger areas tolerate less. Individual color vision varies; the simulation is an approximation and does not certify accessibility. Do not rely on color alone — add labels, patterns or shapes.
Sources
- Machado, Oliveira and Fernandes (2009): A Physiologically-based Model for Simulation of Color Vision Deficiency, IEEE TVCG 15(6) (UFRGS)
- Sharma, Wu and Dalal (2005): The CIEDE2000 color-difference formula — implementation notes, supplementary test data (University of Rochester)
- CSS Color Module Level 4 (color spaces, gamut mapping, named colors, sample code) (W3C)
Part of Lumina
-
Lumina Photo editor & image toolkit
Bring out what you saw. A free photo studio, right in your browser.
Related tools
- Delta E Color Difference (CIEDE2000) – Measure color differences with CIEDE2000, CIE94, CIE76 and OKLab, with a pass/fail tolerance.
- OKLCH Palette & Tint Scale Generator – Build perceptually even tint scales and hue harmonies in OKLCH, gamut-mapped for CSS.
- Palette Contrast Matrix – Check every palette color pairing against WCAG text contrast thresholds.
- Color Converter & Gamut Mapper (OKLCH, Lab, P3) – Convert any CSS color to HEX, RGB, HSL, Lab, LCH, OKLab, OKLCH and Display P3.
How to check a palette for color blindness
Simulate protan, deutan and tritan vision for a palette at any severity and find color pairs that become hard to tell apart.
What it is for
Color vision deficiency is common, especially among men, and most often means a weaker red (protan) or green (deutan) response. A chart legend, map or status badge that relies on red versus green can simply stop working for them.
This tool simulates three types — protan, deutan and tritan — with the physiologically based model of Machado, Oliveira and Fernandes (2009), from mild anomalous trichromacy (10 %) to full dichromacy (100 %). It then measures every pair of simulated colors with CIEDE2000 and lists the pairs that fall below your confusion threshold, together with how different they were in normal vision. You find the weak spot before publishing, not after a reader complains.
Simulation is an approximation of typical vision, not a diagnosis or an accessibility certificate.
Worked example
Paste the five classic chart colors #D62728 #2CA02C #1F77B4 #FF7F0E #9467BD, keep All three types, severity 100 % and threshold 10. The answer: Confusable color pairs below ΔE2000 10: 4.
| Vision | Colors | Simulated ΔE2000 | Normal ΔE2000 |
|---|---|---|---|
| Protan | 2 and 4 | 1.32 | 55.21 |
| Protan | 3 and 5 | 1.93 | 28.72 |
| Deutan | 1 and 2 | 4.75 | 69.9 |
| Deutan | 3 and 5 | 6.27 | 28.72 |
Green and orange (2 and 4) are 55 apart for typical vision but practically identical (1.32) under protanopia: both become an olive near #A39119. Blue and purple merge for both red-green types. Tritan vision keeps every pair above 11.56.
Now try the Okabe–Ito palette #0072B2 #E69F00 #009E73 #CC79A7 #56B4E9 #D55E00. Result: No pair falls below ΔE2000 10; the smallest differences are 12.73 (protan), 12.51 (deutan) and 11.15 (tritan). That is why it is a popular default for scientific charts.
How to read the result
- The swatch image shows the palette in normal vision and in each simulation.
- Simulated colors lists the HEX each color turns into.
- Confusable pairs names the colors by position, with their simulated and normal-vision difference. A low simulated value with a high normal value is a pair that only fails for color-blind viewers.
- Smallest ΔE2000 per type gives a one-number score for comparing palette versions.
Tips and common mistakes
- The threshold is a heuristic. About 10 suits thin lines and small markers; large filled areas tolerate lower values.
- Fix confusions by changing lightness, not just hue: a dark green and a light orange stay distinct in every simulation.
- Mild severities (30–60 %) are far more common than dichromacy; test both.
- Never use color as the only cue. Add labels, patterns, shapes or line styles.
- Lumina's Palette Studio → Color-vision preview runs the same engine and can also simulate the current photo.
FAQ
Which model is used?
Machado, Oliveira and Fernandes (2009). Their published matrices cover 0–100 % in 10 % steps; values in between are interpolated linearly, as the authors recommend.
Why is there no achromatopsia option?
The Machado model covers anomalous trichromacy and dichromacy only. Total color blindness is rare and needs a different model.
Does the tool check text contrast too?
No. Use the Palette Contrast Matrix for WCAG text contrast.
Is a passing palette guaranteed to be accessible?
No. Individual vision varies, and screens and lighting change colors.
Guide last updated:
For scripts and AI agents
- JSON API:
POST https://luminacvdsimulator.usefulweb.app/api/v1/calculate(same calculation as this page) - Interface description: OpenAPI 3.1 · AI guide: llms.txt
- MCP server (Streamable HTTP):
https://luminacvdsimulator.usefulweb.app/mcp· tool namelumina_cvd_simulator
Example request
curl -s -X POST https://luminacvdsimulator.usefulweb.app/api/v1/calculate \
-H 'content-type: application/json' \
-d '{"colors":"#D62728 #2CA02C #1F77B4 #FF7F0E #9467BD","type":"all","severity":100,"threshold":10}'