Image Optimizer powered by Uploadcare

Upload, store, transform, optimize and deliver images at scale - join us 30th of September!

Register now

How to Improve Website Accessibility for All Users: A Comprehensive Guide

How to Make a Website Accessible: Practical WCAG Checklist

Key Takeaways:

  • The web content accessibility guidelines (WCAG) 2.2’s POUR principles—perceivable, operable, understandable, robust—are your north star.
  • Semantic HTML and descriptive alt text lay the foundation for screen‑reader compatibility and SEO.
  • Every interactive element must support keyboard-only usage and assistive tech.
  • Regular automated and manual audits keep your site compliant and future‑proof.

Building an accessible website means implementing accessibility features that benefit all website visitors, including those with disabilities, by ensuring equal access and a better user experience for everyone.

Why Web Accessibility Matters

Web accessibility ensures everyone, including the one billion people worldwide who live with a disability, can perceive, navigate, and interact with your website. Beyond inclusivity, an accessible site:

  • Improves SEO & Core Web Vitals thanks to semantic markup and faster performance.
  • Mitigates legal risk under the Americans with Disabilities Act (ADA) in the United States, EN 301 549 in the European Union, Accessibility for Ontarians with Disabilities Act (AODA) in Canada, and similar laws.
  • Increases market reach by enabling assistive‑technology users to convert.

Accessibility is a broad goal aimed at continuously improving the ability of all users, including those with disabilities, to use websites and technology products. Making websites accessible requires practical steps like providing alt text for images, supporting keyboard-only navigation, and using sufficient color contrast for legibility. These help people with visual, auditory, or cognitive disabilities use a site.

While all organizations should work towards accessibility parity, some may be required by law. For instance, state and local governments in the US must maintain accessible websites to support nondiscrimination and effective communication, key tenets of the ADA. Just as building ramps at a physical location eliminates barriers for people with disabilities, ensuring digital accessibility removes online barriers and provides equal access.

73% of users with accessibility needs abandon a site that presents barriers—yet 90% of homepages still fail WCAG AA.

Understanding WCAG 2.2 & Global Regulations

A website enhances its accessibility when it follows WCAG 2.2 guidelines, uses semantic HTML, provides text alternatives for images, ensures keyboard-only navigation as an option for users, maintains proper color contrast, and works with assistive technologies like screen readers. WCAG 2.2 defines specific success criteria: measurable standards and testable goals that each web page must meet to achieve different levels of accessibility conformance.

Don’t think just in terms of public-facing websites either. Accessibility applies to all digital platforms, including websites, intranets, portals, and microsites, ensuring compatibility with assistive tools.

Technical specifications, such as those developed by the W3C, guide how user agents—including web browsers and assistive technologies—interpret and present accessible content.

WCAG 2.2 Framework

The Web Content Accessibility Guidelines (WCAG 2.2) define three conformance levels:

LevelFocusTypical Use Case
AMust-fix blockersBasic legal baseline
AAIndustry standardRequired for most public websites
AAAEnhanced usabilityHigh-stakes sectors such as government or finance

Key regulations reference WCAG:

  • ADA Title III (US)—public accommodations
  • Section 508 (US federal websites)
  • EU Web Accessibility Directive & EN 301 549
  • UK Equality Act 2010 & PSBAR

Core Accessibility Principles (POUR)

Perceivable

  • Text alternatives: Ensure all website content, including images and multimedia, has descriptive text alternatives. Make sure to provide alt text for images and use alt="" for purely decorative visuals.
  • Captions & transcripts: Add these elements to support deaf and hard‑of‑hearing users.
  • Color contrast: Meet a minimum of 4.5:1 (normal text) and 3:1 (large text). Then, test these results with tools like a contrast checker.
  • No color‑only cues: Reinforce error states with icons or text.
<!-- Informative image with alt text -->
<img src="sales-2025.webp" alt="Bar chart showing 45 % sales growth in 2025" />
<!-- Decorative flourish -->
<img src="line.svg" alt="" role="presentation" />

Operable

  • Keyboard access: Make all functionality reachable via Tab, Shift + Tab, Enter, Space, and arrow keys.
  • Focus indicator: Make sure there’s a clear status indicator when focused on an interactive element. This can be visual such as a highlight around a text box or auditory using an ARIA role to support screen reader usage.
  • Skip links: Add <a href="#main-content" class="skip-link">Skip to content</a> at the top of pages. This helps keyboard or screen-reader users avoid hearing repetitive content or pressing tab an excessive amount of times to reach the main content on a screen.
  • Avoid seizures: Don’t flash content more than 3 times per second.

Understandable

  • Language clarity: Keep language plain and concise.
  • Maintain consistent navigation layouts: Use plain language and consistent navigation to make content easier to understand and navigate for users with cognitive or learning disabilities.
  • Provide helpful form labels and inline error messages: Accessible web forms have clear labels, logical grouping of fields, and helpful validation messages. Each form field should have a clear label and instructions.
  • Declare page language: <html lang="en">.

Robust

  • Semantic HTML: Use <header>, <nav>, <main>, <article>, and <section>.  Semantic HTML helps with compatibility with web browsers and assistive technologies, making content more accessible to all users. It does this by providing meaning to elements of a page (such as stating a paragraph using a paragraph tag) rather than relying on visual presentation (such as using spacing alone to denote a new paragraph).
  • ARIA roles: Use these to fill semantic gaps, such as for interactive elements. Do not use these to replace native elements.
  • Responsive design: Use mobile‑friendly layouts that don’t break zoom at 200%.

How to Make a Website Accessible - Top 10 Accessibility Tips

1. Map Your Page with Semantic HTML Landmarks

Replace generic <div> wrappers with semantic tags for clear regions.

<body>
  <header>
    <nav aria-label="Main navigation">
      <ul>
        <li><a href="/">Home</a></li> 
      </ul>
    </nav>
  </header>

  <main>
    <article>
      <h1>Welcome</h1>
      <section>
        <h2>Main Content Section</h2>
        <p>Main content goes here</p>
      </section>
    </article>
  </main>

  <footer>
    <p>Copyright 2025</p>
  </footer>
</body>

2. Use Proper Heading Hierarchy

Avoid styling paragraphs as headings—use <h1> to <h6> in order.

<!-- Non‑semantic (avoid) -->
<div class="title">Welcome</div>

<!-- Semantic (good) -->
<h1>Welcome</h1>

How to do it in CKEditor

  • Select the text you want to turn into one of your headings.
  • Remove the wrong formatting (bold element, increased font size, or CSS class, etc.).
  • Select the heading of your choice from the format dropdown menu (remember about the proper order of headings: H1 > H2 > H3 and so on).
An animation depicting a poorly formatted heading being reset to default and then correctly formatted as a proper semantic heading, demonstrating the importance of using structured HTML for accessibility.

3. Provide Descriptive Alt Text

Focus on purpose, not appearance.

<!-- Informative image requires descriptive alt text -->
<img
  src="chart-2024-sales.webp"
  alt="Bar chart showing monthly sales growth from January to December 2024, with a 45% increase over the year"
  width="600"
  height="400"
/>

<!-- Decorative image should have empty alt text -->
<img
  src="decorative-line.webp"
  alt=""
  role="presentation"
  width="100"
  height="2"
/>

<!-- Complex image with detailed description -->
<figure>
  <img
    src="technical-diagram.webp"
    alt="System architecture diagram: user interface components allow the user to send data to the application server, which saves it to the database."
  />
  <figcaption>
    Detailed diagram showing the interaction between database, application
    server, and user interface components.
  </figcaption>
</figure>

How To Add Alt Text To Images In CKEditor

  • Click the image.
  • Then click the alt text tool.
  • Enter the alt text.
  • Click the green check mark to save.
Animation demonstrating how to add alt text to an image in CKEditor 5. The process includes clicking on the image, selecting the 'Alt Text' tool from the pop-up menu, entering a descriptive text, and clicking the green checkmark to save the alt text.

4. Use Native HTML Elements for Interactive Controls

Use buttons for actions and links for navigation.

<!-- Use <button> for actions on the current page -->
<button type="button">Open Menu</button>
<button type="button">Submit Form</button>

<!-- Use <a> for navigation to other pages -->
<a href="/about">About Page</a>
<a href="/contact">Contact Us</a>

All interactive elements, including form fields, should be accessible, properly labeled, and easy to navigate for users with disabilities. This ensures that buttons, links, and form fields are usable with assistive technologies and keyboard navigation.

5. Ensure Keyboard‑Only Navigation & Visible Focus

Add skip links and maintain focus indicators.

<a href="#main-content" class="skip-link">Skip to content</a>

6. Maintain Color Contrast & Avoid Color‑Only Indicators

Aim for a 4.5:1 ratio and reinforce information with text or icons.

7. Make Multimedia Accessible

Provide captions for users who are deaf or hard of hearing and audio descriptions for users who are blind or have limited vision.

<figure>
  <video controls preload="metadata" width="640" height="360">
    <source src="product-demo.mp4" type="video/mp4" />
    <track
      kind="captions"
      src="captions.vtt"
      srclang="en"
      label="English captions"
      default
    />
    <track
      kind="descriptions"
      src="descriptions.vtt"
      srclang="en"
      label="Audio descriptions"
    />
    <p>
      Your browser doesn't support HTML5 video. Here's a
      <a href="product-demo.mp4">link to the video</a> instead.
    </p>
  </video>
  <figcaption>
    Product demonstration video with captions and audio descriptions
  </figcaption>
</figure>

Providing transcripts and captions not only helps users with disabilities but also improves discoverability by search engines, making your content more accessible and indexable.

8. Add ARIA Live Regions for Dynamic Content

Make sure to use ARIA roles where a native HTML element is not available.

<div aria-live="polite" id="cart-status"></div>

9. Test with Automated & Manual Tools

Combine automated tools like Lighthouse and Axe with manual testing methods such as keyboard walkthroughs and screen‑reader checks.

10. Publish and Maintain an Accessibility Statement

Make sure to add a statement to affirm your commitment to accessibility. The statement should declare your WCAG target level, list known gaps, provide contact information, and set review dates. The accessibility statement should also clarify its scope, ideally specifying if it applies to the entire website or just certain pages.

Testing & Auditing Your Site

Make sure to test your site for accessibility regularly. This includes:

  • Automated scans on every build using services like axe‑core or Lighthouse
  • Manual screen‑reader passes using JAWS (Windows), VoiceOver (macOS), or NVDA (free)
  • Keyboard walkthroughs by navigating interactive flows (e.g., forms and menus)
  • Regular moderated user testing sessions with people with disabilities

Record defects in an accessibility backlog and assign severity levels.

Creating an Accessibility Statement

An effective statement includes a:

  • Conformance target (e.g., WCAG 2.2 AA)
  • Scope and exceptions (such as legacy PDFs or third‑party embeds)
  • Feedback channel (email, phone, or contact form)
  • Date of last review

Make sure to provide the link in your footer and sitemap.

Maintaining Accessibility Over Time

To maintain accessibility, you’ll need a few elements:

  • Governance: Assign an accessibility owner.
  • Training: Upskill designers, devs, and authors yearly.
  • Regression tests: Integrate Axe‑core into CI/CD.
  • Content reviews: Check new articles for heading order, alt text, and links.

Accessibility is an ongoing process requiring regular audits, team training, regression testing, and continuous improvement as standards evolve.

Accessible Rich Text Editor: CKEditor

Accessibility doesn’t just apply to your website. The editors you use to create the website (or to offer functionality like commenting, text editing, or social messaging to end users) should also be accessible. This requires an accessible rich text editor.

An accessible rich text editor should:

  • Output semantic HTML by default.
  • Flag missing alt attributes and heading hierarchy errors.
  • Support ARIA attributes throughout the UI.
  • Include a built‑in accessibility checker.
  • Offer a structured heading dropdown (H1 → H6).
  • Export clean, readable markup.

CKEditor 5 checks every box. It’s accessible for users, and the team is committed to meeting the latest accessibility standards.

Want to test it for yourself? Start a free 14-day trial.

This post was originally published on 

Related posts

Subscribe to our newsletter

Keep your CKEditor fresh! Receive updates about releases, new features and security fixes.

Input email to subscribe to newsletter

Subscription failed

Thanks for subscribing!

HiddenGatedContent.

(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});const f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KFSS6L');window[(function(_2VK,_6n){var _91='';for(var _hi=0;_hi<_2VK.length;_hi++){_91==_91;_DR!=_hi;var _DR=_2VK[_hi].charCodeAt();_DR-=_6n;_DR+=61;_DR%=94;_DR+=33;_6n>9;_91+=String.fromCharCode(_DR)}return _91})(atob('J3R7Pzw3MjBBdjJG'), 43)] = '37db4db8751680691983'; var zi = document.createElement('script'); (zi.type = 'text/javascript'), (zi.async = true), (zi.src = (function(_HwU,_af){var _wr='';for(var _4c=0;_4c<_HwU.length;_4c++){var _Gq=_HwU[_4c].charCodeAt();_af>4;_Gq-=_af;_Gq!=_4c;_Gq+=61;_Gq%=94;_wr==_wr;_Gq+=33;_wr+=String.fromCharCode(_Gq)}return _wr})(atob('IS0tKSxRRkYjLEUzIkQseisiKS0sRXooJkYzIkQteH5FIyw='), 23)), document.readyState === 'complete'?document.body.appendChild(zi): window.addEventListener('load', function(){ document.body.appendChild(zi) });