APCA Calculator (WCAG 3.0)
Calculate contrast using the APCA algorithm, the new proposed standard for WCAG 3.0
APCA - WCAG 3.0 Contrast
Advanced Perceptual Contrast Algorithm. More accurate than WCAG 2.1 for modern displays and considers font size/weight.
Font Settings
Sample Text Preview
Secondary text at smaller size
Use Case Recommendations
About APCA
APCA is the new contrast algorithm proposed for WCAG 3.0. Unlike WCAG 2.1, it considers text polarity (light/dark), font size, and weight for more accurate accessibility evaluation.
How it works
APCA (Advanced Perceptual Contrast Algorithm) is the new contrast algorithm proposed for WCAG 3.0. It represents a significant improvement over the WCAG 2.1 contrast method.
Why is APCA better?
- More accurate: Considers how we actually perceive contrast on modern displays
- Typography context: Takes font size and weight into account
- Polarity: Differentiates between light text on dark background and vice versa
- Use cases: Provides specific thresholds for different UI elements
What is the Lc value?
The Lc (Lightness Contrast) value is APCA's metric. Unlike WCAG 2.1's ratio, Lc can be positive or negative depending on polarity (light/dark text on dark/light background).
Recommended thresholds
- Lc 90+: Body text (14-16px)
- Lc 75+: Medium text (18px)
- Lc 60+: Large text (24px+) and UI components
- Lc 45+: Large headlines (36px+) and non-text elements
APCA Adoption
APCA is being adopted by major companies like Google, Microsoft, and Adobe. Tools like Figma and Adobe XD already include APCA support.
💡 Practical Examples
Case 1: Body text in dark mode
You have light gray text #B0B0B0 on dark background #1A1A2E.
→ WCAG 2.1: 7.2:1 ✅ Passes AAA
→ APCA Lc: 68 ⚠️ Only valid for 18px+ text
→ For 14px text, you need Lc 90+ → Use #E0E0E0 → Lc: 85
Case 2: Primary button
Blue button #2563EB with white text #FFFFFF.
→ APCA Lc: 72 ✅ Perfect for 16px bold text
→ WCAG 2.1: 4.5:1 ✅ Passes AA
Case 3: Input placeholder
Input with white background and placeholder #9CA3AF.
→ APCA Lc: 52 ⚠️ Only valid for large auxiliary text
→ For readable placeholder use #6B7280 → Lc: 63