Skip to content
ColorArchive
Accessibility
Search intent: color accessibility wcag apca contrast ratio 2025 standard audit accessible design

Color Accessibility in 2025: WCAG 2.1, APCA, and the Dual-Standard Audit

WCAG 2.1's contrast ratio formula was not calibrated for font weight or size — it treats a 400-weight 12px label and a 700-weight 48px heading identically. APCA (Advanced Perceptual Contrast Algorithm), the foundation of the forthcoming WCAG 3.0, corrects this with a model that varies required contrast by font size and weight. This guide explains the practical differences, how to run a dual-standard audit, and what to prioritize during the standards transition.

AccessibilityWCAGAPCAContrastStandards
Key points
WCAG 2.1 requires a 4.5:1 contrast ratio for normal text regardless of font size or weight. APCA requires a minimum Lc 75 for small body text (16px 400-weight) but allows Lc 45 for large bold headings (32px 700-weight). The same color pair can pass one standard and fail the other depending on the type role.
The errors in WCAG 2.1 go in both directions: some compliant combinations are genuinely hard to read (white on medium blue); some failures are fine at large, bold sizes. The dual-standard audit reveals which failures matter and which are false alarms.
APCA currently has legal weight in a subset of jurisdictions under WCAG 3.0 drafts. WCAG 2.1 remains the legal standard for EN 301 549 (EU), Section 508 (US), and most accessibility regulations worldwide as of early 2025. Design for WCAG 2.1 compliance now; flag APCA differences for future migration.

How WCAG 2.1 and APCA differ in practice

WCAG 2.1 uses a contrast ratio: (L1 + 0.05) / (L2 + 0.05), where L1 and L2 are relative luminance values. Thresholds: 4.5:1 for normal text (< 18pt / < 14pt bold), 3:1 for large text (≥ 18pt / ≥ 14pt bold). The formula is luminance-only — hue and saturation have no effect on the calculated ratio, and font weight/size have no effect beyond the binary normal/large text categories. APCA replaces the ratio with a signed Lc value (Lc 0 to Lc 106 for dark text on light background). Required Lc values from the APCA lookup table (representative examples): body text at 14px 400-weight — Lc 90; body text at 16px 400-weight — Lc 75; UI labels at 24px 400-weight — Lc 60; large headings at 32px 700-weight — Lc 45; non-text elements and decorative content — Lc 15 minimum. APCA also accounts for polarity: dark text on light background is not symmetrical with light text on dark — the Lc value is signed (positive for dark-on-light, negative for light-on-dark).

Running a dual-standard audit

A dual-standard audit evaluates each foreground/background color pair against both WCAG 2.1 and APCA, then categorizes the result: (A) Passes both — no action required. (B) Fails both — fix immediately, regardless of which standard is legally current. (C) Passes WCAG 2.1, fails APCA — document with the specific font role and size context; flag for migration when WCAG 3.0 has legal weight in your jurisdiction. (D) Passes APCA, fails WCAG 2.1 — this is likely a large, bold-weight text role; document the specific use case and confirm it qualifies as 'large text' under WCAG 2.1. Automate the WCAG 2.1 portion with the ColorArchive WCAG Contrast Auditor; check APCA values using the APCA Contrast Calculator (open source) or the Sa11y accessibility checker. The dual-standard audit is primarily useful for design systems with a large number of color pair combinations — single-page designs can be audited manually.

Practical next step

Move from the guide into a concrete palette lane

Guides explain the use case. Collections prove the taste. Packs handle the export and implementation layer.

Related guides