APCA Readability Algorithm
Preview the future of digital accessibility with the Advanced Perceptual Contrast Algorithm, calculating human readability based on spatial frequency and polarity.
Why the web accessibility community is moving to APCA
WCAG 2.1's contrast formula was formulated in 2008. While it has been foundational for web accessibility, modern display science has revealed significant flaws: it frequently fails combinations that are easily readable by human eyes, while passing combinations that are virtually unreadable (such as thin hairline fonts in dark mode).
APCA (Advanced Perceptual Contrast Algorithm) is the candidate contrast method developed for the upcoming W3C WCAG 3 guidelines. TintSense includes a native APCA engine so you can design for tomorrow's standards today.
Unlike WCAG 2.1 which uses a simple ratio of relative luminances, APCA calculates Lightness Contrast (Lc)
ranging from -108 to +106. APCA accounts for human contrast constancy, pupil size adjustments, and non-linear photoreceptor response:
sapc = (Y_bg^0.56 - Y_txt^0.57) × 1.14 (Dark on Light)
Core Improvements Over WCAG 2.1
1. Polarity Awareness
Human vision perceives dark text on a white background differently than white text on a black background (due to halation and optical scatter). WCAG 2.1 gives both directions the exact same numerical ratio (21:1). APCA dynamically adjusts its exponent depending on whether your text is light-on-dark or dark-on-light.
2. Font Size & Weight Context
In WCAG 2.1, 4.5:1 is required whether your font is an ultra-thin 12px caption or a heavy 48px bold headline. APCA models spatial frequency: thicker, larger letterforms require less contrast than thin, delicate letterforms:
3. No More Dark Mode Inconsistencies
Dark mode designs often struggle under WCAG 2.1 because pure white text on dark backgrounds causes harsh visual vibration (halation). APCA guides you toward softer, comfortable light grays that remain 100% readable without causing eye fatigue.
How to enable in Figma
- Open TintSense and click the Settings icon (gear).
- Scroll to the APCA (Pro) section and toggle Enable APCA on.
- Run a scan. Every text row and canvas badge will now display both the WCAG ratio and the APCA $L_c$ value.