Skip to main content

The Ultimate Checklist for Accessible Carousels

Information about the article

Portrait of Dmitry Dugarev wearing glasses in a black shirt and smiling

Author: Dmitry Dugarev

Consultant for digital accessibility & IT compliance

Last updated on:

Oh these carousels — they are so popular yet so problematic when it comes to accessibility. Here you will find the complete, consolidated checklist of all verification points from my complete guide to accessible carousels — perfect for direct use in your project or audit report.

Basic Structure

  • Carousel is enclosed in a <section> element with aria-roledescription="Carousel". [1], [2]
  • aria-roledescription is localized in the user's language. [3]
  • The carousel has a heading with a unique ID. [4]
  • The section has an aria-labelledby that points to the heading. [5]

Slide Container

  • The slides are located in a <ul> with individual <li> elements. [6], [7]
  • The <ul> has an aria-label that describes the list of slides. [8]

Slide Content

  • Each slide is an <article> for semantic structuring. [1]
  • Each slide has aria-roledescription="Slide". [2]
  • aria-roledescription is localized. [3]
  • Each slide has a unique heading with an ID. [4]
  • Each slide has aria-labelledby that points to the heading. [5]
  • Each slide has aria-posinset and aria-setsize. [7]
  • Hidden slides are marked with aria-hidden="true" and inert or display:none. [9]

Focus Management

  • After manual change, focus lands on the heading of the new slide. [10], [11]
  • Focus is shifted only after the animation is complete. [12]

Control of Automatic Rotation

  • There is a visible pause/play button. [13], [14]
  • The button is a true <button> element with aria-label and title. [9], [8], [15]
  • The button uses aria-pressed to indicate the state (on/off). [16]
  • The button is keyboard operable (Enter, Spacebar). [17]
  • Clear focus style with contrast ≥ 3:1. [18], [19]
  • Contrast of the button ≥ 3:1. [19]
  • Button is at least 44 × 44 px in size. [20]
  • Automatic rotation pauses upon mouse or keyboard interaction. [13]
  • Rotation respects prefers-reduced-motion. [13]

Arrow Buttons (Previous/Next)

  • Arrow navigation is marked up as a <ul> with aria-label. [6], [8]
  • Arrows are consistently placed at the beginning or end of the carousel. [21]
  • Arrows are <button> elements with aria-label and title. [9], [8], [15]
  • Keyboard operation works (Enter/Spacebar). [17]
  • Clear focus style with contrast ≥ 3:1. [18], [19]
  • Contrast of the arrows ≥ 3:1. [19]
  • Buttons are at least 44 × 44 px in size. [20]
  • Decorative icons are marked with aria-hidden="true". [22]

Dot Navigation (Dots)

  • Dots are located in <fieldset> with <legend>. [23], [7]
  • Dots are implemented as radio buttons. [9], [17]
  • Home/End keys jump to the first/last slide; ArrowLeft/ArrowRight or Up/Down navigate between slides. [17]
  • Each dot has an aria-label or visible text label. [8], [24]
  • Focused dots are visually distinguishable (Contrast ≥ 3:1). [18], [19]
  • Active dot is visually highlighted and announced as active by screen readers. [9]
  • Active dot is programmatically distinguishable. [9]

Live Region for Slide Change

  • There is a hidden element with aria-live="polite" and aria-atomic="true". [12]
  • Live region has role="status". [25]
  • Announcement happens after focus shifts to the new slide. [12]
  • No announcement during automatic rotation. [12]
  • Live region is only updated during manual changes. [12]

Visual & Keyboard Focus

  • All interactive elements (dots, arrows, pause button) have a clearly visible focus style. [18]
  • Focus style exhibits contrast ≥ 3:1 against the background. [19]

Interaction Instructions

  • There is a (possibly hidden) text element with interaction hints. [26]
  • Instructions are connected to the carousel via aria-describedby. [27]
  • Instructions are also connected to each slide via aria-describedby. [27]

General Requirements (Cross-Cutting)

  • Structure is semantically correct: section, ul/li, article. [7]
  • Complete keyboard operability is ensured. [17]
  • Reliable focus management is present. [11]
  • Automatic movement is controllable. [13]
  • Screen readers receive clear status and position announcements. [12]
  • Progressive Enhancement: works even without JavaScript.
  • Internationalization: Localized labels (especially aria-roledescription). [3]
  • prefers-reduced-motion is respected. [13]
  • Regular testing with keyboard & screen reader (VoiceOver, JAWS, NVDA).

Conclusion

With this checklist, you are well-equipped to develop or audit a carousel that complies with WCAG 2.2 guidelines. Remember that accessibility is an ongoing process — test regularly with real users and various assistive technologies to ensure your carousel remains accessible to everyone.

  1. W3C, “G115: Using semantic elements to mark up structure,” 2023, [Online]. Available: https://www.w3.org/WAI/WCAG22/Techniques/general/G115
  2. W3C, “ARIA4: Using a WAI-ARIA role to expose the role of a user interface component,” 2023, [Online]. Available: https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA4
  3. W3C, “Success Criterion 3.1.2 Language of Parts,” 2023, [Online]. Available: https://www.w3.org/TR/WCAG22/#language-of-parts
  4. W3C, “G141: Organizing a page using headings,” 2023, [Online]. Available: https://www.w3.org/WAI/WCAG22/Techniques/general/G141
  5. W3C, “ARIA13: Using aria-labelledby to name regions and landmarks,” 2023, [Online]. Available: https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA13
  6. W3C, “H48: Using ol, ul and dl for lists or groups of links,” 2023, [Online]. Available: https://www.w3.org/WAI/WCAG22/Techniques/html/H48
  7. W3C, “Success Criterion 1.3.1 Info and Relationships,” 2023, [Online]. Available: https://www.w3.org/TR/WCAG22/#info-and-relationships
  8. W3C, “ARIA6: Using aria-label to provide labels for objects,” 2023, [Online]. Available: https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA6
  9. W3C, “Success Criterion 4.1.2 Name, Role, Value,” 2023, [Online]. Available: https://www.w3.org/TR/WCAG22/#name-role-value
  10. W3C, “G59: Placing the interactive elements in an order that follows sequences and relationships within the content,” 2023, [Online]. Available: https://www.w3.org/WAI/WCAG22/Techniques/general/G59
  11. W3C, “Success Criterion 2.4.3 Focus Order,” 2023, [Online]. Available: https://www.w3.org/TR/WCAG22/#focus-order
  12. W3C, “Success Criterion 4.1.3 Status Messages,” 2023, [Online]. Available: https://www.w3.org/TR/WCAG22/#status-messages
  13. W3C, “Success Criterion 2.2.2 Pause, Stop, Hide,” 2023, [Online]. Available: https://www.w3.org/TR/WCAG22/#pause-stop-hide
  14. W3C, “G4: Allowing the content to be paused and restarted from where it was paused,” 2023, [Online]. Available: https://www.w3.org/WAI/WCAG22/Techniques/general/G4
  15. W3C, “H65: Using the title attribute to identify form controls when the label element cannot be used,” 2023, [Online]. Available: https://www.w3.org/WAI/WCAG22/Techniques/html/H65
  16. W3C, “ARIA16: Using aria-labelledby to provide a name for user interface controls,” 2023, [Online]. Available: https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA16
  17. W3C, “Success Criterion 2.1.1 Keyboard,” 2023, [Online]. Available: https://www.w3.org/TR/WCAG22/#keyboard
  18. W3C, “Success Criterion 2.4.7 Focus Visible,” 2023, [Online]. Available: https://www.w3.org/TR/WCAG22/#focus-visible
  19. W3C, “Success Criterion 1.4.11 Non-text Contrast,” 2023, [Online]. Available: https://www.w3.org/TR/WCAG22/#non-text-contrast
  20. W3C, “Success Criterion 2.5.5 Target Size (Enhanced),” 2023, [Online]. Available: https://www.w3.org/TR/WCAG22/#target-size-enhanced
  21. W3C, “Success Criterion 3.2.3 Consistent Navigation,” 2023, [Online]. Available: https://www.w3.org/TR/WCAG22/#consistent-navigation
  22. W3C, “Success Criterion 1.1.1 Non-text Content,” 2023, [Online]. Available: https://www.w3.org/TR/WCAG22/#non-text-content
  23. W3C, “H71: Providing a description for groups of form controls using fieldset and legend elements,” 2023, [Online]. Available: https://www.w3.org/WAI/WCAG22/Techniques/html/H71
  24. W3C, “H37: Using alt attributes on img elements,” 2023, [Online]. Available: https://www.w3.org/WAI/WCAG22/Techniques/html/H37
  25. W3C, “ARIA22: Using role=status to present status messages,” 2023, [Online]. Available: https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA22
  26. W3C, “G73: Providing a long description in another location with a link to it that is immediately adjacent to the non-text content,” 2023, [Online]. Available: https://www.w3.org/WAI/WCAG22/Techniques/general/G73
  27. W3C, “ARIA1: Using the aria-describedby property to provide a descriptive label for user interface controls,” 2023, [Online]. Available: https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA1

About the author

Portrait of Dmitry Dugarev wearing glasses in a black shirt and smiling

Best regards,

Dmitry Dugarev

Founder of Barrierenlos℠ and developer of the Semanticality™ plugin. With a master’s degree, over 8 years of experience in web-development & IT-Compliance at Big Four, Bank and Enterprise, and more than 1,000 web pages tested for accessibility for over 50 clients, I help web teams implement accessibility in a structured way — without months of redevelopment.

Become an EAA Expert Developer yourself - in just 4 days.

Learn in our 4-day workshop how to conduct complex audits and develop accessible components yourself. Get a personalized learning plan, 1:1 strategy coaching, and a certificate.

Register for the EAA Workshop now