WCAG 1.4.1 says color must never be the only visual way to show information, an action, a prompt or the difference between two things, so every red error, green status or blue link needs a second cue such as text, an icon, a pattern or an underline. It is a level A rule and has been in WCAG since version 2.0.
It is not a contrast rule. A pair of colors can have perfect contrast and still fail here, because the problem is that some people cannot tell the two colors apart at all.
Quick facts
Level
AAdded in
WCAG 2.0Rule
Color may support meaning, never carry it aloneLinks in text
Underline them, or give 3:1 against body text plus a non-color cue on hover and focusQuick test
Turn on a grayscale filter and see what still makes senseHelps
Color blind people, low vision users, anyone on a poor screen or a printout
The rule behind WCAG 1.4.1, in plain words
WCAG names four jobs that color must not do on its own: carrying information ("items in red are sold out"), showing an action (a link that is blue and nothing else), asking for a response ("fill in the red fields") and telling elements apart (two lines on a chart in red and green). In each case you may keep the color. You just add something that works without it.
The rule is about vision, not code. A screen reader user does not see the color either way, which is handled by other rules such as giving the text of an error message. This rule protects people who look at the page but cannot rely on hue.
Hue is the name of a color, such as red or blue. Lightness is how dark or pale it is. Many color blind people can still see differences in lightness, which is why the link rule below uses a contrast number.
Links inside text: the underline question
Links in a paragraph are the most common failure of this rule. Navigation menus and button rows are clearly links from their position, but a link in the middle of a sentence looks like any other word unless something marks it.
You have two ways to pass:
- Underline the link (or give it another non-color mark, such as bold weight that body text never uses). This is the simple and safe choice.
- Skip the underline only if the link color stands at 3:1 or more from the surrounding body text, the link still has 4.5:1 against the background, and an underline or similar cue appears on mouse hover and on keyboard focus.
The second route is tighter than it sounds. With black body text, #0066cc works: it gives 3.77:1 against the black text and 5.56:1 against white. With dark grey body text such as #333333, no link color can do both jobs on a white page, because any color light enough to stand 3:1 apart from the grey is too light to keep 4.5:1 on white. In that case the underline is the only practical answer.
Link blue on white The same blue next to black
Everyday failures and how to repair them
| What we see | Why it fails | Repair |
|---|---|---|
| Required form fields shown only by a red label | The red is the only signal | Add the word "required" or an asterisk explained at the top of the form |
| A field with an error gets a red border and nothing else | Color alone shows the error | Add an error icon and a written message beside the field |
| Stock status as a green or red dot | Dot shape is the same for both | Write "In stock" or "Sold out" next to the dot |
| Chart with a color key only | Readers have to match hues | Label lines directly, or add patterns and marker shapes |
| Current page in the menu shown in a different color | No other marker | Add an underline bar, bold weight or an icon, plus aria-current in the code |
| Links in body text with no underline in a similar color | Link and text look alike | Underline the links |
Red and green are a famous problem pair. The red #d32f2f and the green #2e7d32 differ by only 1.02:1 in lightness, so on a grayscale screen they look the same shade.
Who notices when color carries meaning
Color vision deficiency affects roughly 1 in 12 men and 1 in 200 women, most often making reds and greens hard to tell apart. Some people see no color at all. People with low vision, those using high contrast or inverted color settings, and anyone reading a black and white printout lose color information too. Even users with typical vision miss color changes on a dim phone screen in daylight.
Checking a page in grayscale
- Turn on a grayscale filter. On Windows open Settings, Accessibility, Color filters; on a Mac open System Settings, Accessibility, Display, Color filters. In Chrome or Edge you can instead open developer tools, then the Rendering panel, and choose a vision deficiency to emulate.
- Read the page as a new visitor. Can you find every link in the body text?
- Submit a form with mistakes. Can you tell which fields are wrong and which are required?
- Look at every chart, map key, status badge and calendar. Is anything only told apart by hue?
- Turn the filter off and confirm each fix still looks right in color.
The filter does not catch everything. Also read the page for instructions like "click the green button", which point to color in words. That wording is also covered by 1.3.3 Sensory characteristics.
Before and after: an error message
Fails: the red border is the only sign of a problem.
<input id="email" class="error">
.error { border-color: #d32f2f; }Passes: the error is written out and tied to the field.
<label for="email">Email (required)</label>
<input id="email" aria-describedby="email-err" aria-invalid="true">
<p id="email-err">Error: enter an email address like name@example.com</p>The red border can stay. The words do the real work, and they also satisfy 3.3.1 Error identification.
Use of color versus contrast and other rules
People often mix up this rule with contrast. They answer different questions:
- This rule asks: is there a cue other than hue? It is level A, so it applies even to the most basic conformance claim.
- Text contrast asks: is the text dark or light enough against its background?
- Non-text contrast asks: can people see the edges of controls, icons and chart parts?
Fixing one does not fix the others. A green and red chart can pass both contrast rules and still fail here. Use the contrast checker for the numbers, and the grayscale test for this rule. W3C's Understanding Use of Color page lists more examples.
Questions people ask
What does use of color mean in WCAG?
Criterion 1.4.1 lets color help, but never as the sole signal for meaning, actions, prompts or differences. Add text, icons, patterns or underlines alongside it.
Do links have to be underlined for WCAG 1.4.1?
Not always, but it is the easiest way to pass. Without an underline, the link color must differ from the body text by 3:1 or more and a visible cue such as an underline on hover and on keyboard focus.
Is red text for errors a failure?
Red text is fine if the words themselves explain the error. It fails when the only change is the color, such as a field label turning red with no message.
Do navigation links need underlines too?
Usually not. Links in a menu, a footer list or a button bar are clearly links from their layout. The rule is aimed at links mixed into running text.
Does 1.4.1 apply to charts?
Yes. If readers must match chart colors to a legend, add direct labels, patterns or different marker shapes, or provide the data in a table.