Master Accessibility - From Theory to Practice
Comprehensive guides, tools, and references to deepen your understanding of web accessibility. Bridge the gap between WCAG standards and implementation.
π Official Documentation & Guidelines
WCAG 2.2 Quick Reference
The Web Content Accessibility Guidelines (WCAG) 2.2 are the latest W3C recommendation for making web content accessible. Built on four principles: Perceivable, Operable, Understandable, and Robust (POUR).
Key Changes in WCAG 2.2
- 2.4.11 Focus Not Obscured (Minimum) - Ensure focus isn't hidden by content
- 2.4.12 Focus Not Obscured (Enhanced) - No obstruction of focus at all
- 2.5.7 Dragging Movements - Provide alternatives to drag-and-drop
- 2.5.8 Target Size (Minimum) - Click targets at least 24Γ24 CSS pixels
Understanding WCAG Levels
WCAG has three conformance levels with increasing requirements:
Minimum accessibility. Essential for disabled users.
Recommended compliance target. Legal standard in many regions.
Highest standard. Not required for most compliance.
WAI-ARIA Authoring Practices
The WAI-ARIA Authoring Practices Guide (APG) provides design patterns for accessible widgets. Essential when building complex components that go beyond native HTML.
Key ARIA Roles
- Landmark Roles: banner, navigation, main, complementary, contentinfo
- Widget Roles: button, link, textbox, combobox, tab, dialog
- Composite Roles: grid, listbox, tablist, tree
Screen Reader Compatibility
Different screen readers have varying levels of support for ARIA and HTML5 features. Always test across multiple readers.
| Platform | Screen Reader | Market Share |
|---|---|---|
| Windows | NVDA (Free) | ~25% |
| Windows | JAWS (Paid) | ~20% |
| macOS/iOS | VoiceOver (Built-in) | ~35% |
| Android | TalkBack (Built-in) | ~15% |
π§ Testing Tools & How to Use Them
Browser Extensions
Quick automated testing tools that integrate with your browser's developer tools.
axe DevTools
Industry-standard automated testing. Catches 40-50% of accessibility issues.
- Free Chrome/Firefox extension
- Integrates with browser DevTools
- WCAG 2.1/2.2 rule sets
WAVE Extension
Visual representation of accessibility issues directly on the page.
- Icons show errors, alerts, and features
- Color contrast checking built-in
- Structure order visualization
Lighthouse
Built into Chrome DevTools. Good for baseline testing.
- Accessibility score (0-100)
- Performance and SEO together
- CI/CD integration available
Screen Reader Setup
NVDA (Windows)
Free, open-source screen reader. Most similar to JAWS.
- Download from nvaccess.org
- Keys: NVDA + num pad for navigation
- Object nav: NVDA + num pad 9/7/3/1
VoiceOver (macOS)
Built into all Macs. Cmd + F5 to toggle.
- VO + arrows: navigate
- VO + Shift + down: enter interaction mode
- VO + [: quick nav
JAWS (Windows)
Commercial screen reader, common in enterprise.
- Free 40-minute mode available
- Insert + num pad for navigation
- Industry standard for testing
Color Contrast Checkers
Chrome DevTools
Live contrast checking in the browser.
Elements Panel β Styles β Color Square Keyboard Navigation Checklist
- β Tab moves focus in logical order
- β All interactive elements are focusable
- β Focus indicator is clearly visible
- β Esc closes dialogs/modals
- β Arrow keys navigate lists/grids
- β Home/End jump to start/end
- β Skip links work correctly
- β Focus trap in modals
π Learning Paths & Skill Progression
Follow these structured paths to build your accessibility skills from foundation to mastery. Each level connects to practical code snippets in our library.
Foundations
Start here if you're new to accessibility. Learn semantic HTML and core concepts.
- Semantic HTML Structure
Use proper headings, landmarks, and lists.
View Structure Snippets β - Images and Alt Text
Provide text alternatives for all images.
View Media Snippets β - Labels for Form Controls
Associate inputs with proper labels.
View Form Snippets β
Interactive Components
Build accessible widgets with ARIA and proper keyboard interaction.
- Button Patterns & Links
Correct semantic usage of buttons vs links.
View Button Snippets β - Navigation Patterns
Accessible menus, breadcrumbs, and landmarks.
View Navigation Snippets β - ARIA Widgets
Tabs, accordions, and other composite components.
View Widget Snippets β
Complex Data & Patterns
Master advanced accessibility for sophisticated interfaces.
- Data Tables
Complex tables with headers and spans.
View Table Snippets β - Custom Components
Build accessible custom widgets from scratch.
Try AI Code Refiner β - Focus Management
Advanced focus patterns in SPAs.
View Focus Examples β
πΌ Industry Standards & Best Practices
The A11Y Project
Community-driven resource for accessibility. Checklists, patterns, and practical guides.
- Simple accessibility checklist
- ARIA pattern examples
- Weekly newsletter
Deque University
Comprehensive accessibility curriculum. Some free courses, full library with subscription.
- Web Accessibility Fundamentals (free)
- Screen reader strategies
- Document accessibility
Web.dev Accessibility
Google's developer resources for accessible web development. Practical, modern guidance.
- Accessibility audits guide
- Codelabs and tutorials
- Lighthouse integration
Legal Compliance
Understanding legal requirements for accessibility.
Key Standards
- ADA (Americans with Disabilities Act) - US requirements for accessible digital content
- Section 508 - US federal government accessibility standards
- EN 301 549 - European accessibility requirements for ICT
- AODA - Ontario Accessibility for Ontarians with Disabilities Act
Note: WCAG 2.1 AA is the technical standard referenced by most accessibility laws.
Smashing Magazine Accessibility
Deep-dive articles on specific accessibility topics.
- Common accessibility pitfalls
- Accessible component design
- Testing strategies
π₯ Community & Support Resources
Slack Communities
Join active accessibility communities for real-time help.
- a11y-slack - General accessibility community
Get Invite β - WebAIM Slack - Web accessibility professionals
Join Discussion β - Accessibility Discord - Dev community focused on
a11y
Join Discord β
Follow Accessibility Experts
Learn from thought leaders in the accessibility field.
- LΓ©onie Watson (@leoniewatson) - Screen reader expert
- Adrian Roselli (@aardrian) - Technical accessibility
- Eric Eggert (@yatil) - W3C contributor
- Marcy Sutton (@marcysutton) - Frontend a11y
- Steve Faulkner (@stevefaulkner) - HTML5 and ARIA
Conferences & Events
Learn and network at accessibility-focused events.
- CSUN Assistive Technology Conference
March, Anaheim CA - Largest accessibility conference - Accessibility Scotland
Annual, Edinburgh - Free accessibility event - a11yTO Camp
Toronto, Canada - Community-led a11y camp - Accessibility NYC
Monthly meetups in New York
Open Source Contributions
Contribute to accessibility-focused open source projects.
π Implementation Guides
Your First Accessibility Audit
A step-by-step guide to auditing your first website.
- Set Up Tools
Install axe DevTools, WAVE, and a screen reader (NVDA or VoiceOver).
- Automated Testing
Run axe DevTools and Lighthouse. Fix critical issues first.
- Keyboard Navigation
Tab through the entire site. Document stuck focus or missing indicators.
- Screen Reader Testing
Navigate with NVDA/VoiceOver. Test key user flows: forms, navigation, modals.
- Document & Prioritize
Create a report with issues categorized by impact. Focus on critical user path blockers first.
Retrofitting Accessibility
Adding accessibility to an existing application without a full rewrite.
Prioritization Strategy
- Phase 1: Fix critical keyboard and screen reader blockers
- Phase 2: Add ARIA to custom components
- Phase 3: Improve color contrast and text alternatives
- Phase 4: Polish and advanced enhancements
Tip: Use our AI Code Refiner to quickly fix existing code patterns.
Building Accessible from Day One
Integrate accessibility into your development workflow from the start.
Development Checklist
- β Use semantic HTML by default
- β Add labels to all form inputs
- β Include alt text for images
- β Test keyboard navigation before committing
- β Run axe DevTools on each component
- β Include a11y in code review checklist
Team Collaboration
- Include accessibility acceptance criteria in tickets
- Assign a11y champions in each team
- Regular lunch-and-learn sessions
- Pair program on a11y testing
Accessibility Statement Template
Every site should have an accessibility statement describing compliance status.
Essential Elements
- Commitment to accessibility
- Conformance target (e.g., WCAG 2.2 AA)
- Known limitations
- Contact information for feedback
- Improvement timeline
π Glossary & Quick Reference
Common ARIA Attributes
- aria-label
- Provides an accessible label for elements with no visible text (e.g., icon buttons).
- aria-labelledby
- References another element by ID to use its text as the label.
- aria-describedby
- Associates additional descriptive text with an element (e.g., error messages, help text).
- aria-controls
- Identifies the element(s) whose contents or presence are controlled by the current element (e.g., button that controls a panel).
- aria-hidden
- Hides content from assistive technology while keeping it visible visually.
- aria-expanded
- Indicates the state of collapsible elements (true/false) for accordions, menus, tree views.
- aria-current
- Indicates the current item within a set (e.g., current page, current step).
- aria-live
- Indicates that an element will be updated, and describes the types of updates (polite, assertive, off). Used for live regions like status messages.
- aria-atomic
- Indicates whether assistive technologies should present the entire region as a whole when updated (true/false).
- aria-haspopup
- Indicates the availability of a popup menu, dialog, or submenu (true/false, or menu/listbox/tree/grid).
- aria-orientation
- Indicates whether an element's orientation is horizontal, vertical, or undefined (for separators, toolbars, lists).
- aria-selected
- Indicates the current "selected" state of widgets like tabs, listbox options, or tree items (true/false).
- aria-checked
- Indicates the current "checked" state of checkboxes, radio buttons, and menu items (true/false/mixed).
- aria-pressed
- Indicates the current "pressed" state of toggle buttons (true/false/mixed).
- aria-disabled
- Indicates that an element is perceivable but disabled, preventing user interaction (true/false). Note: Use HTML 'disabled' attribute instead when possible.
- aria-readonly
- Indicates that the element is not editable, but is otherwise operable (true/false). Differs from disabled.
- aria-required
- Indicates that user input is required before form submission (true/false).
- aria-invalid
- Indicates that the entered value does not conform to the format expected by the application (true/false, with grammar/spelling values).
- aria-modal
- Indicates that an element is a modal dialog, blocking interaction with the rest of the application (true/false).
- aria-owns
- Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship when DOM hierarchy cannot be used.
- aria-sort
- Indicates if items in a table or grid are sorted in ascending or descending order (ascending/descending/none/other).
- aria-valuemin
- Defines the minimum allowed value for a range widget (e.g., slider, progressbar).
- aria-valuemax
- Defines the maximum allowed value for a range widget (e.g., slider, progressbar).
- aria-valuenow
- Defines the current value for a range widget (e.g., slider, progressbar, spinbutton).
- aria-valuetext
- Defines the human-readable text alternative of aria-valuenow (for range values like "1/3" or "Page 1").
Accessibility Terminology
- Assistive Technology (AT)
- Hardware/software that helps people with disabilities (e.g., screen readers, magnifiers, switches).
- Focus Ring
- Visual indicator showing which element currently has keyboard focus.
- Landmark
- ARIA or HTML5 regions that define page structure (banner, navigation, main, etc.).
- Screen Reader
- Software that reads screen content aloud for blind users (NVDA, JAWS, VoiceOver).
- Semantic HTML
- Using HTML elements for their intended purpose (button, nav, article) rather than generic divs.
- WCAG
- Web Content Accessibility Guidelines - W3C accessibility standards.
Screen Reader Keyboard Shortcuts
NVDA (Windows)
| Shortcut | Action |
|---|---|
| NVDA + Q | Quit NVDA |
| NVDA + Down | Read all |
| NVDA + K | Next link |
| NVDA + H | Next heading |
VoiceOver (Mac)
| Shortcut | Action |
|---|---|
| VO + F5 | Toggle VoiceOver |
| VO + Right | Next item |
| VO + H | Next heading |
| VO + [ | Previous heading |