Your files never leave your device. All processing happens locally in your browser.
How do I see how a colour or image looks to someone who is colour blind?
Pick a colour (or a foreground/background pair) or drop an image into the Color Blindness Simulator and it re-renders everything as it would appear under each colour-vision deficiency — protanopia, deuteranopia, tritanopia and full achromatopsia. It decodes each sRGB colour into linear light, applies the physiologically-based Machado, Oliveira & Fernandes (2009) transform, then re-encodes, so the shift is gamma-correct rather than a naive channel swap. A severity slider blends from typical vision to a full dichromat to model the far more common anomalous forms, and a live WCAG 2.x contrast read-out reminds you that contrast is preserved under CVD. Everything runs in your browser — no colour or image is ever uploaded.
Simulate protanopia, deuteranopia, tritanopia and achromatopsia at once
Gamma-correct Machado 2009 model (decode sRGB → transform in linear light → re-encode)
Severity slider from 0% (typical) to 100% (full dichromat) for anomalous forms
Drop in an image or use a built-in inline-SVG sample; download any result as PNG
Live WCAG 2.x contrast ratio — a reminder that contrast alone is not enough
100% client-side — an accessibility preview, not a medical diagnosis
Colour blindness simulation is the process of transforming an image or colour so it approximates how a person with a colour-vision deficiency (CVD) would perceive it. CVD arises when one cone type is absent (dichromacy: protanopia lacks the long/red cone, deuteranopia the medium/green, tritanopia the short/blue) or shifted (the more common anomalous trichromacy), or when cones are non-functional (achromatopsia, near-total colour loss). A physiologically-based method such as the Machado, Oliveira & Fernandes (2009) model derives a 3×3 matrix per deficiency and severity and applies it in linear-light RGB after decoding sRGB gamma, producing a perceptually plausible average-observer preview rather than a per-person or diagnostic result.
No. Colours are just numbers and any image is decoded and drawn to an offscreen canvas in your browser, where the CVD matrices are applied to the pixels. There is no upload, no server and no CDN in the processing path, and nothing is stored.
The simulator is 100% client-side. A colour is held as RGB state and transformed by pure functions in the page; an image is decoded by the browser, drawn to an offscreen <canvas>, read with getImageData, run through the colour-vision-deficiency matrices pixel-by-pixel, and re-drawn — all inside your tab. Nothing is transmitted: there is no upload endpoint, no server-side processing and no CDN involved in reading your image, and the built-in samples are hand-authored inline SVG so even they trigger no download. The tool works offline once cached, and closing the tab discards the image and the results.
It is a good average-observer approximation, not an exact or personal result. It uses the physiologically-based Machado 2009 model in gamma-correct linear light, but real colour vision varies per person, the brain adapts, and your screen’s calibration shifts every colour. It cannot diagnose a deficiency.
This simulator applies the Machado, Oliveira & Fernandes (2009) model, which is derived from the physiology of cone response and is more accurate than naive channel-dropping tools, and it does so correctly — decoding sRGB to linear light before the matrix and re-encoding afterwards. Even so it is an AVERAGE-observer approximation for accessibility preview: individual colour vision differs from person to person, the brain adapts over a lifetime, and monitor calibration, gamut and brightness change every colour on screen. It cannot diagnose the type or severity of a deficiency — only a clinician using an Ishihara plate test or an anomaloscope can — and blue-yellow (tritan) simulation is the least reliable because screens reproduce blues and yellows least consistently.
They are different colour-vision deficiencies: protanopia lacks the red cone and deuteranopia the green cone (both red-green types, the most common), tritanopia lacks the blue cone (rare blue-yellow type), and achromatopsia is near-total colour loss so the world is seen in shades of grey.
Protanopia and deuteranopia are the red-green deficiencies: protanopia is a missing or non-functioning long-wavelength (red) cone and deuteranopia a missing medium-wavelength (green) cone, and together with their milder anomalous forms they account for the vast majority of colour blindness (around 8% of men of Northern-European descent). Tritanopia is a missing short-wavelength (blue) cone, a rare blue-yellow deficiency affecting far fewer people and both sexes roughly equally. Achromatopsia is the near-total absence of colour vision, where only luminance survives, so the image collapses to greyscale — this tool models it with a luminance-preserving greyscale. The severity slider blends each dichromat matrix back toward typical vision to represent the far more common ANOMALOUS (shifted-cone) versions rather than only the complete forms.
Not necessarily. WCAG contrast is based on luminance, which is largely preserved under colour blindness, so a pair can meet contrast yet be hard to tell apart by hue. Passing contrast is necessary but not sufficient — never rely on colour alone.
The WCAG 2.x contrast ratio uses relative luminance, and luminance changes very little under most colour-vision deficiencies, so the ratio shown here is essentially the same for a colour-blind viewer. That is exactly why contrast alone is not enough: two colours — a red and a green of similar lightness, say — can comfortably pass a contrast check and still be nearly indistinguishable to someone with red-green CVD, because what they lose is HUE discrimination, not brightness. The reliable fix is to never encode meaning in colour alone: add shapes, icons, labels, patterns or text, keep a strong luminance difference between items that must be separable, and use this simulator alongside a real contrast check rather than instead of one.
Detailed Explanation
⚙️Methodology
How the Color Blindness Simulator Works
The simulator re-renders a colour or image as it would appear under a colour-vision deficiency (CVD). A pure engine (colorBlindnessEngine.ts) first DECODES each sRGB channel into linear light, applies a 3×3 CVD matrix, then RE-ENCODES back to sRGB — the gamma-correct pipeline that naive tools skip. The matrices come from the physiologically-based Machado, Oliveira & Fernandes (2009) model, which derives a separate matrix for protanopia, deuteranopia and tritanopia at each severity level; achromatopsia is handled as a luminance-preserving greyscale. Colours are transformed as plain numbers and images are processed pixel-by-pixel on an offscreen canvas, entirely in the browser.
Decode sRGB → transform in linear light → re-encode (gamma-correct)
Matrices from the Machado, Oliveira & Fernandes (2009) CVD model
Protanopia, deuteranopia, tritanopia and achromatopsia covered
Achromatopsia rendered as a luminance-preserving greyscale
All transforms run in the browser — no upload, no server
📖How It Works
Severity Slider — Dichromacy vs. Anomalous Trichromacy
Complete colour blindness (dichromacy), where a cone type is entirely absent, is actually less common than ANOMALOUS trichromacy, where a cone is present but its sensitivity is shifted. The Machado model provides a matrix for each severity step from 0 (typical vision) to 1.0 (full dichromat), so the tool exposes a severity slider that blends between them. At 100% you see the extreme dichromat; intermediate values approximate the far more prevalent mild-to-moderate anomalous forms, which is important because most colour-blind users are anomalous trichromats, not dichromats.
Dichromacy = a cone type absent; anomalous trichromacy = a cone shifted
Anomalous forms are more common than complete dichromacy
Slider blends the matrix from 0% (typical) to 100% (full dichromat)
Intermediate values model mild-to-moderate anomalous vision
Lets designers preview realistic, not just worst-case, CVD
📋Use Cases
Why Contrast Alone Is Not Enough
The tool shows the WCAG 2.x contrast ratio for the chosen foreground/background pair, computed with the official relative-luminance formula, and reports AA, AAA and UI-component pass/fail. Crucially, contrast is based on LUMINANCE, which is largely preserved under colour blindness — so the ratio barely changes for a colour-blind viewer. This is exactly why meeting contrast is necessary but not sufficient: two colours can pass a contrast check yet be nearly indistinguishable by hue to someone with red-green CVD. The remedy is to never encode meaning in colour alone and to add shapes, icons, labels or patterns.
Luminance is largely preserved under CVD, so contrast barely shifts
Colours can pass contrast yet be confusable by hue for red-green CVD
Contrast is necessary but not sufficient for colour-blind accessibility
Fix: add shape, icon, label or pattern — never rely on colour alone
🔧Technical Details
Image Simulation on an Offscreen Canvas
Dropping in an image decodes it, draws it to an offscreen <canvas> downscaled so its longest edge is at most 640px for speed, and reads the raw RGBA pixels with getImageData. The engine applies each CVD transform to every pixel and re-draws the result to a canvas, which is exported as a data-URL PNG the user can download. Built-in sample scenes (a traffic light, status chips and a chart) are hand-authored inline SVG, so even the samples trigger no network image download. Nothing is uploaded at any point.
Image drawn to an offscreen canvas, capped at 640px longest edge
Raw pixels read with getImageData and transformed per CVD type
Each simulated image is exportable as a PNG (canvas data-URL)
Built-in samples are inline SVG — no image download
No upload endpoint, no server-side processing, no CDN in the path
⚠️Limitations
An Approximation, Not a Diagnosis
CVD simulation reproduces an AVERAGE observer, not any specific person. Real colour vision varies from individual to individual, the brain adapts over a lifetime, and a monitor’s calibration, gamut and brightness shift every colour on screen, so the preview is inherently approximate. It CANNOT diagnose the type or severity of a deficiency — only a clinician with an Ishihara plate test or an anomaloscope can do that — and the blue-yellow (tritan) simulation is the least reliable because screens reproduce blues and yellows least consistently. It is a design-and-test aid, not a medical instrument.
Models an average observer, not a specific individual’s vision
Real vision varies per person; the brain adapts over time
Monitor calibration, gamut and brightness shift every colour
Cannot diagnose CVD — an Ishihara test or anomaloscope is required
Tritan (blue-yellow) simulation is the least reliable on screens
🔒Privacy & Security
Private by Design
Everything happens on the user’s device. A colour is held as RGB state and transformed by pure functions, and any image is decoded and drawn to an offscreen canvas whose pixels are read and re-coloured in-page — there is no upload endpoint, no server-side processing and no CDN in the path that touches your colour or image. The built-in sample scenes are inline SVG, so even they trigger no image download, and simulated PNGs are encoded locally and downloaded via an in-memory data-URL. The tool works offline once cached, keeps no accounts, sets no tracking, and discards the image and results the moment the tab is closed.
Colours transformed as numbers; images processed on a local canvas
No upload endpoint, no server-side processing, no CDN in the path
Built-in samples are inline SVG — no image download
Simulated PNGs are encoded locally and downloaded in-memory
Works offline once cached; no accounts, no tracking; discarded on close
Colour-vision deficiency types and how this tool simulates them
CVD type
Cause
How it is simulated
Protanopia / protanomaly
Missing or shifted long-wavelength (red) cone
Machado 2009 protan matrix, blended by the severity slider
Deuteranopia / deuteranomaly
Missing or shifted medium-wavelength (green) cone
Machado 2009 deutan matrix, blended by the severity slider
Tritanopia / tritanomaly
Missing or shifted short-wavelength (blue) cone
Machado 2009 tritan matrix; least reliable on typical screens
Achromatopsia
Cones non-functional; only luminance survives
Luminance-preserving greyscale (Rec. 709 weights)
Red-green deficiencies (protan + deutan) are by far the most common; tritan is rare and achromatopsia rarer still. Simulation is an average-observer approximation, not a diagnosis. As of July 2026.