Introduction to WCAG 2.2
On October 5, 2023, the World Wide Web Consortium (W3C) officially published WCAG 2.2 as a W3C Recommendation—the highest level of web standard. This update represents a significant step forward in making the web more accessible to people with disabilities, particularly those with cognitive, learning, motor, and vision impairments.
If you're a web developer, designer, or digital content creator, understanding WCAG 2.2 isn't just about compliance—it's about creating better experiences for all users. With approximately 1.3 billion people worldwide living with some form of disability, accessibility isn't a niche concern; it's a fundamental requirement for inclusive digital design.
In this comprehensive guide, we'll explore everything you need to know about WCAG 2.2, from the new success criteria to practical implementation strategies that will help you build more accessible websites and applications.
What's New: WCAG 2.2 vs WCAG 2.1
WCAG 2.2 builds upon the foundation of WCAG 2.1, adding nine new success criteria while maintaining backward compatibility. This means that if your website meets WCAG 2.2 requirements, it automatically satisfies WCAG 2.1 and WCAG 2.0 as well.
WCAG updates are designed to be backward-compatible. Meeting WCAG 2.2 standards ensures your site complies with all previous versions of the guidelines.
Key Changes at a Glance
- 9 new success criteria focused on cognitive, motor, and visual accessibility
- 1 criterion removed (4.1.1 Parsing) as it's now obsolete due to HTML standards evolution
- Enhanced focus visibility requirements for keyboard navigation
- Stricter authentication standards that reduce cognitive load
- Improved mobile accessibility with target size requirements
The primary beneficiaries of these updates are:
- Users with low vision who rely on visible focus indicators
- People with cognitive or learning disabilities who benefit from reduced redundancy
- Users with motor impairments who need larger touch targets and alternatives to dragging
- Mobile users who interact with touch interfaces
The Nine New Success Criteria in Detail
Let's explore each new success criterion, understand its purpose, and learn how to implement it effectively.
Level A Criteria
2.4.7 Focus Visible (Previously Level AA, now includes new requirements)
While technically not new, focus visibility has been enhanced with additional requirements in 2.4.11 and 2.4.13.
3.3.7 Redundant Entry (Level A)
What it means: Users shouldn't have to enter the same information multiple times within a single session unless absolutely necessary for security or when the information is no longer valid.
Why it matters: Re-entering information is frustrating for everyone but particularly challenging for users with cognitive disabilities, memory impairments, or motor difficulties.
Practical implementation:
- Save form data as users progress through multi-step processes
- Auto-fill previously entered information (like billing and shipping addresses)
- Use session storage or cookies to remember user inputs
- Provide clear options to copy information from one field to another
Use browser autocomplete attributes and localStorage to remember non-sensitive information across form steps. For sensitive data like passwords, ensure your security practices align with this criterion.
// Example: Save non-sensitive form data to localStorage
function saveFormData(fieldName, value) {
if (!isSensitiveField(fieldName)) {
localStorage.setItem(`form_${fieldName}`, value);
}
}
function retrieveFormData(fieldName) {
return localStorage.getItem(`form_${fieldName}`);
}
Exceptions:
- Security purposes (password re-entry)
- When the information is no longer valid
- When re-entering is essential to the process
3.3.8 Accessible Authentication (Minimum) (Level AA)
What it means: Authentication processes shouldn't rely solely on cognitive function tests like memorizing passwords, solving puzzles, or recalling specific information.
Why it matters: Traditional authentication methods can exclude users with cognitive disabilities, memory impairments, or those who use assistive technologies.
Practical implementation:
- Support password managers and browser autofill
- Offer email or SMS-based authentication links
- Provide biometric authentication options (fingerprint, face recognition)
- Allow users to paste passwords from clipboard
- Use OAuth/social login as an alternative
Avoid using CAPTCHA puzzles that require identifying objects in images, solving math problems, or remembering specific information without accessible alternatives.
<!-- Example: Support password managers with proper autocomplete -->
<input
type="email"
name="email"
autocomplete="email"
id="user-email"
/>
<input
type="password"
name="password"
autocomplete="current-password"
id="user-password"
/>
Level AA Criteria
2.4.11 Focus Not Obscured (Minimum) (Level AA)
What it means: When a user interface component receives keyboard focus, the focused element must not be completely hidden by author-created content like sticky headers, cookie banners, or modal dialogs.
Why it matters: Keyboard-only users need to see where they are on the page. If focus indicators are hidden behind fixed elements, users can lose their place entirely.
Practical implementation:
- Ensure sticky headers don't overlap with focused elements
- Add appropriate z-index management for focus indicators
- Implement scroll behavior that reveals focused elements
- Test your site navigation using only the keyboard (Tab, Shift+Tab)
/* Example: Ensure focus indicators appear above sticky elements */
:focus {
position: relative;
z-index: 1000; /* Higher than sticky header */
outline: 2px solid #005fcc;
outline-offset: 2px;
}
.sticky-header {
z-index: 999; /* Lower than focus indicators */
}
2.4.12 Focus Not Obscured (Enhanced) (Level AAA)
What it means: The stricter AAA version requires that no part of the focused element is hidden by author-created content.
Implementation: Similar to 2.4.11 but with stricter requirements. Consider implementing scroll-margin or scroll-padding to ensure focused elements are fully visible.
/* Example: Add scroll margin to ensure full visibility */
:focus {
scroll-margin-top: 100px; /* Height of sticky header + buffer */
}
2.5.7 Dragging Movements (Level AA)
What it means: Any functionality that requires dragging (click-hold-move-release) must have a single-pointer alternative that doesn't require dragging.
Why it matters: Dragging gestures are difficult or impossible for users with motor disabilities, tremors, or those using assistive technologies.
Practical implementation:
- Provide alternative controls for sliders (increment/decrement buttons)
- Offer click-to-select options for drag-and-drop interfaces
- Add keyboard shortcuts for rearranging items
- Include up/down buttons for sortable lists
<!-- Example: Accessible slider with button alternatives -->
<div class="slider-control">
<button type="button" aria-label="Decrease value">−</button>
<input
type="range"
min="0"
max="100"
value="50"
aria-label="Volume control"
/>
<button type="button" aria-label="Increase value">+</button>
</div>
Exception: When dragging is essential to the functionality (like drawing or handwriting apps).
2.5.8 Target Size (Minimum) (Level AA)
What it means: Interactive elements must have a minimum target size of at least 24 by 24 CSS pixels, or have adequate spacing between smaller targets.
Why it matters: Small touch targets are difficult to activate accurately, especially for users with motor impairments, tremors, or those using mobile devices.
Practical implementation:
- Set minimum width and height of 24px for all interactive elements
- Add padding to increase clickable area without enlarging visual size
- Ensure at least 8px spacing between smaller adjacent controls
- Use CSS to expand hit areas beyond visible boundaries
Preview
Sample Text
Contrast Ratio
/* Example: Minimum target size for buttons */
.button {
min-width: 24px;
min-height: 24px;
padding: 8px 16px; /* This increases the actual target size */
}
/* Example: Small icon with expanded hit area */
.icon-button {
width: 16px;
height: 16px;
padding: 12px; /* Total target: 40px x 40px */
}
/* Example: Spacing alternative for small adjacent targets */
.button-group .small-button {
width: 16px;
height: 16px;
margin: 8px; /* Creates 24px spacing */
}
Exceptions:
- Inline links within sentences
- Targets where size is determined by the user agent (browser defaults)
- When a larger equivalent control exists on the same page
- When the target size is essential to the information conveyed
Use the 24×24 Pixel Cursor Bookmarklet by Adrian Roselli to visually test your target sizes. It turns your cursor into a 24×24 pixel square for easy verification.
3.2.6 Consistent Help (Level A)
What it means: If help mechanisms (contact links, chat buttons, FAQs, help pages) appear on multiple pages, they must be in the same relative order on each page.
Why it matters: Users with cognitive disabilities benefit from predictable, consistent interface patterns. When help is in a different location on each page, it creates confusion and makes it harder to get assistance.
Practical implementation:
- Place help links in the same position across all pages (e.g., always in the header or footer)
- Use the same order for multiple help mechanisms
- Maintain consistent labeling ("Help," "Support," "Contact")
- Keep help buttons in fixed positions for single-page applications
<!-- Example: Consistent help in footer across all pages -->
<footer>
<nav aria-label="Help and support">
<ul>
<li><a href="/faq">FAQ</a></li>
<li><a href="/contact">Contact Us</a></li>
<li><a href="/help">Help Center</a></li>
<li><button id="chat-support">Live Chat</button></li>
</ul>
</nav>
</footer>
Level AAA Criteria
2.4.13 Focus Appearance (Level AAA)
What it means: Focus indicators must meet specific size and contrast requirements:
- Minimum area of at least a 2 CSS pixel thick perimeter around the focused element
- At least 3:1 contrast ratio between focused and unfocused states
- At least 3:1 contrast against adjacent colors
Why it matters: While most browsers provide default focus indicators, custom designs often reduce visibility, making it hard for keyboard users to track their position.
Practical implementation:
- Design custom focus styles that meet size and contrast requirements
- Test focus indicators against all background colors in your design system
- Use our contrast checker to verify focus indicator colors
Want to check your color contrast?
Try the Contrast Checker →/* Example: WCAG 2.2 compliant focus indicator */
:focus {
outline: 2px solid #005fcc; /* Minimum 2px thickness */
outline-offset: 2px; /* Creates visible separation */
/* Blue #005fcc has >3:1 contrast against most backgrounds */
}
/* Example: Enhanced focus for dark mode */
@media (prefers-color-scheme: dark) {
:focus {
outline: 2px solid #60a5fa; /* Lighter blue for dark backgrounds */
outline-offset: 2px;
}
}
Testing your focus indicators:
- Navigate your site using only the Tab key
- Verify focus is visible on all interactive elements
- Check contrast ratios using automated tools
- Test with different color schemes (light mode, dark mode)
3.3.9 Accessible Authentication (Enhanced) (Level AAA)
What it means: The stricter AAA version requires that authentication doesn't rely on cognitive function tests, with no exceptions for object recognition or personal content identification.
Implementation: Follow the same principles as 3.3.8 but without using CAPTCHAs or image recognition challenges at all.
One Removed Criterion: 4.1.1 Parsing
WCAG 2.2 officially obsoletes Success Criterion 4.1.1 Parsing, which required valid HTML markup. This criterion became unnecessary because:
- Modern HTML specifications define how browsers should handle malformed markup
- Browsers now consistently parse and error-correct HTML
- Assistive technologies rely on the accessibility tree, not raw HTML validity
While you no longer need to validate HTML for WCAG compliance, writing clean, semantic HTML is still a best practice for maintainability and performance.
Color Contrast and WCAG 2.2
While WCAG 2.2 doesn't introduce new color contrast ratios, the new focus indicator requirements directly impact how you design and test contrast:
Focus Indicator Contrast Requirements
The new Success Criterion 2.4.13 (Focus Appearance) specifically requires:
- 3:1 minimum contrast between focused and unfocused states
- 3:1 minimum contrast against adjacent colors
This means your focus indicators must be carefully chosen to work across your entire color palette.
Practical Color Contrast Considerations
1. Test Focus Indicators Against All Backgrounds
Your focus outline color must maintain 3:1 contrast against every background color it might appear on. This is particularly challenging for sites with image backgrounds or varied color schemes.
/* Example: Dual-color focus indicator for better contrast */
:focus {
outline: 2px solid #005fcc;
outline-offset: 2px;
box-shadow: 0 0 0 4px #ffffff; /* White buffer for dark backgrounds */
}
2. Consider Dark Mode Implications
If your site supports dark mode, focus indicators need different colors to maintain contrast requirements in both modes.
Include focus indicator colors as part of your design system's color palette. Document which focus colors work with which background colors.
3. Use Color Contrast Tools
Testing focus indicators manually against every background is time-consuming. Use tools to systematically check combinations:
Want to check your color contrast?
Try the Contrast Checker →Target Size and Visual Design
The new 24×24 pixel minimum target size (SC 2.5.8) affects your visual design decisions:
- Mobile-first design naturally creates larger touch targets
- Spacing is your friend: Add margins between small controls
- Consider padding vs visual size: Buttons can look small but have large hit areas
Implementation Strategy for WCAG 2.2
Updating your website to meet WCAG 2.2 doesn't require a complete redesign. Follow this systematic approach:
Phase 1: Audit Current Compliance
- Assess existing WCAG 2.1 compliance – If you already meet 2.1, you're most of the way there
- Identify gaps – Focus on the nine new success criteria
- Prioritize Level AA – Most legal requirements reference Level AA compliance
Phase 2: Focus on Quick Wins
These changes often require minimal development effort:
- Add autocomplete attributes to forms (3.3.8)
- Increase button and link sizes to 24×24px (2.5.8)
- Standardize help link positions across pages (3.2.6)
- Implement localStorage for form data persistence (3.3.7)
Phase 3: Address Complex Changes
These require more planning and development:
- Audit drag-and-drop interfaces and add alternatives (2.5.7)
- Review and update focus indicators for visibility and contrast (2.4.11, 2.4.13)
- Redesign authentication flows to support password managers (3.3.8)
- Test and fix focus obscuration from fixed elements (2.4.11)
Phase 4: Test Thoroughly
- Keyboard-only navigation: Tab through your entire site
- Screen reader testing: Verify assistive technology compatibility
- Automated scanning: Use tools like axe DevTools, WAVE, or Lighthouse
- Manual verification: Some criteria require human judgment
- Real user testing: Include people with disabilities in your testing process
Automated accessibility checkers can only catch about 30-40% of accessibility issues. Manual testing and real user feedback are essential for true WCAG compliance.
Common Mistakes to Avoid
1. Ignoring Focus Visibility
The mistake: Removing focus outlines for aesthetic reasons without providing alternatives.
The fix: Always provide visible focus indicators. Style them to match your design, but never remove them entirely.
/* DON'T do this */
:focus {
outline: none; /* Removes visibility for keyboard users */
}
/* DO this instead */
:focus {
outline: 2px solid #0066cc;
outline-offset: 2px;
}
2. Creating Tiny Touch Targets
The mistake: Designing mobile interfaces with targets smaller than 24×24 pixels without adequate spacing.
The fix: Use padding to expand hit areas or add spacing between controls.
3. Breaking Authentication with Paste Prevention
The mistake: Preventing users from pasting passwords, breaking password manager functionality.
The fix: Never disable paste functionality on authentication fields. It's required for accessible authentication.
// DON'T do this
input.addEventListener('paste', (e) => e.preventDefault());
// DO allow pasting
// (Simply don't add paste prevention)
4. Inconsistent Help Placement
The mistake: Moving help links, chat buttons, or contact forms to different positions on each page.
The fix: Create a consistent help navigation pattern and maintain it across your site.
5. Hidden Focused Elements
The mistake: Using high z-index values for sticky headers or modals that hide focused elements.
The fix: Manage z-index carefully and ensure focused elements are always visible.
Real-World Examples
Example 1: Accessible Multi-Step Form
Here's how to implement a WCAG 2.2-compliant multi-step form that satisfies SC 3.3.7 (Redundant Entry):
// Save form data across steps
const FormStorage = {
save(step, data) {
const existing = this.load();
localStorage.setItem('formData', JSON.stringify({
...existing,
[step]: data,
lastUpdated: new Date().toISOString()
}));
},
load() {
const data = localStorage.getItem('formData');
return data ? JSON.parse(data) : {};
},
clear() {
localStorage.removeItem('formData');
}
};
// Use in your form
function handleStepComplete(stepName, formData) {
FormStorage.save(stepName, formData);
navigateToNextStep();
}
// Auto-fill on page load
function initializeForm() {
const savedData = FormStorage.load();
if (savedData.currentStep) {
populateFormFields(savedData.currentStep);
}
}
Example 2: Accessible Slider with Drag Alternative
Implementing SC 2.5.7 (Dragging Movements):
<div class="price-filter">
<label id="price-label">Price Range</label>
<div class="range-control">
<button
type="button"
aria-label="Decrease minimum price"
onclick="adjustMin(-10)"
>−</button>
<input
type="range"
min="0"
max="1000"
step="10"
value="100"
aria-labelledby="price-label"
aria-valuenow="100"
aria-valuemin="0"
aria-valuemax="1000"
aria-valuetext="$100"
/>
<button
type="button"
aria-label="Increase minimum price"
onclick="adjustMin(10)"
>+</button>
</div>
<output>$100 - $500</output>
</div>
Tools and Resources for WCAG 2.2 Compliance
Testing Tools
Automated Scanners:
- axe DevTools: Browser extension for accessibility testing
- WAVE: Visual feedback about accessibility issues
- Lighthouse: Built into Chrome DevTools
- Pa11y: Command-line accessibility testing
Focus Testing:
- 24×24 Pixel Cursor Bookmarklet: Test target sizes visually
- Keyboard Navigation Testing: Use Tab, Shift+Tab, Enter, Space
- Browser DevTools: Inspect focus states and z-index layers
Color Contrast Testing:
Want to check your color contrast?
Try the Contrast Checker →Official Resources
- W3C WCAG 2.2 Guidelines
- What's New in WCAG 2.2
- Understanding WCAG 2.2
- How to Meet WCAG (Quick Reference)
Educational Resources
- WebAIM: Comprehensive accessibility articles and tutorials
- Deque University: Free accessibility courses
- A11y Project: Community-driven accessibility best practices
- MDN Web Docs: Accessibility guides for developers
Legal and Compliance Considerations
When WCAG 2.2 Becomes Required
Different jurisdictions and regulations have varying timelines for adopting WCAG 2.2:
- European Accessibility Act: Will likely reference WCAG 2.2 when it takes effect in June 2025
- ADA (United States): No official WCAG version specified, but courts often reference WCAG 2.1 AA
- Section 508 (US Federal): Currently references WCAG 2.0, expected to update
- EN 301 549 (EU): The European standard is expected to adopt WCAG 2.2
Implementing WCAG 2.2 now improves user experience for everyone and positions you ahead of future legal requirements. Accessibility is about people, not just compliance.
Benefits Beyond Compliance
Meeting WCAG 2.2 provides benefits beyond avoiding legal issues:
- Larger audience reach: 1.3 billion people worldwide have disabilities
- Better SEO: Accessible sites often rank higher in search results
- Improved usability: Accessibility features benefit all users
- Mobile optimization: Many WCAG 2.2 criteria improve mobile experiences
- Brand reputation: Demonstrates commitment to inclusion
- Future-proofing: Staying current with standards reduces technical debt
Actionable Takeaways
Ready to implement WCAG 2.2? Here's your action plan:
Immediate Actions (This Week)
- Run an automated scan using axe DevTools or WAVE to identify obvious issues
- Test keyboard navigation through your site (Tab, Shift+Tab, Enter, Space)
- Verify target sizes using browser DevTools to measure button and link dimensions
- Check focus visibility by tabbing through your site and observing focus indicators
- Add autocomplete attributes to form fields for authentication (3.3.8)
Short-term Goals (This Month)
- Audit all interactive elements to ensure 24×24 pixel minimum sizes (2.5.8)
- Review drag-and-drop interfaces and add keyboard/click alternatives (2.5.7)
- Standardize help link positions across all pages (3.2.6)
- Implement form data persistence to prevent redundant entry (3.3.7)
- Update focus indicators to meet contrast requirements (2.4.13)
Long-term Strategy (Next Quarter)
- Conduct comprehensive manual testing with real users with disabilities
- Integrate accessibility into your design system and component library
- Train your team on WCAG 2.2 requirements and accessible development practices
- Establish accessibility testing as part of your CI/CD pipeline
- Create an accessibility statement documenting your compliance level
You don't need to fix everything at once. Prioritize high-traffic pages and critical user journeys, then systematically expand your accessibility improvements across your entire site.
Color Accessibility Tools
Color contrast remains a cornerstone of accessibility. Use these tools to ensure your color choices meet WCAG requirements:
Want to check your color contrast?
Try the Contrast Checker →See how your design looks to colorblind users
Try the Simulator →Generate accessible color palettes
Try the Palette Generator →Conclusion
WCAG 2.2 represents a meaningful evolution in web accessibility standards, with a clear focus on cognitive accessibility, mobile usability, and keyboard navigation. The nine new success criteria address real barriers that millions of users face daily, from completing forms to navigating with a keyboard to authenticating securely.
Key points to remember:
- WCAG 2.2 is backward compatible – Meeting 2.2 means you meet 2.1 and 2.0
- Focus on Level AA for most compliance requirements
- Nine new success criteria improve cognitive, motor, and visual accessibility
- One criterion removed (4.1.1 Parsing) as it's now obsolete
- Color contrast remains critical, especially for focus indicators
- Testing requires both automated tools and manual verification
The most important thing to understand about WCAG 2.2 is that it's not just about compliance—it's about creating a better web for everyone. Every improvement you make benefits users with disabilities, elderly users, mobile users, and people in challenging situations.
Start with the quick wins, plan for the complex changes, and commit to making accessibility a core part of your design and development process. The web should be accessible to all, and WCAG 2.2 gives us the tools and guidelines to make that vision a reality.
Ready to check your color contrast? Try our free WCAG 2.2-compliant contrast checker tool to ensure your designs meet the latest accessibility standards.
Want to check your color contrast?
Try the Contrast Checker →Need help with WCAG 2.2 compliance? Start by testing your color contrast, exploring accessible color palettes, and simulating different types of color blindness using our free tools. Every step toward accessibility makes the web better for everyone.