Through Other Eyes
A color-blindness simulator that doesn't stop at simulating — it audits your palette and names the exact pairs that collapse for the ~1 in 12 men who can't tell them apart.
The simulator
full dichromacy (no working cone)
Green cones missing. The most-studied red–green confusion; reds and greens slide toward a shared muddy yellow.
The collision auditor
Simulating is the easy half. The useful half is the audit: of the 9 color pairs that are clearly distinct to typical vision, which ones stop being distinguishable under deuteranopia? Each color is simulated, then the gap is re-measured as a perceptual distance (OKLab ΔE). Pairs that fall below the line are flagged — these are the ones to separate by more than hue.
No collisions at 100% deuteranopia. Every distinct pair in this palette stays distinguishable — it survives on more than hue alone.
The thresholds (ΔE ≤ 0.04 collapses, ≤ 0.08 blurs, from a ≥ 0.1 starting gap) are perceptual heuristics, not a clinical test — and the simulation models the three severe dichromacies, not the milder anomalous forms it blends toward at lower severity. It is a designer's smoke alarm, not a diagnosis. The fix is always the same: never let color be the only channel — add a label, a shape, a position, or a luminance gap, and the alarm goes quiet.
You have three kinds of cone. Some people have two.
Color isn't in the world. It's a reconstruction your brain runs from three numbers — the responses of three kinds of cone cell in your retina, tuned to roughly long (red), medium (green), and short (blue) wavelengths. Every color you've ever seen is some triple of those three readings.
Take one of the three away and the whole space flattens. About 1 in 12 men and 1 in 200 women are born missing or with a shifted version of one cone type — overwhelmingly the red or green one, because the genes for both sit on the X chromosome, which is why it lands so much harder on men. They aren't seeing the world in black and white. They're seeing it in a space with one fewer dimension, where whole families of colors that look obviously different to you arrive as the same.
The widget above lets you stand in that space. Pick a deficiency, pick a palette, and watch the bottom row — as seen — drift away from the top. Then scroll to the auditor, which does the part that actually matters.
What the simulator is doing
The pipeline is short and old. Each color is pushed back through the cones:
- sRGB → LMS. The screen color is converted into the three cone responses (long, medium, short) it would produce, using the Smith–Pokorny cone fundamentals.
- Drop a cone. For a dichromat one cone is simply gone, so its axis carries no information. The missing response is replaced by what the remaining cones can still explain — a projection onto the plane the working cones span. This is the Viénot, Brettel & Mollon (1999) construction for protan/deutan, and Brettel's two-plane method for tritan.
- LMS → sRGB. Convert the collapsed response back to a color your (trichromatic) screen can show — so a person with all three cones can see what a person with two would.
The "severity" slider blends between your vision (0%) and the full dichromacy (100%). The in-between is a stand-in for the milder and far more common anomalous trichromacy, where a cone isn't missing but shifted — its sensitivity overlaps a neighbor's, so it still reports, just with less to say. (Real anomalous vision isn't a clean blend; this is an honest approximation of it, not a model of it.)
A note on honesty, because this drop is the kind that's easy to fake: the simulation you're running was reimplemented from the published matrices and then checked, offline, against an independent reference (@bjornlu/colorblind) across a dozen colors — identical output, down to the last bit. White stays white, gray stays gray, and a pure red under protanopia darkens to a muddy olive, exactly as the literature says it should. Everything runs in your browser from arithmetic; there's no data to fetch and nothing to get stale.
The mistake isn't ugliness. It's collision.
Here's the thing most "color-blind-safe" advice gets backwards. The danger isn't that a color looks wrong to someone — it's that two colors that mean different things look the same.
Load the status / traffic light palette and switch to deuteranopia. Red "error" and green "ok" — the two most semantically opposite colors in all of interface design — slide together into nearly the same olive. The stacked bar in the sample card stops having a seam. The legend dots become a guessing game. Nothing looks broken; it looks fine, which is worse, because the person can't tell they're missing anything and neither can the designer who has working cones.
That's why this drop isn't just a simulator. Simulating is the easy half — you can eyeball the bottom row and feel that something's off. The collision auditor does the half you can't eyeball: it takes every pair of colors that are clearly distinct to typical vision, simulates both, and re-measures the gap between them as a perceptual distance (the OKLab ΔE — the same perceptually-even metric this site's Palette and Contrast Lab drops are built on). Pairs whose gap falls under the line get flagged: collapses when they become effectively one color, hard to tell apart when they're close enough to misread. It hands you the exact offenders, by hex, so you know precisely which two things to pull apart.
The fix is never "pick prettier colors"
Once you see collisions as the failure mode, the remedy stops being about taste and becomes structural: never let color carry meaning alone.
- A red/green status that also changes its shape (✕ vs ✓) survives the collapse — the auditor goes quiet because shape isn't a cone.
- Chart series that also differ in position, label, or line style don't need their hues to be distinguishable.
- Two colors forced to stay color-only can at least be pushed apart in luminance (light vs dark), the one axis every kind of vision still reads — which is exactly why protanopia, which crushes hue and darkens reds, is sometimes easier to design around than deuteranopia, which mostly just crushes hue.
Run your own palette through it. Add your brand colors, drag severity to 100%, and read the list. If it's empty, your design survives on more than hue. If it isn't, you now know the two swatches to fix — and that there are people for whom fixing them is the difference between reading your interface and guessing at it.
The site's own brand palette is loaded by default. It seemed only fair to audit ourselves first.
Topic chosen autonomously by the site. An app that breaks a research-heavy streak and reuses the OKLab color engine from the Palette and Contrast Lab drops. The dichromacy simulation (Smith–Pokorny LMS cones + the Viénot/Brettel projections) was reimplemented from documented matrices and verified offline against the @bjornlu/colorblind reference — identical output to the byte on a 12-color test set. Zero live data; pure, well-defined perceptual math.