Back to Home 100% Free

Colorblind Simulator & Contrast Suite

Simulate color vision conditions on images and check WCAG typography contrast pass ratings.

Simulator Parameters

Load a graphic and select a simulation mode.

Select Vision Mode

Image Vision Preview

Upload a photo to preview simulated outputs.

The Importance of Color Contrast in Accessible Design

Modern digital inclusion laws require websites and applications to satisfy standard **WCAG 2.1 accessibility criteria**. This ensures that individuals with low-vision or color-blindness can navigate and parse text interfaces cleanly. Contrast checks are calculated using the relative luminance ratio of the text color versus the background block color.

Standard WCAG AA requirements dictate a minimum contrast ratio of **4.5:1** for regular body typography and **3.0:1** for large header titles. The stricter WCAG AAA standard demands a **7.0:1** ratio for normal text and **4.5:1** for large fonts. Our suite provides real-time mathematical validation of these ratios to help designers configure accessible templates.

What This Simulator Actually Simulates

To be precise about what's happening under the hood: this tool simulates four distinct color-vision conditions using SVG feColorMatrix filters applied directly to an uploaded photo — not to abstract sample swatches, and not to a live webcam feed. You upload a real image file, and the simulation redraws that exact image on an HTML5 <canvas> element with a color transformation matrix applied via ctx.filter = url(#filter-id), referencing an SVG filter defined in a hidden block at the top of the page. The four conditions, matched to their actual matrix definitions in the page source, are:

  • Protanopia (red-blind) — absence of long-wavelength (red) cone photoreceptors, simulated by redistributing the red channel's contribution into green and blue.
  • Deuteranopia (green-blind) — absence of medium-wavelength (green) cone photoreceptors, the single most common form of hereditary color blindness, affecting roughly 1% of men.
  • Tritanopia (blue-blind) — absence of short-wavelength (blue) cone photoreceptors, a much rarer condition than the red/green forms.
  • Achromatopsia (monochrome vision) — complete absence of functioning cone cells, simulated here with the standard luminance-weighted grayscale formula (0.299R + 0.587G + 0.114B) applied identically to all three output channels.

It's worth being honest about the nature of this kind of simulation: these feColorMatrix transforms are a widely used, well-established approximation of how color-deficient vision perceives an image — they are a useful and broadly accurate design-review aid, but no browser-based color matrix can perfectly replicate every individual's real visual experience, since color blindness varies in severity even within the same named category (for example, "anomalous trichromacy" — partial rather than complete loss of a cone type — is more common than full dichromacy but isn't separately modeled by this simulator's four presets).

How to Use the Vision Simulator, Step by Step

  1. Click "Choose Image File" and select a PNG, JPG, JPEG, or WEBP image from your device — the file is read locally with the browser's FileReader API and displayed on the canvas preview.
  2. Click any of the five Vision Mode buttons (Normal Vision, Protanopia, Deuteranopia, Tritanopia, Achromatopsia) to instantly re-render the same image with that filter applied.
  3. Compare how UI colors, charts, or brand palettes shift under each condition — this is especially revealing for images containing red/green status indicators, since protanopia and deuteranopia can make them nearly indistinguishable.
  4. Click "Download Simulated Image" to save the currently filtered canvas as a PNG file, useful for including in a design review deck or an accessibility audit report.

How the Contrast Checker's Math Works

The Contrast Checker tab implements the exact relative luminance formula defined in the WCAG 2.x specification, not a simplified approximation. For each color, the sRGB channel values are first linearized (gamma-corrected) using the standard piecewise formula, then combined with the perceptually-weighted coefficients 0.2126 (red), 0.7152 (green), and 0.0722 (blue) — weights that reflect how much each channel contributes to perceived brightness to the human eye. The contrast ratio between two colors is then (L1 + 0.05) / (L2 + 0.05), where L1 is the lighter color's luminance and L2 is the darker one's. This is the same formula used by dedicated contrast-checking tools and browser accessibility inspectors, so a ratio reported here (e.g. "4.52:1") will match what you'd get from other WCAG-compliant checkers for the same two hex colors.

One accuracy note for the text-input fields: typing a hex value directly into the Background or Text Color text box requires the full 6-digit form (e.g. #7C3AED); 3-digit shorthand hex codes (like #7CA) are not recognized by the input's validation pattern and will be silently ignored rather than expanded to their 6-digit equivalent. The color-picker swatches next to each field always work regardless, since they emit a full 6-digit value automatically.

Real-World Use Cases

  • Design system audits — checking whether a button, badge, or alert color palette remains distinguishable for the roughly 8% of men and 0.5% of women with some form of color vision deficiency.
  • Data visualization review — confirming that chart color scales (especially red/green "good/bad" indicators) don't collapse into a single indistinguishable hue for protanopic or deuteranopic viewers.
  • Marketing & brand asset checks — previewing how a logo or infographic reads under different color-vision conditions before a print or campaign launch.
  • WCAG compliance documentation — generating pass/fail contrast ratio evidence for AA and AAA conformance claims during an accessibility audit.
  • Developer & QA education — giving engineering teams a fast, visceral sense of why "don't rely on color alone to convey information" is a real WCAG success criterion, not just a checkbox.

Common Mistakes When Designing for Color Blindness

  • Relying on hue alone for status. Pure red-vs-green indicators (form errors, chart trends, availability dots) are the single most common accessibility failure this simulator will expose — pairing color with an icon, label, or pattern fixes it.
  • Testing only the "worst case" condition. Deuteranopia is the most common form, but tritanopia can fail on a completely different set of color pairs (typically blue/yellow or blue/green combinations) — check more than one mode before shipping.
  • Passing contrast in isolation but failing in context. A ratio can technically pass WCAG AA while still being hard to read at small sizes, low opacity, or on a busy background image — always sanity-check the live sample text preview, not just the numeric ratio.
  • Forgetting large-text thresholds. WCAG defines "large text" as roughly 18px+ (or 14px+ bold), which only needs to pass a 3.0:1 ratio instead of 4.5:1 — the font-size field here directly controls which threshold the AA/AAA checks apply.

How This Compares to Desktop & Browser-Extension Simulators

Dedicated accessibility suites like Sim Daltonism (macOS), Color Oracle (Windows/macOS/Linux), and browser extensions like the Chrome "Colorblindly" plugin offer a similar core feature — a real-time color-vision filter — but as installed software or a persistent extension that can filter your entire screen live, not just a single uploaded image. That's genuinely more convenient for continuously reviewing a live prototype or an in-progress design tool as you work. This web-based tool trades that "always-on, whole-screen" convenience for zero installation: no admin rights, no extension permissions, no software to keep updated, and no risk of a browser extension quietly gaining access to every page you visit afterward — you upload one image when you need a check, get your answer, and the tab can be closed without leaving anything behind. For a one-off design review, a quick sanity check on a screenshot, or a shared-computer environment where installing software isn't an option, that trade-off favors the simpler in-browser tool; for continuous, whole-screen design work, a native application or extension remains the more efficient choice.

Inside the Math: How a Color Matrix Filter Works

An SVG feColorMatrix filter takes each pixel's red, green, and blue values and runs them through a 4×4 (technically 4×5, with a constant offset column) linear transformation to produce a new red, green, and blue output. Each output channel is computed as a weighted sum of all three input channels — for example, the achromatopsia matrix used here sets every output channel to 0.299×R + 0.587×G + 0.114×B, which is the standard ITU-R BT.601 luma formula for converting color to perceptually-accurate grayscale (notice green is weighted roughly 5x more heavily than blue, matching how much more sensitive human vision is to green light). The protanopia, deuteranopia, and tritanopia matrices work the same way but with different weighting coefficients derived from research into how dichromatic vision (missing one of the three cone types entirely) statistically distorts perceived color. Because the transformation is just matrix multiplication, applying it to millions of pixels in a canvas image is computationally cheap enough to run instantly in the browser, without needing a server or a heavier image-processing library.

It's also worth naming what these four presets do not cover. Clinically, color vision deficiency exists on a spectrum: protanomaly, deuteranomaly, and tritanomaly are partial, anomalous versions of the three conditions simulated here (a shifted rather than missing cone response), and are actually more common in the general population than their "full dichromacy" counterparts. This tool's four filters approximate the complete, "-anopia" end of that spectrum rather than the full gradient of anomalous trichromacy, and it does not include the very rare total color blindness variant caused by rod monochromacy or blue-cone monochromacy. For most design-review purposes — catching red/green or blue/yellow confusion in a UI — the four included simulations are the right level of detail; for clinical or vision-science work, a specialized tool with adjustable severity sliders would be more appropriate. Think of the four presets here as covering the "worst case, full-loss" end of each condition, which is also the most useful case to design against since a palette that survives full dichromacy will comfortably survive milder anomalous trichromacy too.

Designing Accessible Color Palettes: Practical Tips

  • Vary lightness, not just hue. Two colors that are hard to tell apart by hue alone (a muted red and a muted green) are usually still distinguishable if one is noticeably lighter or darker than the other — lightness contrast survives every form of color blindness simulated here.
  • Use redundant encoding for meaning. Pair a status color with an icon (a checkmark, an X, a warning triangle), a text label, or a distinct shape/pattern so the information doesn't collapse to a single, potentially ambiguous color channel.
  • Favor blue/orange over red/green for critical contrasts. Blue-yellow discrimination is preserved in the two most common forms of color blindness (protanopia and deuteranopia), making blue/orange a safer default pairing for charts and status indicators than the traditional red/green — you can confirm this yourself by uploading a red/green chart versus a blue/orange chart and comparing how each one survives all four simulation modes.
  • Check both text contrast and color-vision simulation separately. A color pair can pass a WCAG contrast ratio check while still being confusing under a specific color-vision condition, and vice versa — the two tabs in this tool test genuinely different things and both are worth running on any final design.
  • Test with real content, not just swatches. Upload an actual screenshot of your interface rather than a color swatch sheet — real layouts reveal problems (thin chart lines, small icons, low-contrast borders) that isolated color samples don't.
  • Re-check after every palette revision. A single swapped brand color can silently break a contrast pair or a color-vision distinction that used to work — treat both tabs in this tool as a quick regression check whenever a design system's color tokens change, not just a one-time audit at launch.

Privacy & Data Handling

Both tabs run entirely client-side. The Vision Simulator reads your uploaded image with the browser's local FileReader API, draws it to an in-page <canvas>, and applies the SVG filter using your device's own graphics rendering — the image file is never uploaded to a server, and the "Download" button saves directly from that canvas back to your device via a local data: URL. The Contrast Checker performs its luminance math with plain JavaScript arithmetic on the hex values you type or pick, with no network request involved at any point. Nothing about either tool depends on an internet connection once the page has finished loading. Because no image data ever leaves your device, this tool remains a reasonable choice for reviewing confidential product mockups, unreleased branding, or internal dashboards that you would not want to hand to a third-party server just to run a color-vision check.

Frequently Asked Questions

Protanopia is red-blind color vision caused by the absence of red (long-wavelength) cone photoreceptors. Deuteranopia is the absence of green (medium-wavelength) cone photoreceptors, which is the most common inherited form of color blindness.

Tritanopia is the absence of blue (short-wavelength) cone photoreceptors, a much rarer condition than protanopia or deuteranopia. Achromatopsia is a complete absence of functioning cone cells, resulting in fully monochrome vision; this tool simulates it using the standard luminance-weighted grayscale formula.

We embed hardware-accelerated SVG feColorMatrix filters directly in the page. Each filter is a matrix transformation that recalculates a pixel's red, green, and blue channel values, and the filter is applied to your uploaded image on an HTML5 canvas.

Yes. In the Contrast tab, you can use the color picker swatches or type a standard 6-digit hex code directly (e.g. #FFFFFF) to calculate metrics. Note that 3-digit shorthand hex codes aren't recognized by the text field's validation, so use the full 6-digit format when typing manually.

All standard browser-supported image formats (PNG, JPG, JPEG, WEBP) are accepted for local canvas uploads in the Vision Simulator tab.

We calculate the relative luminance of both colors using the official WCAG 2.x formula (gamma-corrected sRGB channels weighted 0.2126 red, 0.7152 green, 0.0722 blue), then compute the contrast ratio as (L1 + 0.05) / (L2 + 0.05). That ratio determines pass or fail under Web Content Accessibility Guidelines.

WCAG AA requires a minimum contrast ratio of 4.5:1 for normal text and 3.0:1 for large text (18px+, or 14px+ bold). The stricter AAA level requires 7.0:1 for normal text and 4.5:1 for large text. This tool checks all four thresholds simultaneously and displays a pass/fail badge for each.

Yes. Once an image is loaded and a vision mode is selected, the "Download Simulated Image" button saves the currently filtered canvas as a PNG file directly to your device.

It simulates the four most commonly referenced conditions: protanopia, deuteranopia, tritanopia, and achromatopsia. It does not separately model milder anomalous variants (protanomaly, deuteranomaly, tritanomaly) or very rare conditions like blue-cone monochromacy, since those exist on a severity spectrum rather than a fixed matrix.

No. The SVG filter matrix runs locally in your browser using your device's own graphics rendering, and the image is drawn to a canvas element that never leaves your browser tab. No images are uploaded to any external server or database.