Skip to content
easeweb
Search topics

Grey body text under 7:1 contrast

Soft grey body text such as #767676 passes the contrast minimum but isn't enough for readers with low vision: 4.54:1 against white, where they need 7:1.

WCAG 2.2
SC 1.4.6AAA
Required by
Not required by Section 508 or EN 301 549
Broken color: #767676
The accessibility problem illustrated: Low vision:Why is this so hard to read?
01

The problem

People with low vision who read without a magnifier strain to read an article whose paragraphs are set in a soft grey.

02

Try it

Read the article, then turn up the blur and watch which words go first.

The blur is a rough stand-in for low vision, which often softens edges and lowers contrast. On each side, compare the paragraphs with the headline at the same blur. With the switch, press Higher contrast at the top of the page.

0px

Broken Can you fix this?

BrokenBody text in the lightest grey that passes AA
Kiln & Clay

How we glaze a mug

Every mug is dipped twice: once in a pale base glaze, then at the rim in a darker one that runs as it fires.

We wipe the foot clean before each firing, so the glaze can’t fuse the mug to the kiln shelf. The second coat stops a finger’s width below the rim, and the heat carries it the rest of the way.

A recreated demo. The broken version is intentionally inaccessible.

03

The fix

Give body text 7:1 against its background.

Before
BrokenBody text in the lightest grey that passes AA
<header class="site-header">  <a href="/" class="logo">Kiln & Clay</a></header><main>  <article class="article">    <h1>How we glaze a mug</h1>    <p class="byline">Studio journal · 6 min read</p>    <p>Every mug is dipped twice: once in a pale base glaze, then at the rim in a darker one that runs as it fires.</p>    …  </article></main>
What is wrong3 points

The headline is right: near-black on white, at 17.40:1. The paragraphs and the byline are where it fails.

  • The paragraphs are 17px #767676 on white, at 4.54:1, where 7:1 is needed.
  • The byline is 13px in the same grey, at the same 4.54:1.
  • The only thing that sets the body apart from the headline is the lighter grey, so the quiet look and the low contrast are one choice.
After

A darker grey that reaches 7:1

<header class="site-header">  <a href="/" class="logo">Kiln & Clay</a></header><main>  <article class="article">    <h1>How we glaze a mug</h1>    <p class="byline">Studio journal · 6 min read</p>    <p>Every mug is dipped twice: once in a pale base glaze, then at the rim in a darker one that runs as it fires.</p>    …  </article></main>
How it is fixed3 steps
  1. Change the muted token to #555555, a grey that still reads as grey, at 7.46:1 on white. Every paragraph and byline that uses the token gets it at once.
  2. Give the headline a heavier weight, so it still stands out from the darker body.
  3. Space the byline's letters a little, so it stays quiet by size and spacing rather than by colour.

This fixes the Before and passes 1.4.6 for every reader, with nothing to switch on.

04

Design ideas

Quiet text can still reach 7:1.

Five more ways to set the studio’s article. Point at each one and Tab to it: three reach 7:1 in the paragraph and the byline, and two stop short though they pass 4.5:1.

In the design file

  • Write the contrast ratio beside every text colour. Text under 24 pixels, or under 18.66 pixels bold, needs 7:1, and larger text 4.5:1.
  • Mark how each quiet line is made quiet, by size, weight, spacing or place, so nobody reaches for a lighter grey.
  • Draw every theme on its own, dark included, with its own ratios, since a grey that reaches 7:1 on white can fall short on near-black.
  • Higher contrast switch: if the brand keeps a lighter grey, draw it in the header of every page, both off and on.

Passes

  • How we glaze a mug

    Every mug is dipped twice: once in a pale base glaze, then at the rim in a darker one that runs as it fires.

    Warm ink on paper A warm #3d3a36 on an off-white #faf7f2, 10.58:1. The page feels soft because the paper and the ink are both warm, not because the text is pale.
  • How we glaze a mug

    Every mug is dipped twice: once in a pale base glaze, then at the rim in a darker one that runs as it fires.

    Slate ink instead of grey The paragraph in a blue-grey #334155, 10.35:1 on white, under a #0f172a headline. A tinted ink reads as lighter than black, so the body still sits back.
  • How we glaze a mug

    Every mug is dipped twice: once in a pale base glaze, then at the rim in a darker one that runs as it fires.

    Dark text, quiet by size The paragraph in the #1a1a1a ink at 17.40:1, and the byline small, spaced and in capitals, in #555555 at 7.46:1. Size and spacing do the work a pale grey did.

Fails

  • How we glaze a mug

    Every mug is dipped twice: once in a pale base glaze, then at the rim in a darker one that runs as it fires.

    Body text at 60% blackWCAG 1.4.6 Black at 60% opacity on white comes out as #666666, 5.74:1: past 4.5:1, short of the 7:1 a paragraph needs. 66% black, #575757, reaches 7.23:1.
  • How we glaze a mug

    Every mug is dipped twice: once in a pale base glaze, then at the rim in a darker one that runs as it fires.

    Cool grey on a dark cardWCAG 1.4.6 A #9ca3af paragraph on a #111827 card is 6.99:1, a hair under 7:1. Dark themes need their own measure: the light #d1d5db on the same card is 12.04:1.
05

Verify the fix

4 checks, no mouse.

Test with: Contrast measurement, Keyboard, Screen reader

0 of 4 checked

Record the OS, browser and assistive-technology versions, the build, the date, and the actual result of each step. Repeat after the colour tokens or the theme change.

How screen readers handle aria-pressed

Limits

This is a starting pattern, not a guarantee for every application. Colour values and token names are examples; measure your own palette on your real backgrounds. Text over photos, and text below the 4.5:1 minimum, are covered in low-contrast text on brand colours, photos and hover states. A contrast ratio is a minimum, not proof that text is comfortable to read: thin weights, small sizes and long lines make reading harder at the same ratio, and some readers find full black on white too harsh. Check the complete pages with people who rely on them.

This is a recreated teaching example, not a finding about a named client. The code is a starting pattern: test it in your own product. No completed assistive-technology test is claimed here.

EaseWeb service

Fixed it? Keep it from coming back.

I turn guides like this one into rules your coding agents follow and checks your CI runs. Then I retest by hand with a keyboard and screen readers, periodically.

See the service