Accessibility Weekly

Accessible Accordions



Amber Hinds

Equalize Digital

Amber Hinds is the CEO of Equalize Digital, Inc., a Certified B Corp specializing in WordPress accessibility, maker of the Accessibility Checker plugin, and lead organizer of the WordPress Accessibility Meetup and WP Accessibility Day conference.

Week 32

✋Raise your hand if you include accordions on almost every website you build.

Accordions are helpful for shortening long pages and allowing people to scan headings quickly, then expand them to get additional information. But if the accordions on your site are not built accessibly, then users of assistive technology may miss out on the information included in the accordions completely.

When it comes to FAQs, for example, content is almost exclusively presented in accordions. How frustrating would it be to visit an FAQ page and hear all the questions but not be able to access the answers?

Read on for more information on how to ensure your accordions don’t leave your users in the dark.

How to Tell if an Accordion is Accessible

There are two ways to tell if an accordion is accessible:

  1. Test it with your keyboard to ensure you can open and close the accordion without using a mouse.
  2. Listen to the accordion with a screen reader to ensure it conveys information about what it is and its opened or closed state to blind and visually impaired users.

Of the WordPress plugins out there, some fail on the first check, and their accordions cannot be used without a mouse. A more significant percentage work with a keyboard but are not appropriately labeled for screen readers, making them confusing or impossible to use without sight. Because of this, it’s essential to test accordions with a screen reader like VoiceOver or NVDA, not just test them with a keyboard.

Anatomy of Accessible Accordions

When you’re testing accordions for accessibility, here is what you want to see:

Proper heading and button markup

The label or text that controls the accordion opening and closing should be wrapped in a button tag within a heading tag of the correct heading level.

Using a heading is crucial because it allows screen reader users to jump to the accordion they’re most interested in and lays out the content meaningfully for both people and search engines.

ARIA on the button

The button should have an aria-expanded attribute on it to indicate if it is opened or closed and aria-controls that indicate what element the accordion button controls.

Here’s example code for an accordion heading:

<button aria-expanded="false" class="accordion-title" aria-controls="answer1" id="accordion1id">How do you make an accessible accordion? </button>

When the accordion is opened and closed, aria-expanded should change between true and false accordingly.

The aria-controls should have the id of the container made visible or hidden by the button.

ARIA on the content container

The container with the content for the accordion also needs ARIA added to it to help screen reader users know what it is. Adding role=”region” and an aria-labelledby attribute that links back to the button helps screen reader users to know when they’re entering the content container and connects it with the button.

Here’s an example of code that would go with the accordion heading above:

<div id="answer1" role="region" aria-labelledby="accordion1id" class="accordion-panel">
<p>Read this article and you’ll know how.</p>

Accessibility for sighted users

For people who can see, you’ll want to make sure that there are clear focus indicators and that everything in the accordion passes color contrast checks.

Also, don’t use accordions or turn on settings that automatically collapse accordions when a new one is opened. This can be a very disruptive experience for users as the page can visually scroll, or they may lose the content they were trying to read if a very large accordion is closed and the content below it all shifts up. Allow users the choice to collapse accordions or to leave them all open.

Icon considerations

Adding icons such as up and down arrows or plus and minus symbols is a typical design accent on accordions. These icons can be beneficial in helping people to recognize that the accordion title can be interacted with.

If adding icons, make sure there is only one tab stop on the button that opens and closes the accordion (not one for the text and one for the icon) and make sure that the icon has empty alt text or aria-hidden on it so it will not be announced to screen reader users.

WordPress Accordion Plugins

Most WordPress accordion plugins and accordions in page builders have accessibility issues.

Common problems

Across the six accordion plugins and three builders I tested, common accessibility issues include:

  • Setting focus outlines to none.
  • Not using headings.
  • Using headings but not allowing the user to define the level, which would result in headings being out of order.
  • Using links instead of buttons to open and close the accordion.
  • Not hiding decorative icons from screen readers.
  • Missing ARIA attributes.
  • Marking accordions up like tabs (but not accessible tabs).

Possible options

The block editor accordion plugin that did the best with accessibility in my tests is Accordion Blocks.

This plugin sounds good on a screen reader and works with a keyboard only; the only downside to it is that the developer has added a role of button on the heading that opens and closes the accordion, like this:

<h3 id="at-620" class="c-accordion__title js-accordion-controller" role="button" tabindex="0" aria-controls="ac-620" aria-expanded="false">This is an accordion title</h3>

When a different role is added to a heading, it no longer appears in the heading list within screen readers. If you use this plugin, you may want to add the same heading within the accordion panel to ensure it appears in the headings list.

Another option that generally looked good, but was also missing the heading structure, was the accordion block in Kadence Blocks. This plugin uses buttons to open and close the accordions and has correct ARIA attributes.

Either of these plugins might be a good starting point for accordions on your websites. If you’re using a different accordion plugin, take a second look at it.

Build Your Own

Want to build your own accordion or see a detailed code example of an accessible accordion? Check out this accordion example in the W3C’s ARIA Authoring Practices Guide.

Join the Conversation!

There's a dedicated thread on this post inside of The Admin Bar community. Join in on the conversation, ask questions, and learn more!

Group Thread

Amber Hinds

Equalize Digital

Amber Hinds is the CEO of Equalize Digital, Inc., a Certified B Corp specializing in WordPress accessibility, maker of the Accessibility Checker plugin, and lead organizer of the WordPress Accessibility Meetup and WP Accessibility Day conference.

Through her work at Equalize Digital, Amber is striving to create a world where all people have equal access to information and tools on the internet, regardless of ability. Since 2010, she has led teams building websites and web applications for nonprofits, K-12 and higher education institutions, government agencies, and businesses of all sizes. Through this journey, she learned about the importance of making websites accessible to everyone, and it has been her passion to bring awareness to accessibility and make website accessibility easier, ever since. 

Brought to you by:

Make your WordPress website accessible and ensure all people have equal access to your products or services, regardless of ability. Reach more customers, reduce liability, and increase conversions.

Come Join Us!

Join the #1 WordPress Community and dive into conversations covering every aspect of running an agency!

Kyle Van Deusen

Community Manager

More from Accessibility Weekly

Week 51

How Accessible is “Accessible Enough”

In an ideal world where clients have unlimited budgets and everything is custom, every website would …

Week 50

How to Sell Accessibility in New Builds

Creating websites that prioritize accessibility is no longer just a best practice—it’s a business must, especially …

Week 49

Accessibility in Web Development Contracts

Whether you’re running an agency or freelancing, having a clear contract for your web development and …