WCAG Success Criteria to Axe-Core Mapping
This document provides a comprehensive analysis of how axe-core implements the 80 WCAG 2.2 success criteria, revealing that 29.5% are fully automated, 10.3% have partial coverage, and 60.2% require manual testing. While axe-core excels at technical accessibility checks like ARIA implementation, text alternatives, and color contrast, it has significant gaps in areas requiring human judgment such as error handling, context changes, and content quality. Coverage varies substantially by conformance level—50-55% for Levels A and AA, but only 17.9% for Level AAA—reflecting the tool’s focus on automatically testable criteria rather than subjective quality assessments.
Complete Mapping Table
This table maps WCAG 2.2 Success Criteria to their implementation status in axe-core, based on analysis of axe-core’s ACT implementations.
| WCAG SC | Success Criteria Name | Level | Principle | Description | Axe-Core Implemented | Primary Axe Rule | Additional Axe Rules | Implementation Status |
|---|---|---|---|---|---|---|---|---|
| 1.1.1 | Non-text Content | A | Perceivable | Provide text alternatives for non-text content | Yes | image-alt | area-alt, input-image-alt, object-alt, role-img-alt, svg-img-alt | ✅ Full Coverage |
| 1.2.1 | Audio-only and Video-only (Prerecorded) | A | Perceivable | Provide alternatives for time-based media | Partial | * | * | ⚠️ Manual Review Required |
| 1.2.2 | Captions (Prerecorded) | A | Perceivable | Provide captions for videos | Partial | video-caption | * | ⚠️ Manual Review Required |
| 1.2.3 | Audio Description or Media Alternative (Prerecorded) | A | Perceivable | Provide audio descriptions or media alternative | No | * | * | ❌ Not Implemented |
| 1.2.4 | Captions (Live) | AA | Perceivable | Provide captions for live audio content | No | * | * | ❌ Not Implemented |
| 1.2.5 | Audio Description (Prerecorded) | AA | Perceivable | Provide audio descriptions for videos | No | * | * | ❌ Not Implemented |
| 1.2.6 | Sign Language (Prerecorded) | AAA | Perceivable | Provide sign language interpretation | No | * | * | ❌ Not Implemented |
| 1.2.7 | Extended Audio Description (Prerecorded) | AAA | Perceivable | Provide extended audio descriptions | No | * | * | ❌ Not Implemented |
| 1.2.8 | Media Alternative (Prerecorded) | AAA | Perceivable | Provide full text alternative for synchronized media | No | * | * | ❌ Not Implemented |
| 1.2.9 | Audio-only (Live) | AAA | Perceivable | Provide alternative for live audio-only content | No | * | * | ❌ Not Implemented |
| 1.3.1 | Info and Relationships | A | Perceivable | Information and relationships can be programmatically determined | Yes | definition-list, dlitem | list, listitem, aria-required-children, aria-required-parent | ✅ Good Coverage |
| 1.3.2 | Meaningful Sequence | A | Perceivable | Content can be presented in a meaningful sequence | Partial | * | * | ⚠️ Limited Coverage |
| 1.3.3 | Sensory Characteristics | A | Perceivable | Instructions don’t rely solely on sensory characteristics | No | * | * | ❌ Not Implemented |
| 1.3.4 | Orientation | AA | Perceivable | Content doesn’t restrict its view to single display orientation | Yes | css-orientation-lock | * | ✅ Full Coverage |
| 1.3.5 | Identify Input Purpose | AA | Perceivable | Purpose of input fields can be programmatically determined | Yes | autocomplete-valid | * | ✅ Full Coverage |
| 1.3.6 | Identify Purpose | AAA | Perceivable | Purpose of UI components can be programmatically determined | No | * | * | ❌ Not Implemented |
| 1.4.1 | Use of Color | A | Perceivable | Color is not the only means of conveying information | Yes | link-in-text-block | * | ✅ Partial Coverage |
| 1.4.2 | Audio Control | A | Perceivable | Provide control for audio that plays automatically | Yes | no-autoplay-audio | * | ✅ Full Coverage |
| 1.4.3 | Contrast (Minimum) | AA | Perceivable | Text has sufficient contrast ratio (4.5:1) | Yes | color-contrast | * | ✅ Full Coverage |
| 1.4.4 | Resize Text | AA | Perceivable | Text can be resized up to 200% without assistive technology | Yes | meta-viewport | * | ✅ Full Coverage |
| 1.4.5 | Images of Text | AA | Perceivable | Use text rather than images of text | No | * | * | ❌ Not Implemented |
| 1.4.6 | Contrast (Enhanced) | AAA | Perceivable | Text has sufficient contrast ratio (7:1) | Yes | color-contrast-enhanced | * | ✅ Full Coverage |
| 1.4.7 | Low or No Background Audio | AAA | Perceivable | Audio content has minimal background noise | No | * | * | ❌ Not Implemented |
| 1.4.8 | Visual Presentation | AAA | Perceivable | Visual presentation of text blocks | No | * | * | ❌ Not Implemented |
| 1.4.9 | Images of Text (No Exception) | AAA | Perceivable | Use text rather than images of text (no exceptions) | No | * | * | ❌ Not Implemented |
| 1.4.10 | Reflow | AA | Perceivable | Content reflows to single column without horizontal scrolling | Partial | * | * | ⚠️ Limited Coverage |
| 1.4.11 | Non-text Contrast | AA | Perceivable | Sufficient contrast for UI components and graphics | Partial | * | * | ⚠️ Limited Coverage |
| 1.4.12 | Text Spacing | AA | Perceivable | Content doesn’t lose information when text spacing is increased | Yes | avoid-inline-spacing | * | ✅ Full Coverage |
| 1.4.13 | Content on Hover or Focus | AA | Perceivable | Additional content on hover/focus is dismissible, hoverable, persistent | No | * | * | ❌ Not Implemented |
| 2.1.1 | Keyboard | A | Operable | All functionality available from keyboard | No | * | * | ❌ Not Implemented |
| 2.1.2 | No Keyboard Trap | A | Operable | Keyboard focus is never trapped | No | * | * | ❌ Not Implemented |
| 2.1.3 | Keyboard (No Exception) | AAA | Operable | All functionality available from keyboard (no exceptions) | No | * | * | ❌ Not Implemented |
| 2.1.4 | Character Key Shortcuts | A | Operable | Character key shortcuts can be turned off or remapped | No | * | * | ❌ Not Implemented |
| 2.2.1 | Timing Adjustable | A | Operable | Time limits can be adjusted by the user | No | * | * | ❌ Not Implemented |
| 2.2.2 | Pause, Stop, Hide | A | Operable | Moving, blinking, scrolling content can be paused | Yes | blink, marquee | * | ✅ Partial Coverage |
| 2.2.3 | No Timing | AAA | Operable | No time limits on content | No | * | * | ❌ Not Implemented |
| 2.2.4 | Interruptions | AAA | Operable | Interruptions can be postponed or suppressed | No | * | * | ❌ Not Implemented |
| 2.2.5 | Re-authenticating | AAA | Operable | Data is preserved when re-authenticating | No | * | * | ❌ Not Implemented |
| 2.2.6 | Timeouts | AAA | Operable | Users are warned of the duration of inactivity | No | * | * | ❌ Not Implemented |
| 2.3.1 | Three Flashes or Below Threshold | A | Operable | No content flashes more than 3 times per second | No | * | * | ❌ Not Implemented |
| 2.3.2 | Three Flashes | AAA | Operable | No content flashes more than 3 times per second (strict) | No | * | * | ❌ Not Implemented |
| 2.3.3 | Animation from Interactions | AAA | Operable | Motion animation can be disabled | No | * | * | ❌ Not Implemented |
| 2.4.1 | Bypass Blocks | A | Operable | Skip navigation mechanisms are available | Yes | bypass | * | ✅ Full Coverage |
| 2.4.2 | Page Titled | A | Operable | Web pages have descriptive titles | Yes | document-title | * | ✅ Full Coverage |
| 2.4.3 | Focus Order | A | Operable | Focus order is logical and intuitive | Partial | tabindex | * | ⚠️ Limited Coverage |
| 2.4.4 | Link Purpose (In Context) | A | Operable | Purpose of links can be determined from link text or context | Yes | link-name | * | ✅ Full Coverage |
| 2.4.5 | Multiple Ways | AA | Operable | Multiple ways are available to locate web pages | No | * | * | ❌ Not Implemented |
| 2.4.6 | Headings and Labels | AA | Operable | Headings and labels describe topic or purpose | Yes | empty-heading | summary-name | ✅ Partial Coverage |
| 2.4.7 | Focus Visible | AA | Operable | Keyboard focus indicator is visible | No | * | * | ❌ Not Implemented |
| 2.4.8 | Location | AAA | Operable | Information about location within site is available | No | * | * | ❌ Not Implemented |
| 2.4.9 | Link Purpose (Link Only) | AAA | Operable | Purpose of links can be identified from link text alone | Yes | link-name | * | ✅ Full Coverage |
| 2.4.10 | Section Headings | AAA | Operable | Section headings are used to organize content | Yes | heading-order | * | ✅ Full Coverage |
| 2.4.11 | Focus Not Obscured (Minimum) | AA | Operable | Focused element is at least partially visible | No | * | * | ❌ Not Implemented |
| 2.4.12 | Focus Not Obscured (Enhanced) | AAA | Operable | Focused element is fully visible | No | * | * | ❌ Not Implemented |
| 2.4.13 | Focus Appearance | AAA | Operable | Focus indicators meet minimum area and contrast | No | * | * | ❌ Not Implemented |
| 2.5.1 | Pointer Gestures | A | Operable | Functionality that uses multipoint or path-based gestures has alternatives | No | * | * | ❌ Not Implemented |
| 2.5.2 | Pointer Cancellation | A | Operable | Functions triggered by single pointers can be cancelled | No | * | * | ❌ Not Implemented |
| 2.5.3 | Label in Name | A | Operable | Accessible name contains the visible label text | Yes | label-content-name-mismatch | * | ✅ Full Coverage |
| 2.5.4 | Motion Actuation | A | Operable | Functionality triggered by motion can be disabled | No | * | * | ❌ Not Implemented |
| 2.5.5 | Target Size (Enhanced) | AAA | Operable | Click targets are at least 44×44 CSS pixels | No | * | * | ❌ Not Implemented |
| 2.5.6 | Concurrent Input Mechanisms | AAA | Operable | Content does not restrict use of input modalities | No | * | * | ❌ Not Implemented |
| 2.5.7 | Dragging Movements | AA | Operable | Dragging movements have single pointer alternative | No | * | * | ❌ Not Implemented |
| 2.5.8 | Target Size (Minimum) | AA | Operable | Click targets are at least 24×24 CSS pixels | Yes | target-size | * | ✅ Full Coverage |
| 3.1.1 | Language of Page | A | Understandable | Primary language of page is programmatically determined | Yes | html-has-lang, html-lang-valid | * | ✅ Full Coverage |
| 3.1.2 | Language of Parts | AA | Understandable | Language of passages is programmatically determined | Yes | valid-lang | * | ✅ Full Coverage |
| 3.1.3 | Unusual Words | AAA | Understandable | Definitions are available for unusual words | No | * | * | ❌ Not Implemented |
| 3.1.4 | Abbreviations | AAA | Understandable | Definitions or expanded forms are available for abbreviations | No | * | * | ❌ Not Implemented |
| 3.1.5 | Reading Level | AAA | Understandable | Supplemental content is available when text requires advanced reading ability | No | * | * | ❌ Not Implemented |
| 3.1.6 | Pronunciation | AAA | Understandable | Pronunciation is available for words where meaning is ambiguous | No | * | * | ❌ Not Implemented |
| 3.2.1 | On Focus | A | Understandable | Receiving focus does not initiate change of context | No | * | * | ❌ Not Implemented |
| 3.2.2 | On Input | A | Understandable | Changing settings does not automatically cause change of context | No | * | * | ❌ Not Implemented |
| 3.2.3 | Consistent Navigation | AA | Understandable | Navigational mechanisms are consistent | No | * | * | ❌ Not Implemented |
| 3.2.4 | Consistent Identification | AA | Understandable | Components with same functionality are consistently identified | No | * | * | ❌ Not Implemented |
| 3.2.5 | Change on Request | AAA | Understandable | Changes of context are initiated only by user request | No | * | * | ❌ Not Implemented |
| 3.2.6 | Consistent Help | A | Understandable | Access to help is consistent | No | * | * | ❌ Not Implemented |
| 3.3.1 | Error Identification | A | Understandable | Input errors are identified and described to user | No | * | * | ❌ Not Implemented |
| 3.3.2 | Labels or Instructions | A | Understandable | Labels or instructions are provided for user input | Yes | label, select-name | input-button-name, aria-input-field-name | ✅ Good Coverage |
| 3.3.3 | Error Suggestion | AA | Understandable | Error suggestions are provided when input errors are detected | No | * | * | ❌ Not Implemented |
| 3.3.4 | Error Prevention (Legal, Financial, Data) | AA | Understandable | Submissions are reversible, checked, or confirmed | No | * | * | ❌ Not Implemented |
| 3.3.5 | Help | AAA | Understandable | Context-sensitive help is available | No | * | * | ❌ Not Implemented |
| 3.3.6 | Error Prevention (All) | AAA | Understandable | Submissions are reversible, checked, or confirmed (all) | No | * | * | ❌ Not Implemented |
| 3.3.7 | Redundant Entry | A | Understandable | Information required that was previously entered is auto-populated | No | * | * | ❌ Not Implemented |
| 3.3.8 | Accessible Authentication (Minimum) | AA | Understandable | Authentication does not rely on cognitive function test | No | * | * | ❌ Not Implemented |
| 3.3.9 | Accessible Authentication (Enhanced) | AAA | Understandable | Authentication does not rely on cognitive function test (enhanced) | No | * | * | ❌ Not Implemented |
| 4.1.1 | Parsing | A | Robust | Markup has complete start/end tags and proper nesting | Yes | duplicate-id-aria | * | ✅ Partial Coverage |
| 4.1.2 | Name, Role, Value | A | Robust | Name and role can be programmatically determined | Yes | button-name, aria-* rules | Multiple ARIA rules | ✅ Excellent Coverage |
| 4.1.3 | Status Messages | AA | Robust | Status messages can be programmatically determined | No | * | * | ❌ Not Implemented |
Summary Statistics
Overall Implementation Coverage
- Total WCAG 2.2 Success Criteria: 80
- Fully Implemented: 23 (29.5%)
- Partially Implemented: 8 (10.3%)
- Not Implemented: 47 (60.2%)
By Conformance Level
| Level | Total | Implemented | Partial | Not Implemented | Coverage Rate |
|---|---|---|---|---|---|
| A | 30 | 11 | 4 | 15 | 50.0% |
| AA | 20 | 9 | 2 | 9 | 55.0% |
| AAA | 28 | 3 | 2 | 23 | 17.9% |
By Principle
| Principle | Total | Implemented | Partial | Not Implemented | Coverage Rate |
|---|---|---|---|---|---|
| 1. Perceivable | 31 | 8 | 4 | 19 | 38.7% |
| 2. Operable | 29 | 8 | 2 | 19 | 34.5% |
| 3. Understandable | 17 | 2 | 1 | 14 | 17.6% |
| 4. Robust | 3 | 2 | 1 | 0 | 100.0% |
Key Findings
✅ Strong Coverage Areas
- Text Alternatives (1.1.1) – Comprehensive coverage with multiple axe rules
- ARIA Implementation (4.1.2) – Excellent coverage with 20+ dedicated ARIA rules
- Language Identification (3.1.1, 3.1.2) – Full coverage
- Form Labels (3.3.2) – Good coverage for basic labeling
- Bypass Mechanisms (2.4.1) – Full coverage
- Color Contrast (1.4.3, 1.4.6) – Full coverage for automated testing
⚠️ Partial Coverage Areas
- Media Accessibility (1.2.x) – Limited to basic video captions
- Focus Management (2.4.3, 2.4.7) – Basic tabindex checking only
- Content Structure (1.3.1) – Good but not comprehensive
- Navigation Consistency (3.2.x) – No automated coverage
❌ Major Gap Areas
- Context Changes (3.2.1, 3.2.2) – No automated coverage
- Error Handling (3.3.1, 3.3.3, 3.3.4) – No automated coverage
- Timing and Motion (2.1.x, 2.2.x, 2.5.x) – Very limited coverage
- Complex Interactions – Most pointer gesture and motion requirements
- Content Quality – Reading level, abbreviations, pronunciation
Implementation Notes
- Axe-core focuses on automatically testable criteria
- Many WCAG success criteria require manual testing or human judgment
- Level AAA has significantly lower automated coverage due to complexity
- Robust principle has best coverage due to technical nature of requirements
References
- WCAG 2.2 Specification
- How to Meet WCAG (Quick Reference)
- Axe-core ACT Implementations
- Axe-core Rules Documentation
This mapping reflects axe-core version 4.11 capabilities and WCAG 2.2 success criteria as of December 2024.