AccessibilityBy Sagar Chachapara · October 12, 2026 · 9 min read

Don't Rely on Color Alone: Designing Accessible Status and Error States

Green success, red error, yellow warning — the convention fails for color-blind users and in bright light. Learn to design status and error states that communicate without depending on color.

There is a rule in accessible design that is short enough to remember and important enough to change how you build: never use color as the only way to convey information. It sounds abstract until you apply it to the place it matters most — status and error messages.

Every form on the web uses color to signal success and failure. A valid field goes green, an invalid one goes red, a warning is yellow. For the roughly one in twelve men with red-green color vision deficiency, those red and green signals can be nearly identical. For anyone using a screen reader, or in glaring sunlight, or on a poorly calibrated monitor, the color may not come through at all. When color is the whole message, the message is lost. Our guide to color blindness in design covers the perceptual side; this piece is about the interface patterns that fix it.

Why color alone fails

Color fails as a sole signal for three reasons:

  • Color vision deficiency. Red and green — the two most common status colors — are precisely the pair most people with color blindness cannot distinguish. A red error border can look identical to a green success border.
  • Context and environment. Low-contrast displays, bright ambient light, and screen glare all wash out subtle color differences.
  • Assistive technology. Screen readers do not announce "this field is red." If the error is encoded only in a color change, the information simply is not there for the user.

The WCAG success criterion behind this is 1.4.1, "Use of Color," which requires that color not be the only visual means of conveying information. Meeting it does not mean abandoning color. It means giving color company.

The three channels every status needs

Reliable status design uses at least two, ideally three, channels that do not depend on hue:

  1. An icon or shape. A checkmark, an exclamation mark, a crossed circle. Shape is read instantly and survives any color perception. This is the single most effective addition.
  2. A text label. "Success," "Error," "Warning," or a specific message. Text is unambiguous and accessible to screen readers. It is often the difference between a user understanding a problem and guessing.
  3. Color. Now color reinforces the two above instead of carrying the load alone.

There are other channels worth using where they fit: position (errors near the top, summaries above forms), motion (a gentle pulse that also stops for users who prefer reduced motion), weight and size, and pattern or texture in charts. The principle is redundancy: the more independent channels agree, the more robust the message.

Designing error messages that work

Error states are the most consequential and most often botched. A good error state answers three questions: what went wrong, where, and how to fix it.

  • Place the message next to the field, not only in a summary. Users fix problems where they occur.
  • Connect the message to the field programmatically. Use the input's aria-describedby to point at the error text so screen readers announce it with the field, and mark the field aria-invalid.
  • Do not rely on a red border. Add the icon and the text. A red outline with no words tells a color-blind user nothing and a screen-reader user less.
  • Write specific, human messages. "Enter a date in the format MM/DD/YYYY" beats "Invalid input." The message is the actual fix; color is only the pointer.
  • Move focus meaningfully. On submit, move focus to an error summary or the first invalid field so keyboard users are not left hunting.

Designing success and warning states

The same redundancy applies beyond errors:

  • Success: a checkmark plus a short confirmation ("Saved") plus green. Never green alone.
  • Warning: a warning icon plus a clear sentence about the consequence. Yellow on white rarely passes contrast, so pair it with dark text; see our contrast guide.
  • Informational and neutral status: often best left to an icon and text with no strong color, which avoids competing with genuine alerts.

Keep the color accessible too

Redundancy does not excuse bad color. Once the icon and text carry the meaning, the status colors should still be chosen well:

  • Meet contrast requirements. Status text is text and must pass WCAG contrast against its background. This is where many designs fail, because light green and light yellow are hard to make legible.
  • Match the color to the temperature of your palette. A neutral, slightly desaturated red and green fit a muted interface better than neon versions, and they clash less. See our neutrals guide.
  • Test with simulation. Run your status states through a color-blindness simulation and confirm the icons and labels still communicate. They should read correctly even in grayscale — a useful worst-case test.

A checklist

  1. Does every status have an icon or shape that is not color?
  2. Does every status have text that names the state?
  3. Is the error message specific and placed next to the field?
  4. Is the field connected to its message for screen readers (aria-describedby, aria-invalid)?
  5. Does the text pass contrast against its background?
  6. Does the state still communicate in grayscale?
  7. Does focus move to the problem on submit?

If all seven are yes, the design communicates to color-blind users, screen-reader users, and everyone else.

Frequently asked questions

Can I still use red for errors?

Yes. The rule is not "avoid red," it is "do not let red be the only signal." Red plus an icon plus text is fine and familiar.

Do I need icons for accessibility or is text enough?

Text alone satisfies the requirement, but icons help sighted users scan faster. Both together is the most robust and the most common pattern.

How do I test without special tools?

View your interface in grayscale — on many systems you can enable a grayscale filter. If the status is still obvious, the design is robust. Then run a color-blindness simulator for a fuller check.

Does this apply to charts too?

Yes. Series distinguished only by color should also differ by line style, markers, or direct labels — a principle we cover in our data visualization guide.

Design status that everyone can read

Start from the two channels that never fail — shape and text — and let color reinforce them rather than carry them. Check the result against our WCAG contrast guide, verify your shades with the playground, and read the color blindness guide for the perceptual background.

Written by Sagar Chachapara

Founder & Developer of Color Palette — Sagar Chachapara is an independent developer who builds color tools and writes about color theory, accessible design, and working with palettes in the browser.

sagarchachapara1997@gmail.com

Put it into practice

Try the techniques from this guide in our free tools — no sign-up required.

More in Accessibility · All articles · FAQ

Keep reading