How to Make Your Website Accessible: A Practical Guide to WCAG 2.2 Compliance
Accessibility is the difference between a website that welcomes everyone and one that unintentionally locks people out. It is also increasingly a legal requirement in many jurisdictions and a measurable driver of business results. Whether you lead a product team, write content, own a small business, or architect an enterprise platform, making your site accessible is one of the highest-impact investments you can make.
In this comprehensive guide, we will demystify web accessibility and show you how to align your website with the Web Content Accessibility Guidelines (WCAG) 2.2. You will find clear explanations, practical examples, developer-ready code snippets, workflows, and a repeatable roadmap that you can apply to new builds and legacy websites alike.
This is a long-form guide you can bookmark and return to: it is meant to be a reference as you plan, design, implement, test, launch, and maintain accessibility in your organization.
Why Web Accessibility Matters
People and inclusion: More than a billion people worldwide live with some form of disability, including visual, auditory, mobility, cognitive, and neurological differences. Accessible design ensures they can perceive, operate, understand, and use your site.
Legal obligations: In the US, the ADA and Section 508 apply, while the EU Web Accessibility Directive and EN 301 549 require accessibility for public sector sites and many private sector contexts. The European Accessibility Act is expanding requirements to consumer-facing products and services. In many regions, WCAG Level AA is the benchmark.
Business and SEO: Accessible sites tend to be faster and better structured, improving search engine visibility and conversion. Many accessibility best practices, like semantic headings and alt text, directly benefit SEO. Usability improvements reduce support costs and cart abandonment.
Brand reputation and trust: Demonstrating accessibility commitment signals that you respect all users and follow best practices. That trust propels engagement, loyalty, and word of mouth.
What Is WCAG and Which Version Should You Follow?
The Web Content Accessibility Guidelines (WCAG) are internationally recognized standards created by the W3C Web Accessibility Initiative (WAI). They define testable success criteria at three conformance levels: A, AA, and AAA. Most laws and procurement policies reference Level AA.
WCAG 2.0 (2008): Foundational standard.
WCAG 2.1 (2018): Adds mobile, low vision, and cognitive improvements.
WCAG 2.2 (2023): Adds new success criteria focusing on focus visibility, target size, dragging movements, authentication, redundant entry, and consistent help.
WCAG 3.0 (also called Silver): A long-term draft in development and not yet a replacement standard.
WCAG is organized by four principles, often summarized as POUR:
Perceivable: Information and UI must be presented so that users can perceive it.
Operable: Interface components and navigation must be operable by all users, including those using keyboards or alternative input devices.
Understandable: Content and operation must be understandable.
Robust: Content must be compatible with assistive technologies and various user agents.
For most organizations, target WCAG 2.2 Level AA. If you are currently aligned with WCAG 2.1 AA, the additional work to meet 2.2 is incremental and valuable.
Focus Appearance (Minimum): Improved visibility and size of keyboard focus indicator so users do not lose their place.
Focus Not Obscured (Minimum): Focus indicators should not be hidden by sticky headers, banners, or other overlays.
Target Size (Minimum): Tappable or clickable targets must be large enough and spaced to avoid accidental activation on touch devices.
Dragging Movements: Tasks requiring drag-and-drop must have an alternative input method like click or keyboard.
Accessible Authentication (Minimum): Avoid cognitive function tests (like remembering a password) without alternatives; support copy-and-paste and password managers.
Redundant Entry: Do not ask users to re-enter information that you can auto-populate or reuse.
Consistent Help: Provide help options consistently in the same relative location across pages where support is offered.
Note: WCAG 2.2 also deprecates 4.1.1 Parsing, which was a success criterion in prior versions. While not required for 2.2 conformance, clean, valid HTML remains a strong best practice for interoperability and robustness.
Accessibility Is a Team Sport
Accessibility is not a single engineer sprinting alone. It is a cross-functional program that integrates into everything you do:
Product managers define accessible requirements and acceptance criteria.
UX and UI designers make accessible patterns and components.
Content designers and marketers write clear, descriptive content.
Developers implement semantic HTML, ARIA where necessary, and keyboard interactions.
QA engineers execute automated and manual checks.
Legal and compliance teams set targets, document conformance, and track risk.
Customer support relays user feedback and issues.
The earlier you integrate accessibility, the cheaper and easier it is. Retrofitting after launch is more expensive and risks brand damage.
The Roadmap: How To Make Your Website Accessible
Here is a structured, repeatable roadmap that works for new builds and remediation projects.
Step 1: Establish Scope, Standards, and Success
Choose your standard: WCAG 2.2 Level AA.
Define the scope: all public-facing content and apps, authenticated user flows, and downloadable assets like PDFs.
Set measurable goals: for example, reduce automated issues by 90% and resolve critical blockers before launch.
Define roles: who owns design, dev, QA, compliance, and content.
Create a risk and triage model: prioritize issues that block core tasks (e.g., checkout, login, navigation) over cosmetic items.
Step 2: Baseline Audit and Quick Wins
Use automated tools to reveal common issues, then verify and prioritize with manual testing:
Tools to start with: browser devtools, axe, WAVE, Lighthouse, Accessibility Insights, ARC Toolkit, and Pa11y. Start with one or two and expand.
Fix low-hanging fruit:
Add descriptive page titles and unique H1s.
Ensure landmark regions exist: header, nav, main, aside, footer.
Provide alt text for meaningful images; mark decorative images as presentational.
Improve color contrast to meet minimum ratios.
Make keyboard focus visible and logical; remove focus traps.
Add a skip link to bypass repeated navigation.
Step 3: Design for Accessibility
Bring accessibility into your design system and component library.
Color and contrast:
Body text: at least 4.5:1 contrast ratio against its background.
Large text (18.66px and bold or 24px regular): at least 3:1.
UI components and icons: non-text contrast of at least 3:1.
Do not rely on color alone to convey meaning: pair color with text, patterns, or icons.
Typography and spacing:
Support user zoom and responsive reflow without horizontal scrolling up to 400% zoom.
Line height of about 1.5; letter spacing of about 0.12em; word spacing around 0.16em; paragraph spacing 1.5 times the line height.
Avoid text in all caps for long passages; ensure readable font sizes and adequate line length.
Focus and states:
Make the focus indicator clearly visible with a strong contrast and sufficient size. Ensure it is not obscured by fixed elements.
Design states for hover, focus, active, disabled, and invalid inputs.
Motion and animation:
Avoid auto-play and excessive motion. Respect prefers-reduced-motion and provide reduced alternatives.
Target size and touch:
Ensure sufficiently large touch targets with adequate spacing.
Help and error prevention:
Keep help links consistently positioned across pages.
Prevent user errors with inline hints, masks, and clear instructions.
Step 4: Content That Communicates Clearly
Headings and structure:
Use one H1 per page and a hierarchical structure for H2, H3, and so on.
Break content into sections with meaningful headings and lists.
Alternative text:
Provide concise, descriptive alt for images that convey information.
Use empty alt (alt='') for decorative images.
For complex images like charts, provide a longer description in nearby text or via a link.
Link text:
Use meaningful link text: avoid 'click here'. Make the link itself describe the destination.
For repeated links, add context with visually hidden text if needed.
Media captions and transcripts:
Provide captions for videos and transcripts for audio-only media.
Add audio descriptions for essential visual information not conveyed by audio.
Plain language:
Aim for clear, concise sentences and familiar vocabulary.
Explain acronyms on first use, and avoid jargon where possible.
Provide summaries for complex content.
Language attributes:
Set the page language (e.g., html lang='en'). For passages in other languages, add lang attributes to the element.
Step 5: Develop with Semantic HTML and Progressive Enhancement
Semantic elements:
Use header, nav, main, section, article, aside, footer.
Use button elements for actions and anchor elements for navigation.
ARIA wisely:
Prefer native HTML semantics over ARIA. Use ARIA to enhance, not replace, semantics.
Announce dynamic content with aria-live only when necessary and at the right politeness level.
Keyboard support:
Ensure all interactive components are operable by keyboard: Tab, Shift+Tab, Enter, Space, Escape, and arrow keys where appropriate.
Implement roving tabindex patterns for menus, tabs, and carousels.
Focus management:
Move focus to new content when appropriate, such as on route changes, modal open, or SPA updates.
Restore focus logically when dialogs close or on page transitions.
Forms:
Associate label elements with inputs using for and id.
Use aria-describedby to bind hint and error messages to inputs.
Expose required and invalid states using native attributes and aria-invalid.
Provide helpful error prevention and error messages.
Media:
Use accessible media players that support captions, transcripts, audio descriptions, and keyboard navigation.
Performance and resilience:
Progressive enhancement ensures the core experience works even if JavaScript fails or assistive technology behaves differently.
Step 6: Testing and Verification
Accessibility testing combines automated scanning and manual verification.
Automated checks:
Run axe or Accessibility Insights in devtools for each template type.
Include a scanner in CI to prevent regressions.
Manual keyboard testing:
Navigate via keyboard alone. Check tab order, focus visibility, and key interactions.
Verify modals, menus, tabs, and carousels all work without a mouse.
Screen reader checks:
Windows: NVDA or JAWS with Chrome or Firefox.
Mac: VoiceOver with Safari.
Android: TalkBack; iOS: VoiceOver on iPhone.
Verify headings, landmarks, link text, form field labels, error messages, and dynamic updates.
Zoom and reflow:
Test at up to 400% zoom. Ensure no horizontal scrolling for main content and that functionality is preserved.
Motion and color:
Test with prefers-reduced-motion enabled.
Verify color contrast and color independence.
Real users:
When possible, include users with disabilities in usability testing.
Step 7: Launch and Maintain
Accessibility statement:
Publish a page describing your commitment, scope, known issues, and a way to report problems.
Feedback loop:
Provide an accessible feedback form or email address and process feedback promptly.
Continuous monitoring:
Schedule periodic scans, regression testing, and training for new team members.
Governance:
Include accessibility in design and code review checklists, onboarding, and performance metrics.
Practical How-To: Common Patterns and Code Examples
Below are small, focused examples you can adapt. Note: these code blocks use single quotes to simplify copying into various tools and keep the focus on the pattern.
Skip Link to Bypass Repeated Content
A skip link lets keyboard users jump directly to the main content and avoid tabbing through repeated navigation.
<aclass='skip-link'href='#main'>Skip to main content</a><header> ... </header><nav> ... </nav><mainid='main'><h1>Page title</h1><p>Page content...</p></main>
Use a button for actions that change application state (e.g., open modal, submit form).
Use a link (anchor) for navigation to a new resource or route.
<!-- Correct: Action is a button --><buttontype='button'id='open-modal'>Open modal</button><!-- Correct: Navigation is a link --><ahref='/pricing'>See pricing</a>
Navigation with Landmarks and aria-current
<headerrole='banner'><aclass='skip-link'href='#main'>Skip to main content</a><navaria-label='Primary'><ul><li><ahref='/'aria-current='page'>Home</a></li><li><ahref='/features'>Features</a></li><li><ahref='/pricing'>Pricing</a></li><li><ahref='/contact'>Contact</a></li></ul></nav></header><mainid='main'role='main'><h1>Welcome</h1></main>
Accessible Forms: Labels, Hints, and Errors
<formnovalidate><divclass='field'><labelfor='email'>Email address</label><divid='email-hint'class='hint'>We will never share your email.</div><inputtype='email'id='email'name='email'aria-describedby='email-hint email-error'required/><divid='email-error'class='error'role='alert'hidden> Please enter a valid email address.
</div></div><buttontype='submit'>Sign up</button></form>
Use native input types to support mobile keyboards and validation.
Keep error messages specific and helpful.
Mark required fields with the required attribute and explain any special formatting.
Modal Dialog Pattern (Simplified)
<buttontype='button'id='launch'>Open dialog</button><divclass='overlay'id='overlay'hidden></div><divclass='dialog'id='dialog'role='dialog'aria-modal='true'aria-labelledby='dialog-title'hidden><h2id='dialog-title'>Subscribe</h2><p>Get updates via email.</p><form><labelfor='sub-email'>Email</label><inputid='sub-email'type='email'required/><divclass='actions'><buttontype='submit'>Subscribe</button><buttontype='button'id='close'>Cancel</button></div></form></div>
<divclass='accordion'><h3><buttonaria-expanded='false'class='accordion-trigger'aria-controls='sect1'id='accordion1'> Shipping details
</button></h3><divid='sect1'role='region'aria-labelledby='accordion1'hidden><p>Ships within 3 business days.</p></div></div>
eslint-plugin-jsx-a11y, stylelint-a11y, jest-axe for unit tests.
Browser devtools:
Use accessibility trees, contrast checkers, and ARIA inspectors.
Screen readers:
NVDA and JAWS on Windows, VoiceOver on macOS and iOS, TalkBack on Android.
Checklists and scripts:
Prepare a standard test script covering keyboard navigation, screen reader headings and landmarks, forms, media, zoom/reflow, and motion.
Example manual test script for a given page:
Load the page. Verify unique, descriptive page title and H1.
Press Tab from the address bar. Confirm a visible skip link appears and works.
Navigate through primary navigation; ensure dropdowns open by keyboard and close with Escape; arrow keys move within menus.
Enter the main content and verify headings are structured logically; no skipped levels without need.
Activate all buttons and links; verify focus indicator remains visible and not obscured.
Interact with forms: labels announced, hints and errors bound via aria-describedby, required states conveyed.
Open modals and overlays: focus is trapped, screen readers announce dialog title, Escape closes, focus returns to trigger.
Play media: captions available and toggleable; keyboard control works; no autoplay with sound.
Zoom to 200% and 400%: verify content reflows without horizontal scrolling for main content and that all functionality remains usable.
Turn on prefers-reduced-motion: verify animations are reduced or disabled.
Governance: Bake Accessibility Into Your Process
Design system tokens and components:
Enforce color contrast via design tokens and brand guidelines.
Provide accessible components for buttons, inputs, forms, modals, tabs, accordions, menus, tooltips, toasts, and carousels.
Definition of done:
Include accessibility acceptance criteria for every user story.
Code reviews:
Add accessibility checks to pull request templates.
CI pipelines:
Run automated accessibility tests on pull requests and main.
Documentation:
Maintain a living accessibility guide and change log.
Training:
Provide recurring training for designers, developers, QA, content creators, and support.
Procurement:
Ask vendors for VPATs (Voluntary Product Accessibility Templates) and test third-party components.
Accessibility Statement and Conformance Claims
Publish an accessibility statement that:
References WCAG 2.2 Level AA as your target.
Summarizes your accessibility efforts and testing methodology.
Lists known limitations and timelines for fixes.
Provides contact information for reporting issues and requesting accessible alternatives.
Avoid overstating compliance. Be transparent and responsive.
Common Pitfalls and How to Avoid Them
Overusing ARIA:
ARIA is not a repair kit for broken semantics. Use it to enhance native elements, not replace them.
Using divs for everything:
Replace generic divs with semantic elements and correct controls.
Hiding focus:
Designers sometimes remove focus outlines for aesthetic reasons. Always provide a strong visible focus.
Color-only cues:
Ensure warnings and states do not rely solely on color.
Placeholder as label:
Placeholder text disappears on typing and is not a label. Always provide labels.
Infinite scroll without landmarks:
Provide a way to jump to new content, and make load-more buttons accessible.
CAPTCHAs without alternatives:
Provide accessible alternatives such as non-visual captchas or logic tasks, and allow audio options.
Third-party widgets:
Test them thoroughly; if inaccessible, seek alternatives or work with the vendor on fixes.
Accessibility and SEO: Stronger Together
Semantic headings help both screen readers and search engines understand your content structure.
Alt text provides meaningful context for images and can surface in image search.
Descriptive link text makes your internal linking strategy clearer to users and crawlers.
Fast, resilient sites rank better and perform better for everyone.
Measuring ROI of Accessibility
Conversion impact:
Improved forms and error prevention often increase completion rates.
Support cost reductions:
Clearer content and predictable interactions reduce customer support volume.
Risk reduction:
Avoid the cost and disruption of legal action and settlements.
Talent and reputation:
Accessible practices attract diverse talent and customers.
While direct ROI varies by organization, the combined benefits are consistently positive.
The Legal Landscape at a Glance (Not Legal Advice)
United States:
ADA Title III applies to places of public accommodation; many courts and the Department of Justice reference WCAG Level AA.
Section 508 requires federal agencies and those doing business with them to meet accessibility standards aligned to WCAG.
European Union:
The Web Accessibility Directive and EN 301 549 standards apply to public sector sites and certain services.
The European Accessibility Act expands requirements to many consumer-facing products and services with enforcement ramping up.
Other regions:
Many countries adopt WCAG-based laws or policies. Check local regulations and consult legal counsel.
Ongoing Maintenance and Culture
Accessibility is not a one-time project. It is an ongoing practice.
Integrate into sprints and roadmaps.
Automate checks in CI but keep manual testing in every release cycle.
Update your design system and docs as brand and components evolve.
Share wins and learnings. Celebrate improvements and user feedback.
Quick-Start Checklist: WCAG AA Essentials
Structure and navigation:
Unique page title; one H1; heading hierarchy.
Landmarks: header, nav, main, footer; skip link.
Logical tab order; visible, unobscured focus.
Visuals and contrast:
Text meets 4.5:1 (or 3:1 for large text); non-text contrast 3:1.
States distinguishable beyond color alone.
Content and language:
Clear, concise copy; explain acronyms; language set with lang attribute.
Links and buttons:
Descriptive link text; correct element choice; aria-current on active nav.
Forms and errors:
Labels associated; hints and errors bound via aria-describedby; required and invalid states conveyed.
Prevent redundant entry; support autofill and password managers.
Media:
Captions and transcripts provided; no autoplay with sound; accessible controls.
Motion and gestures:
Respect prefers-reduced-motion; provide alternatives to drag-and-drop.
Touch targets:
Targets sized and spaced to avoid accidental activation.
SPA behaviors:
Focus management on route changes; page title updates; dynamic content announced as needed.
Testing:
Automated scans and manual keyboard and screen reader checks each release.
Call to Action: Make Accessibility Your Competitive Advantage
Ready to take the next step?
Book an accessibility discovery call to review your current website and prioritize a remediation plan.
Request a quick baseline audit with actionable recommendations.
Ask for an accessibility starter kit: checklists, code patterns, and a CI setup guide.
Investing in accessibility pays off in better experiences, stronger SEO, lower risk, and a brand that truly welcomes everyone.
Frequently Asked Questions
What is WCAG and which level should I meet?
WCAG is a set of testable guidelines for making web content accessible. Most organizations target WCAG 2.2 Level AA.
Is accessibility legally required?
Many jurisdictions require accessibility for certain sectors, and numerous lawsuits enforce it for consumer sites. Consult legal counsel for your specific obligations, but WCAG AA is a common benchmark.
What changed in WCAG 2.2 compared to 2.1?
WCAG 2.2 adds new success criteria that improve focus visibility, target size, dragging alternatives, authentication, redundant entry, and consistent help. It also deprecates the parsing criterion from earlier versions.
How long does it take to make a site accessible?
It depends on scope and complexity. You can implement many quick wins within days, but full conformance across a large site may take weeks to months. Integrate accessibility into your normal release cadence.
Do I need AAA compliance?
AAA is an aspirational level. Most policies and legal references require AA. You can adopt select AAA criteria that add value for your audience.
What are the best free tools to get started?
axe browser extension, WAVE, Lighthouse, Accessibility Insights, and ARC Toolkit. Pair tools with manual keyboard and screen reader testing for a complete picture.
Are single-page applications harder to make accessible?
SPAs require careful focus management and dynamic announcements, but with the right patterns and testing, they can be as accessible as traditional sites.
How do I make PDFs accessible?
Author with proper styles and structure, set the reading order, add alt text, and verify tags. When possible, offer accessible HTML versions of the same content.
What about third-party widgets and embedded content?
Test them like your own code. Ask vendors for a VPAT, and if they fail critical criteria, seek alternatives or custom integrations.
How does accessibility improve SEO?
Semantic structure, alt text, descriptive links, and fast, stable pages benefit both accessibility and search engines. Many improvements lift both metrics.
What if I cannot fix everything at once?
Prioritize core tasks and critical blockers first. Publish an accessibility statement with your plan and timelines. Iterate toward full conformance.
Who should own accessibility in my company?
Shared ownership works best: product, design, engineering, QA, and compliance. Appoint a program lead to coordinate and measure progress.
Final Thoughts
Accessibility is not just about compliance; it is about craftsmanship, empathy, and good business. A site that works for more people in more contexts is a better site, period. WCAG 2.2 gives you specific, testable criteria to reach that goal. Use this guide to build your plan, implement accessible patterns, test thoroughly, and keep improving.
If you start today with the quick wins and a simple test script, you will feel the difference immediately: clearer content, smoother navigation, fewer support tickets, and a wider audience that can use your product with confidence.
Make accessibility part of your culture. Your users, your team, and your business will thank you.