When does WCAG AA accept 3:1 contrast for text? The large text rule explained

By TechCompare · Updated · How we check

At WCAG AA, large text needs 3:1 instead of 4.5:1. Text smaller than that size keeps the 4.5:1 minimum.

The rule itself is short, but the size line is easy to misjudge. A gray that fails for body copy can pass for a heading, then fail again when the same color shows up in a caption. This page covers where the line sits, the pixel sizes behind it, and how to handle text on the wrong side of it.

Rule
WCAG AA large text
Large text minimum (3:1+)
Example ratio
3.0:1
#949494 on #FFFFFF
Category
WCAG Rules
Accessibility knowledge base

How this is calculated

Success Criterion 1.4.3 lists large text as an exception to the 4.5:1 rule: "Large-scale text and images of large-scale text have a contrast ratio of at least 3:1." Large-scale means at least 18 point, or 14 point bold. Converted to CSS pixels, 18 pt is 24 px and 14 pt is about 18.7 px, since a point is 1/72 inch and a CSS pixel is 1/96 inch. In CSS, bold is font-weight 700. The Understanding page adds a note: "Fonts with extraordinarily thin strokes or unusual features and characteristics that reduce the familiarity of their letter forms are harder to read, especially at lower contrast levels." A hairline display face at 24 px may need more than 3:1 to read well.

Take #949494 on white, which gives 3.03:1. It passes the 3:1 large text rule and fails 4.5:1 for normal text. For body text, try #767676. On white it gives 4.54:1, and that passes 4.5:1 for normal text.

What counts is the size and weight the page renders. Body text at 16 px (12 pt) is normal text, even with a heavy heading right above it, because each run of text gets its own size and weight.

Verdict

Pick the text color from the smallest text it will cover, not the biggest. A palette that passes for headings can still fail for captions and form labels, so check each style that uses the color. The 3:1 bar is a narrow exception for display type, not a reason to keep a light gray on small text.

More Contrast scenarios

Frequently asked questions

Is 24 px the same as 18 pt?
Yes, in CSS. A point is 1/72 inch and a CSS pixel is 1/96 inch, so 18 pt equals 24 px. The 14 pt bold size is about 18.7 px, so a 19 px bold heading meets it (14.25 pt) and an 18 px bold heading doesn't (13.5 pt).
Does the 3:1 large text rule apply to buttons?
Yes, for the label text. The label is text, so its size and weight decide the bar. A 24 px label can use 3:1, and a 16 px label needs 4.5:1. The fill or border around the label is a separate question under 1.4.11, covered on the buttons, icons and borders guide.
Does AAA also relax the rule for large text?
No, AAA is stricter here too. Success Criterion 1.4.6 asks for 4.5:1 on large text, where AA asks for 3:1. Normal text goes up to 7:1. The AAA guide covers when that higher level is worth the effort.
What is large text in rem or em?
If the root font size is the browser default of 16 px, 24 px is 1.5 rem and 18.7 px is about 1.17 rem. Em is relative to the parent's font size, so a 1.5em heading inside a 16 px parent works out to 24 px, but nested text can shift that. Check the computed size in your browser's developer tools before you trust the unit.