Contrast (Minimum)
Text needs a contrast ratio of at least 4.5:1 against its background. Large text needs 3:1. Large means 18 point, or 14 point bold, which works out at roughly 24 pixels and 18.5 pixels. Those figures are for roman type, and Chinese, Japanese and Korean take whatever size comes out equivalent instead. Font size there is the size you shipped, so a reader zooming in never turns your body text into large text. The ratios are thresholds and they are not rounded, so 4.499:1 fails. Two exceptions cover five cases between them. Text in a logo or a brand name is one. The other is text the standard calls incidental, which means text in a switched-off control, text that is pure decoration, text nobody can see at all, and text that is part of a picture carrying plenty of other visual content, like a street sign that happens to be in the photograph. Everything else is measured with a formula rather than judged by eye. That is why fashionable light-gray-on-white fails constantly without ever looking wrong to the designer who chose it.
Why it matters
The 4.5:1 figure is not a matter of taste. It is arithmetic. Standard text read by ordinary vision needs a minimum of 3:1, and 4.5:1 is that number multiplied by the contrast sensitivity loss that comes with roughly 20/40 vision. That level of vision is commonly reported as typical for people around 80. So the rule is built around eyes that are ordinary rather than impaired, later in life. That is also why contrast has the widest reach of anything in this guide. It degrades reading for low-vision users, for older eyes, for cheap or dim screens, and for anyone outdoors. It is the most visible signal of care on a page, because anyone with a free contrast checker sees these failures before they see anything else.
Who this rule protects
Low-vision users depend on sufficient contrast most directly. Older users lose contrast sensitivity gradually, and that loss is the thing the 4.5:1 figure was calculated from. Colorblind users are affected too, though not through hue, since the formula deliberately ignores hue. And everyone reading a phone in daylight is running the same test your auditor is.
How to check it yourself
- Sample text and background colors with a contrast checker. Browser developer tools show the ratio directly inside the color picker.
- Measure the CSS values rather than a screenshot. Anti-aliasing renders thin fonts fainter than the color you set, so a screenshot of a passing color can read as a fail.
- Check the places people forget, meaning placeholder text, text laid over a hero image, footer links, and any text that appears on hover or on focus. All of those are in scope.
- Leave genuinely disabled controls alone, and look twice at anything that only looks disabled. A grayed-out control that still works is fully in scope.
- Check hover and focus states, since both change color and neither usually gets rechecked afterwards.
- Treat the ratio as a threshold. A measured 4.5:1 passes and 4.49:1 does not, so rounding up is not available.
- Look at red text on a near-black background separately. It can pass the formula and still be unreadable for people with protanopia, which is the one place the formula's indifference to hue breaks down.
Failures we see most often
- Body text in #999 gray on a white background measures 2.8:1, well short of the 4.5:1 the rule requires.
- White text sits over a bright photo with no scrim or overlay behind it, so the ratio changes with every image in the rotation.
- Placeholder text serves as a field's only label, at a gray nobody measured, which fails as contrast and fails as a substitute for a real label.
- A text color is set with no background color, or a background with no text color. That is a failure on its own, because the result cannot be evaluated against a default nobody knows.
- Brand color is applied to body text and defended as brand, which the logo exception does not cover.
- A hover state drops the contrast below the threshold, so the link only conforms while nobody is pointing at it.
Who this one is for
Read from this rule's own note above, so the grouping and the note cannot disagree.
- Low visionpeople who can see the screen but not easily
How this one is tested
We list 2 ACT rules against 1.4.3. Each one defines exactly what a checker looks at, which is how automated tools decide what to flag. Each one also checks a slice, so passing every rule here is not the same as meeting the criterion, and a rule can be proposed rather than approved or need a person to finish it. The note beside each says which.
- Text has enhanced contrastA tool can check this
- Text has minimum contrastA tool can check this
How to fix it
- Darken the text or lighten the background until the ratio passes. On white, #767676 is the lightest neutral gray that clears 4.5:1, and #777777 does not.
- Place a scrim, overlay or gradient behind any text sitting on an image, so the ratio holds whatever the photo behind it is doing.
- Specify both colors or specify neither. Setting one and leaving the other to a default nobody controls is the failure, and setting neither is a documented way to conform.
- Build the check into your design tokens, so an approved pairing passes by construction rather than by luck.
- Where a client insists on a low-contrast look, the standard allows a control that switches to a conforming presentation, as long as that control itself has enough contrast. Offering a lower-contrast option is allowed too, provided there is a way back.
Step-by-step fix guides (7)
Passes vs. fails
Passes
The same captions set at #595959 measure 7:1, reading quieter than pure black while staying easy to read.
Fails
Light gray captions, #AAA on white, measure 2.3:1 under every product photo on the page.
In audits and lawsuits
WebAIM's 2026 survey of a million home pages found low contrast text on 83.9% of them, the most commonly detected issue of any. It is the first thing an outside reviewer is likely to screenshot. Two arguments come up every time and both have answers. The logo exception covers the logo and the brand name and stops there, because brand guidelines beyond the logo are not exempt. And a clean automated result is not a pass. A scanner has only told you the pixels it sampled were far enough apart. Where some pixels pass and others do not there is no defined answer, so a person still has to look. Our contrast findings arrive with an exact ratio and an exact passing replacement color, which makes them close to the least arguable items on any fix list we send.