In plain English
Color is a great extra signal, but a terrible only signal. If the only way to tell a required field, an error, a sale price, or a link apart is its color, then anyone who can’t distinguish that color is locked out.
The rule is simple: whenever color means something, add a second cue that doesn’t depend on color: a word, an icon, an underline, a pattern, or a shape.
Who this is for
- People with color vision deficiency (very common, roughly 1 in 12 men), who may not see red-vs-green or other pairs the way you designed them.
- Screen-reader users, who get no color information at all.
- Anyone in grayscale or high-contrast mode, or on a cheap or sun-washed screen where colors flatten out.
What “good” looks like
Keep the color, just never let it stand alone.
Required field: "Email *" (asterisk + label) ✓ not just a red border
Form error: "⚠ Enter a valid email" ✓ not just red text
Sale price: "$29 Sale" or a "Sale" badge ✓ not just orange text
Links in text: underlined ✓ not just a blue color
A quick test: switch your screen to grayscale (most operating systems have a one-tap setting) and browse your store. If you can still tell errors, links, and required fields apart, you pass.
Where stores get it wrong
The classic misses are red-only form errors, sale prices shown only in a brand color, “in stock / out of stock” dots with no label, and in-text links that are only a slightly different color with no underline. The common Shopify failures list covers these, and they often travel together with contrast problems.