Scanning Engines
AllyProof uses three engines to maximize detection coverage while maintaining a zero false-positive baseline. Combined estimated coverage: ~70% of automatable WCAG issues.
Engine Pipeline
Page loaded in Playwright
├── Engine 1: axe-core → "Confirmed violations" (zero false positives)
├── Engine 2: HTML_CodeSniffer → "Additional findings" (deduped against axe-core)
└── Engine 3: APCA → "WCAG 3.0 Preview" (informational contrast)Engines 2 and 3 run concurrently after axe-core completes.
Engine 1: axe-core (Primary)
| Property | Value |
|---|---|
| Source | Deque Systems (open source) |
| Rules | 91 active + 5 experimental |
| Standards | WCAG 2.0/2.1/2.2 A+AA, best-practice |
| False positives | Zero (strict policy) |
| Coverage | ~57% of automatable WCAG issues |
axe-core is the industry standard. It has a zero false-positive policy, meaning it stays silent rather than risk reporting something that isn't a real violation. This makes it the trusted baseline for all AllyProof scans.
Enabled experimental rules
css-orientation-lock— WCAG 1.3.4 Orientationlabel-content-name-mismatch— WCAG 2.5.3 Label in Namep-as-heading— WCAG 1.3.1 Info and Relationshipstable-fake-caption— WCAG 1.3.1 Info and Relationshipstd-has-header— WCAG 1.3.1 Info and Relationships
Engine 2: HTML_CodeSniffer (Secondary)
| Property | Value |
|---|---|
| Source | Squiz Labs (open source) |
| Rules | ~200 rules |
| Standards | WCAG 2.1 A, AA, AAA |
| Integration | Browser script injection |
| False positives | Low (errors), Medium (warnings) |
HTML_CodeSniffer uses different detection algorithms than axe-core, catching issues that axe-core's strict policy causes it to skip. Results are deduplicated against axe-core by matching HTML snippets — if axe-core already found the issue, HTMLCS findings are discarded.
Only errors and warnings are included. Notices (informational items) are excluded as too verbose. Rule IDs are prefixed with htmlcs- for source identification.
Engine 3: APCA Contrast (Preview)
| Property | Value |
|---|---|
| Source | Myndex / W3C WCAG 3.0 draft |
| Type | Perceptual contrast calculator |
| Standard | WCAG 3.0 (draft) |
| False positives | None (mathematical) |
WCAG 3.0 replaces the WCAG 2.x contrast ratio formula with APCA (Advanced Perceptual Contrast Algorithm). APCA accounts for font size, weight, and perceptual uniformity, producing more accurate readability predictions.
APCA Lc thresholds
| Lc value | Use case |
|---|---|
| 90+ | Preferred for body text |
| 75 | Minimum for body text (16px regular) |
| 60 | Minimum for large/bold text |
| 45 | Minimum for non-text UI elements |
| 30 | Absolute minimum for any text |
Coverage Comparison
| Engine | Rules | Unique coverage |
|---|---|---|
| axe-core | 91 | 57% (baseline) |
| HTML_CodeSniffer | ~200 | +10-15% additional |
| APCA | 1 (contrast) | WCAG 3.0 preview |
| Combined | ~290 | ~70% |