DIRECTIVE (EU) 2019/882 · IN FORCE SINCE 28 JUNE 2025 EU-HOSTED · GDPR-CLEAN
EAA Compliance

Rules · color-contrast

Failure reference

Text without enough contrast.

Low-contrast text is unreadable in sunlight, on cheap panels, and for the roughly one in twelve users with a color-vision or low-vision condition. The scanner measures the actual rendered ratio.

01

What fails — and who it fails

The failure, in plain language.

Body text and interactive labels need 4.5:1 against their background (3:1 for large text). Brand-light greys and tinted buttons routinely land at 2–3:1 — legible to a designer on a calibrated screen, gone for everyone else.

02

Detection — what the machine can and cannot judge

How the scanner finds it.

  • Foreground and background colors are read from the rendered page — computed styles, not the stylesheet — and the exact ratio is reported per element.
  • Text over gradients or images is marked for review rather than guessed.
  • What automation cannot judge: brand trade-offs. The fix is usually one design token, and the finding shows exactly which one.
03

The legal reading — factual, not fearful

Where this sits in enforcement.

1.4.3 is Level AA and one of the most frequently evidenced criteria in assessor reports: the ratio is a number, and a number is an exhibit. It is also the cheapest large-scale fix on most sites — a token change clears every instance at once.

04

The fix — by pattern

2 patterns cover nearly every instance.

Fix the token, not the pages- --btn-primary: #8FB4FF; /* 2.9:1 on white */ + --btn-primary: #1B3FA0; /* 8.6:1 on white */
Large text (24px+/19px bold) may use 3:1+ font-size ≥ 24px with a measured ratio ≥ 3:1 passes

Fix the template, not the page — one change typically clears every instance at once. The triage engine groups findings by template pattern for exactly that reason.

05

Verification — resolution is evidence, not a checkbox

Fixed means a scan said so.

On monitored domains, mark the finding fixed and the next scan verifies it: zero remaining instances converts the finding to Resolved, and both the claim and the confirmation land in the append-only ledger. Criteria that need human judgement close through sign-off in the coverage matrix — covered by the right method, never by assumption.

See where your templates stand.

A complimentary assessment renders up to 25 public pages in an EU-hosted browser and shows every instance of this failure — grouped, ranked, and honest about what still needs a human.