Colour contrast
Light grey #999999 on white has a contrast ratio of 2.85:1, well under the 4.5:1 that WCAG 2.2 asks for body text.
Drag to turn. Scroll or pinch to zoom.
Why contrast matters
Text that is pale against its background is hard to read for people with low vision, for many older readers and for anyone using a phone in sunlight. WCAG 2.2 does not leave "pale" to taste. It measures the relative luminance of the two colours, a number from 0 for black to 1 for white, and compares them with the contrast ratio (L1 + 0.05) / (L2 + 0.05), where L1 is the lighter colour. The result runs from 1:1, a colour on itself, to 21:1, black on white. The colour theory course works through the formula step by step; here we use it.
The numbers to meet
Success criterion 1.4.3 Contrast (Minimum), at level AA, asks for at least 4.5:1 for normal text and 3:1 for large text, which WCAG defines as at least 18 point, or 14 point bold. Criterion 1.4.6 at level AAA raises these to 7:1 and 4.5:1. Criterion 1.4.11 Non-text Contrast asks for 3:1 for the parts of controls and graphics that people need to see, such as the border of a text field or the lines of a chart. Logos and text that is purely decorative or part of an inactive control are exempt.
A few values are worth remembering. The grey #767676 gives 4.54:1 on white, and is often quoted as the lightest plain grey that passes AA; #777777 gives 4.48:1 and fails. The darker #595959 reaches 7.00:1 and passes AAA. Saturated colours can be misleading: pure red #ff0000 on white is only 4.00:1, while the deeper red #c01c28 reaches 6.11:1. Placeholder text inside form fields is a frequent failure, because designers often make it very light on purpose.
Checking colours in practice
You rarely need to work the formula by hand. When you inspect a text element, the colour picker in the developer tools of major browsers shows its contrast ratio against the background, often with a line marking the AA and AAA thresholds. Two cases need extra care. Text over a photo or a gradient has no single background, so check it against the lightest part it sits on, or put a solid panel behind it. And a site with a dark theme needs checking twice, because a colour that passes on white can fail on near-black: the blue #1a5fb4 gives 6.29:1 on white but only 3.34:1 on pure black.
Never colour alone
Contrast between text and background is half the story. Criterion 1.4.1 Use of Color, at level A, says colour must not be the only way information is shown. Red #c01c28 and blue #1a5fb4 both read well on white, but against each other their ratio is only 1.03:1. In greyscale, or to someone who cannot tell red from blue, they become the same grey. So a required field marked only by a red label, or a link that differs from the text around it only by colour, needs a second cue: a word, an icon, an underline.
AA: 4.5:1 for body text, 3:1 for large text and for UI parts. AAA: 7:1 for body text. Black on white is 21:1.
- Contrast ratio = (L1 + 0.05) / (L2 + 0.05), from 1:1 to 21:1.
- AA: 4.5:1 normal text, 3:1 large text (1.4.3); 3:1 for controls and graphics (1.4.11).
- #767676 on white is 4.54:1; #999999 is 2.85:1.
- Colour must never be the only cue (1.4.1).
- What contrast ratio does WCAG 1.4.3 require for normal body text?
- And for large text at level AA?
- What is the contrast ratio of #000000 on #ffffff?
- Grey #999999 on white is 2.85:1. For body text it
- fails AA
- passes AA
- passes AAA
- passes only for links
- Which grey just passes AA on white?
- #767676 (4.54:1)
- #777777 (4.48:1)
- #999999 (2.85:1)
- #aaaaaa (2.32:1)
- Pure red #ff0000 on white: contrast ratio to two decimals?
- Which criterion asks for 3:1 for the border of a text field?
- 1.4.11 Non-text Contrast
- 1.4.6 Contrast (Enhanced)
- 1.1.1 Non-text Content
- 2.4.7 Focus Visible
- Red #c01c28 and blue #1a5fb4 against each other are 1.03:1. What does that mean?
- They look almost the same in greyscale
- They are both unreadable on white
- They pass AAA together
- They are complementary
- A link is shown only by being blue. Which fix meets 1.4.1?
- Add an underline
- Make it a brighter blue
- Make it red
- Make it bold blue
- What is the minimum AAA ratio for normal text?
Sources for this course (7)
- W3C, Web Content Accessibility Guidelines (WCAG) 2.2, W3C Recommendation first published 5 October 2023, current edition 12 December 2024 (w3.org/TR/WCAG22/, checked 2026-10-17, rechecked 2026-10-18)
- W3C WAI, What's new in WCAG 2.2 (w3.org/WAI/standards-guidelines/wcag/new-in-22/, checked 2026-10-17)
- W3C WAI, Images tutorial and alt decision tree (w3.org/WAI/tutorials/images/decision-tree/, checked 2026-10-17)
- W3C, Using ARIA (w3.org/TR/using-aria/, Discontinued Draft 24 February 2026, rules 1 to 4, checked 2026-10-17)
- W3C WAI-ARIA Authoring Practices Guide, Read Me First, "No ARIA is better than bad ARIA" (w3.org/WAI/ARIA/apg/practices/read-me-first/, checked 2026-10-17)
- MDN Web Docs, tabindex (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/tabindex, checked 2026-10-17)
- MDN, Heading elements, accessibility notes (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/Heading_Elements, checked 2026-10-17)
Checked: 2026-10-17