Methodology — How Our Color Vision Plates Are Made
How this site generates its color vision test plates: open-source CIELAB definitions, seeded dot rendering, descriptive scoring, and what is not validated.
Last updated: 2026-10-20
This page documents exactly how every test on this site is built: where the plate designs come from, how they are rendered, how answers are scored, and — most importantly — what has and has not been validated. If you want to know whether to trust a result, read this first.
The three plate banks
The site serves three distinct kinds of plates, each with a public provenance record.
The 14-plate core set (cvp14-v1)
The main screening engine uses fourteen original plate definitions published by the open-source Color Vision Plates project (MIT license, © 2026 Luke Steuber, pinned to commit d49a641). The set contains exactly: one brightness-contrast control plate, five general red-green designs, two protan-directed experimental plates, two deutan-directed experimental plates, and four blue-yellow designs. Every plate is specified in CIELAB: a foreground color and a background color, each with per-channel jitter ranges, plus a fixed random seed that determines the dot layout.
The upstream project — and this site with it — states plainly that these plates have not been clinically validated. No sensitivity, specificity or subtype-accuracy figures exist for them. They were engineered with published color-science methods (CIEDE2000 checks, Brettel-simulation grid searches for the directed plates), which makes them reproducible and honest, not clinical.
The Ishihara digit set (ishihara-rg-v1)
The Ishihara color blind test pages use nine digit plates generated at build time by the MIT-licensed ishihara Python package (© 2026 Vincent Gonzalez, version 0.1.2). Each plate is grown from a fixed seed — the same seed always yields a byte-identical SVG, whose SHA-256 checksum is recorded in our public provenance ledger. Eight red-green digit plates plus one control plate. These are generated artwork in the Ishihara tradition, not copies of the copyrighted clinical booklets.
The kids shape set (kids-shape-v1)
The children's pages use eight original shape plates (circle, star, triangle, heart) designed for this site using the same rendering pipeline and color-science as the core set, with color separations chosen for a playful, low-pressure exploration rather than clinical screening. One brightness control plate opens the set. No reading is required.
How a plate becomes pixels
When a test runs, each plate definition is rendered live in your browser:
- A seeded PRNG (mulberry32, from the upstream MIT code) turns the plate's fixed seed into a deterministic stream of random numbers — the same plate renders identically on every visit and every device.
- Foreground and background colors are drawn from the CIELAB specification with per-dot jitter, then converted CIELAB → XYZ (D65) → linear sRGB → gamma-encoded sRGB. Matching lightness (L*) between the two families is what prevents solving plates by brightness alone.
- Dots are placed with Poisson-disk sampling so they pack evenly with varied radii.
- The figure (digit or shape) is rasterized to an offscreen mask, and each dot is colored foreground or background depending on whether its center falls inside the figure.
Because rendering happens client-side, there is nothing to download per plate and nothing that can differ between visitors.
How answers are scored
Scoring is deliberately descriptive. For each answer we record what you entered (or that you saw nothing) and compare it with the pattern actually drawn. The result page aggregates:
- whether the control plate was recognized (if not, the session is reported as uninterpretable — a screen or settings problem, not a vision result);
- how many figures were recognized in each design group (general red-green, protan-directed, deutan-directed, blue-yellow, or shapes).
That is the entire model. We do not compute a "type", a severity, a probability, or a pass/fail against a norm, and the interface never tells you that you are (or are not) color blind. The upstream plate author's own classification labels were intentionally not ported, because they are heuristics without clinical validation.
Known limitations we accept on purpose
- No clinical validation. No plate on this site has published sensitivity/specificity. We say so on every test page, and we do not mimic diagnostic language.
- Display variability. Published research comparing Ishihara-type plates across smartphones, tablets and calibrated displays found device-dependent readability differences (Kim et al., 2024). We mitigate with the control plate and repeated display advice, but we cannot calibrate your screen.
- Directed plates are experimental. The protan- and deutan-directed designs rest on confusion-line engineering, not clinical studies; two plates per subtype cannot classify anyone. Results keep them in separate labeled groups.
- Simulation is not perception. The simulator applies the Machado, Oliveira & Fernandes (2009) model — a population-typical approximation. It models how colors shift, not how any individual sees.
Reproducibility and audit
Every plate asset and definition has an entry in data/plate-provenance.json (31 entries at publication): source project, license file, version or commit, seed, answer, and — for the generated SVGs — a SHA-256 checksum. The license texts live in the repository's LICENSES/ directory and are summarized on the licenses page. Regenerating the digit plates must reproduce identical checksums; a change means the asset changed, and the version number increments.
Sources we rely on
- Color Vision Plates — plate definitions, color math and scoring inspiration (MIT).
ishiharaon PyPI — seeded digit-plate generator (MIT).- dichroma — Machado-model simulation used by the simulator and reverse experiment (MIT).
- U.S. National Eye Institute — prevalence figures and clinical-testing context.
- Kim et al., 2024 — display-dependence of Ishihara-style plates.
- Machado, Oliveira & Fernandes, 2009 — the simulation model.
Change policy
Any change to plate colors, seeds, figures or scoring logic bumps the affected bank's version and is noted here. The plates themselves are meant to be boringly stable: the same test today, next month, and on your next device.