WCAG 2.1 · Level AA · Perceivable
WCAG 1.4.3 — Contrast (Minimum), explained with examples
Body text must have a contrast ratio of at least 4.5:1 against its background. Large text (18pt+, or 14pt bold) needs at least 3:1. Low contrast is the single most-failed accessibility criterion online — 80%+ of homepages fail it. Users with low vision, color vision deficiencies, age-related sight loss, or who view screens in bright sunlight all rely on contrast to read.
- Number
- 1.4.3
- Level
- AA
- Principle
- Perceivable
- Guideline
- 1.4 Distinguishable
Why this criterion exists
Low contrast is the single most-failed accessibility criterion online — 80%+ of homepages fail it. Users with low vision, color vision deficiencies, age-related sight loss, or who view screens in bright sunlight all rely on contrast to read.
If you only remember one thing: body text must have a contrast ratio of at least 4.5:1 against its background. large text (18pt+, or 14pt bold) needs at least 3:1. Everything else on this page is detail.
Who feels it when this fails
Accessibility criteria sometimes feel abstract until you see who pays the cost when a site ignores them. Contrast (Minimum) affects:
Users with low vision
Users with color vision deficiencies (8% of men)
Older users with age-related macular changes
Anyone reading on a screen in glare
How sites typically fail it
These are the patterns we see week after week. None are intentional — they are accidents of how teams build interfaces under deadline. Knowing the failure modes is the fastest path to writing them out of your component library.
Light gray placeholder text on white (e.g. #999 on #fff = 2.8:1)
Brand-colored buttons that fail against the page background
Sale prices in pale red on white
Tooltip and helper text below 4.5:1
Disabled UI states without sufficient contrast for the disabled label
How to test for it
Use a contrast checker on every text/background combination.
Run an automated audit — contrast is deterministically computable.
Test in dark mode separately; many themes pass light but fail dark.
Automated scanners catch this criterion most of the time, but never all of the time. Manual testing with the keyboard and a screen reader closes the gap.
A code fix you can copy
Pick foreground colors using a checker, not by eye. Tailwind's gray-600 (#525252) is a safe AA default for body text on white.
The problem
body { color: #999; background: #fff; } /* 2.8:1, fails */The fix
body { color: #525252; background: #fff; } /* 7.4:1, AAA */
.muted { color: #6b7280; } /* 4.6:1 against #fff, AA */Pick foreground colors using a checker, not by eye. Tailwind's gray-600 (#525252) is a safe AA default for body text on white.
Frequently asked questions
What about logos and brand colors?
Logos and logotypes are explicitly exempt from 1.4.3. However, brand colors used for body text, button labels, navigation links, or any other text that conveys information are fully subject to the 4.5:1 rule. The practical fix is to define a darker on-brand text variant (often the brand's 700 or 800 shade) and use it wherever text appears on a light background.
Does dark text on a colored background count as large text?
Only if the rendered font size is at least 18pt (24px) at regular weight, or at least 14pt (approximately 18.66px) at bold weight. Anything smaller is not large text under WCAG and must meet the 4.5:1 ratio. Headings styled at 20px bold do not qualify as large text because they fall below 18.66px bold threshold.
Is low contrast the most common WCAG failure on the web?
According to the WebAIM Million report, low contrast text affects 83.6% of the top one million homepages — making it the single most prevalent automated WCAG failure year after year. It is also the failure most likely to affect a broad population: anyone with low vision, age-related macular changes, color vision deficiency, or who reads in bright sunlight.
Has low contrast led to legal action?
Low contrast is rarely the sole basis for a complaint, but it is consistently cited alongside other barriers in ADA demand letters and settlements. The DOJ's 2024 Title II rule and the EU's EN 301 549 (which underpins the European Accessibility Act) both require WCAG 2.1 AA, which includes 1.4.3. Auditors hired by plaintiffs' attorneys routinely flag contrast as part of the initial evidence.
What is the easiest way to check contrast ratios across a whole site?
Run an automated scan with a tool like Certvo, axe DevTools, or Lighthouse. Automated contrast checkers can evaluate every text/background pair they can compute from CSS — catching the majority of failures without manual inspection. The remaining gaps (text over images, text inside SVGs, dynamically coloured text) require manual spot-checks with a contrast analyser like the TPGi Colour Contrast Analyser.
Can I use opacity to pass the contrast check?
No. The contrast ratio is computed against the actual rendered colour the user sees, which means opacity and alpha values are factored in against the background. rgba(0,0,0,0.3) on white is far below 4.5:1. Your design system should specify solid hex values that already pass, not rely on opacity to produce a passing render in one specific context.
Other Perceivable criteria
1.1.1 Non-text Content
Perceivable · Level A
1.3.1 Info and Relationships
Perceivable · Level A
1.4.11 Non-text Contrast
Perceivable · Level AA
1.2.2 Captions (Prerecorded)
Perceivable · Level A
All WCAG 2.1 criteria
Browse the full index by principle
Complete WCAG 2.1 guide
POUR principles, conformance levels, legal requirements
How to fix: low color contrast
Fix recipe · 1.4.3, 1.4.11
Find every accessibility issue on your site in 60 seconds.
Free public scan. No card. AI-generated fixes for every issue we find.