A colorblind-focused accessibility tool that generates clearer, more inclusive color palettes by leveraging the perceptual uniformity of Oklab and distance-maximization.

My mom has deuteranopia (form of red-green color blindness), and on our trips she'd always squint at transit maps, unable to tell the lines apart. That is because she has difficulty distinguishing between red and green colors.

How I see it

How she sees it
Then I realized: if I could generate palettes optimized for both normal vision and deuteranopia, I could try to make maps more usable.
When I set out to built this generator, I knew I had to figure out 3 things:
Why Oklab?
Oklab is a perceptual color space designed so that equal numerical moves correspond to equal perceived shifts in hue, chroma, or lightness. In sRGB, two colors with the same coordinate difference can look wildly different to our eyes. But in Oklab, Euclidean distance lines up with how we actually see. That makes it perfect for measuring and maximizing 'visual distance' between any two palette entries.
Simulating Color Vision Deficiency (CVD)
I recreated deuteranopia, and other forms of color-blindness by pairing Culori's color-space conversions with the color-blind library. The combination gives an exact preview of how each swatch appears to viewers with CVD.
Maximin Optimization
Instead of simply spreading colors evenly, I pose a "maximin" problem: pick n points in Oklab such that the smallest pairwise distance, checked under both true-color and simulated-color views, is as large as possible. This worst-case guarantee ensures no two lines on your map ever look confusingly similar, no matter who's looking.
The objective was to test whether a Delta Palette-generated color set improves route separability for users with deuteranopia compared with the standard NYC subway colors.
Here's how the map looks after applying a 12-color palette generated by my code:

How I see it

How she sees it
In the simulated view, red/green trunk lines previously merged into a single olive tone. The new palette separates them into distinct steel-blue and dusty-green.
Testing results with my friend with color vision deficiency:
My primary motivation was improving transit-map legibility for users with deuteranopia. But the generator can be applied to other contexts where color separability is important. By ensuring each hue is maximally distinct in both normal vision and CVD simulations, we can make visualizations and interfaces more accessible.
Other Potential Applications: