Colour Contrast Too Low — Fails WCAG AA Requirements

Approximately 8% of males and 0.5% of females have colour vision deficiency — roughly 1 in 12 men worldwide (Vision Center). WCAG AA requires a minimum 4.5:1 contrast ratio for normal text. Low contrast also affects everyone reading on mobile screens in bright sunlight. With over 5,100 ADA web accessibility lawsuits filed in 2025 — a 20% increase from 2024 (EcomBack) — contrast failures are actionable legal risk.

Start here

Before You Fix It: What This Check Means

Contrast determines whether text remains readable across visual conditions and device quality. In plain terms, this tells you whether people using keyboards or assistive tech can use the page reliably. Scavo evaluates inline style color pairs only. It inspects text elements with inline color styles and compares foreground/background contrast.

Why this matters in practice: issues here can block completion for assistive-tech users and create compliance exposure.

How to use this result: treat this as directional evidence, not final truth. Automated checks do not replace complete manual assistive-technology validation. First, confirm the issue in live output: verify with keyboard flow and at least one assistive-technology pass Then ship one controlled change: Normalize text/surface color tokens with tested contrast pairs. Finally, re-scan the same URL to confirm the result improves.

TL;DR: Text and background colour combinations don't meet WCAG AA contrast ratios, making content hard or impossible to read for many users.

Approximately 8% of males and 0.5% of females have colour vision deficiency — roughly 1 in 12 men worldwide (Vision Center). WCAG AA requires a minimum 4.5:1 contrast ratio for normal text. Low contrast also affects everyone reading on mobile screens in bright sunlight. With over 5,100 ADA web accessibility lawsuits filed in 2025 — a 20% increase from 2024 (EcomBack) — contrast failures are actionable legal risk.

What Scavo checks (plain English)

Scavo evaluates inline style color pairs only. It inspects text elements with inline color styles and compares foreground/background contrast.

Important details in this check:

  • It calculates contrast ratio from detected color values.
  • It uses WCAG-style thresholds:
  • Normal text target: 4.5:1
  • Large text target: 3.0:1
  • It can infer background from ancestors; if none is found inline, it assumes white (#fff).
  • It does not fully resolve class-based/external stylesheet colors.

How Scavo scores this check

Result behavior:

  • Fail: one or more clearly low-contrast pairs detected
  • Warning: near-threshold or marginal pairs detected
  • Pass: sampled pairs meet threshold
  • Info: no machine-verifiable inline pairs found

In your scan report, this appears under What failed / What needs attention / What is working for color_contrast, followed by Recommended next steps and Technical evidence (for developers) when needed.

  • Scan key: color_contrast
  • Category: ACCESSIBILITY

Why fixing this matters

Low contrast makes reading harder and slower for many users, not just a small edge case. It increases friction on pricing, forms, legal consent, and support pages where clarity matters most.

Design-wise, contrast regressions often appear during brand refreshes or theme adjustments when visual style wins over readable defaults.

Common reasons this check flags

  • Light gray text on white or near-white surfaces.
  • Text over gradients/images without stable overlays.
  • Small text styled with colors meant for larger headings.
  • Inline overrides that bypass tokenized design-system colors.

If you are not technical

  1. Ask for a contrast audit on primary text, buttons, and form labels.
  2. Prioritize high-traffic conversion and onboarding pages.
  3. Require design tokens for text/surface pairs to prevent drift.
  4. Re-scan and verify failure count trends down.

Technical handoff message

Copy and share this with your developer.

Scavo flagged Color Contrast (color_contrast). Please correct low-contrast text/background pairs to meet WCAG thresholds (4.5:1 normal, 3.0:1 large), and validate rendered states beyond inline styles.

If you are technical

  1. Normalize text/surface color tokens with tested contrast pairs.
  2. Fix failing inline color usages first, then audit class-based styles.
  3. Ensure overlays/hero text maintain contrast across responsive breakpoints.
  4. Include contrast checks in design QA and component tests.
  5. Validate hover/focus/disabled states, not just default state.

How to verify

  • Use browser accessibility tools to inspect computed contrast.
  • Test representative pages in both desktop and mobile breakpoints.
  • Confirm text remains readable on themed backgrounds and state changes.
  • Re-run Scavo and confirm fail/warn examples are cleared.

What this scan cannot confirm

  • It does not fully evaluate class/external CSS contrast combinations.
  • It may assume white background when inline background is absent.
  • It does not replace full rendered-state accessibility audits.

Owner checklist

  • [ ] Assign owner for text/background token standards.
  • [ ] Add contrast checks to design-system review gates.
  • [ ] Audit critical UI states (hover/focus/error/disabled).
  • [ ] Recheck after branding/theme updates.

FAQ

Why can this check miss some contrast issues?

It focuses on inline style signals. Class-based styles and dynamic themes need additional rendered-state testing.

Is 3:1 always enough?

No. 3:1 is generally for large text. Normal-sized text usually needs 4.5:1.

Are gradients and images risky for contrast?

Yes. Contrast can vary by position and breakpoint unless overlays/constraints are controlled.

What should we fix first?

Start with body text, labels, and CTA text on key conversion pages.

Sources


Need a practical approved color-pair token set for your UI states? Send support your current palette and base typography scale.

More checks in this area

aria_labels

ARIA Labels Missing on Interactive Elements

When interactive elements don't have accessible labels, screen readers announce them as "button" or "link" with no context — forcing blind users to guess what each control does. Notable accessibility settlements include Bashin's $2M settlement and accessiBe's $1M FTC settlement (Accessibility.Works, 2024). Proper ARIA labels are foundational accessibility requirements under WCAG 2.1.

Open guide
form_labels

Form Inputs Missing Associated Labels

When a label isn't programmatically associated with its input (via for/id or wrapping), screen readers don't announce what the field is for, and voice control users can't say "click email field." Form label errors are among the most commonly cited issues in accessibility audits, and they're straightforward to fix — just add matching for and id attributes.

Open guide
image_alt

Missing Image Alt Text — Accessibility and SEO Issue

22.1% of all images on website home pages lack alt text (WebAIM, 2024). Screen readers — used by JAWS (41% market share) and NVDA (38%) users — announce images without alt text as just "image," providing zero context. Missing alt text also means Google Image Search can't index your visuals. Over 5,100 web accessibility lawsuits were filed in 2025 alone (EcomBack), and missing alt text is one of the most commonly cited violations.

Open guide