Equivis
Accessibility · Component library
A color-independent data visualization library, built to help color-blind users read charts without relying on color alone. The core challenge: one palette that holds up across six chart types at once, where a combination that passed on one broke down on another.
Accessible on paper, unreadable in practice
Color-blindness affects roughly 8% of men and 0.5% of women, around 300 million people, yet most interfaces still lean on color alone, nowhere more than in data visualization. A palette that clears a contrast checker can still fail the moment it hits a real chart.

Color alone can't carry it, so we didn't rely on it
Contrast wasn't enough on its own. Pattern fills, distinct markers, and direct labels were layered on top of the palette so meaning never depended on color perception.



Finding the gap between theory and practice
An audit of 20+ live products found the same gap everywhere: palettes validated against a single element in isolation, never tested across multiple chart geometries at once. Passing individually didn't mean passing together.

Tested as a system, not a checklist
Every decision, palette, patterns, and label was validated across all six chart types at once, not approved one at a time. A fix that worked in isolation could just as easily break a chart already passed.
Trusting users over tools
Verified in WebAIM and Color Contrast Analyzer, then stress-tested in grayscale. Validated with 5 color-blind and 5 general users, a palette that satisfies a checker isn't the same as one a person can actually read.

- •8/10 found patterns and hover states significantly easier to read than color alone, especially in grayscale.
- •Most agreed that interactive labels on chart elements made data faster to interpret.
One system, zero exceptions
• Contrast compliance verified across all six chart types simultaneously, not per component
• Color removed as the sole differentiator across the entire library
Key Learnings
The most common failure in "accessible" design isn't ignoring color-blind users, it's testing once, on one component, and assuming it generalizes. A system has to be validated as a system.



