Skip to content

How to Make WordPress Menus Accessible to Screen Readers

·

Navigation menus are one of the most important elements on any website. They help users find what they’re looking for and understand how your content is structured. But for people using screen readers, a menu that looks fine visually might be confusing, repetitive or completely inaccessible if it’s not coded correctly.

In WordPress, menus are often created through themes or page builders. While some themes do a decent job of adding semantic markup, many still fall short when it comes to accessibility. If your menu doesn’t have clear structure or labels, screen reader users might not even know it’s a menu.

This guide will show you how to make your WordPress menus more accessible, both manually and using the Web Accessibility Toolkit plugin. You’ll learn how to add ARIA roles and labels, what screen readers need to understand menus, and how to test your improvements.

Why Menus Need Accessibility Attention

Menus are used by everyone, but users navigating by keyboard or screen reader rely heavily on semantic clues. These clues are usually missing if your menu is built purely for visual design.

Common Issues with WordPress Menus

  • Missing role="navigation" or semantic wrappers
  • No accessible label to describe the purpose of the menu
  • Incorrect use of heading structure or list elements
  • Overuse of visual-only dropdowns that don’t work with keyboard focus

These issues don’t just affect usability – they can also cause your site to fail WCAG 2.1 accessibility checks and put you at legal risk under the ADA or other digital accessibility laws.

What Screen Readers Need from a Menu

Screen readers don’t see your site the way sighted users do. They interpret structure through semantic HTML and ARIA attributes. To properly announce a menu, screen readers need:

  • A container element with role="navigation"
  • A label that describes what the menu is for, such as “Main menu” or “Footer links”
  • List items (<li>) inside an unordered list (<ul>)
  • Keyboard-accessible links

Without these elements, the menu may be announced as a generic region or ignored entirely.

How to Make Menus Accessible Using the Web Accessibility Toolkit

If you’re not comfortable editing theme files or adding custom code, the Web Accessibility Toolkit plugin provides a way to make your menus accessible from the WordPress dashboard.

Step 1: Install the Plugin

  1. Go to Plugins > Add New
  2. Search for Web Accessibility Toolkit
  3. Click Install, then Activate

Step 2: Open the ARIA Menu Settings

After activation, go to the Web Accessibility menu in the sidebar of your admin area and select the ARIA tab. Scroll down to the Menus section. You’ll see a list of all registered WordPress menus on your site.

Step 3: Add ARIA Labels and Roles

For each menu, you can:

  • Enable role="navigation"
  • Add a custom aria-label such as “Main navigation” or “Footer links”

This tells screen readers what the region is and helps users understand its purpose. For example, if you have multiple navigation menus, adding different labels prevents confusion.

Step 4: Save and Test

After adding labels and roles, click Save. These attributes will be applied automatically to the HTML container for each selected menu. You don’t need to touch your theme files or write custom JavaScript.

What Happens Behind the Scenes

The plugin uses WordPress hooks and filters to insert the ARIA attributes at runtime. It targets the wp_nav_menu function output, so it works with most themes and builders that use standard WordPress functions to render menus.

This keeps your site compatible with future updates and lets you change themes without losing accessibility features.

Manual Option: Editing Your Theme (Optional)

If you prefer to do things manually or your theme doesn’t use standard menu functions, you can edit your theme’s template files. Look for the wp_nav_menu() function in header.php or footer.php.

Here’s an example of how to add ARIA roles and labels manually:

wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'main-menu', 'container' => 'nav', 'container_class'=> 'menu-wrapper', 'container_aria_label' => 'Main navigation', 'container_role' => 'navigation' ) );

Note that not all themes support container_aria_label or container_role natively. In that case, you would need to wrap the menu in a custom <nav> tag and apply the attributes directly in your HTML.

How This Helps with WCAG Compliance

Making your navigation accessible helps meet several success criteria from the WCAG 2.1 guidelines (opens in new tab), including:

  • 1.3.1: Info and Relationships — structure must be conveyed to users
  • 2.4.1: Bypass Blocks — users should be able to skip repetitive navigation
  • 2.4.6: Headings and Labels — labels should describe the purpose of each region
  • 4.1.2: Name, Role, Value — components must expose roles and labels to assistive tech

These improvements not only help screen reader users but also improve keyboard navigation and overall usability for all users.

How to Test Your Menus for Accessibility

Once you’ve added ARIA attributes, it’s important to verify they’re working. Here are a few quick ways to test:

1. Use a Screen Reader

If you’re on Windows, try NVDA (free) or JAWS. On macOS, turn on VoiceOver (built-in).

Tab through your page and listen for how the menu is announced. You should hear something like “Main navigation region” or “Footer links navigation.”

2. Use a Browser Extension

Extensions like axe DevTools or the WAVE Evaluation Tool can scan your page and flag missing or misused ARIA attributes.

3. Try Keyboard Navigation

Press Tab and Shift + Tab to move through your site. Make sure the menu is accessible, focusable, and logically ordered. You should be able to reach all links and dropdowns without using a mouse.

Summary

Accessible navigation menus are essential for an inclusive WordPress site. They make it easier for people using screen readers to understand your site structure and navigate between pages without confusion.

With the Web Accessibility Toolkit plugin, you can make your menus accessible without editing theme code. You’ll be able to apply ARIA roles and labels to any menu from the dashboard, improving your site’s compliance with WCAG, ADA, and Section 508 standards.

Whether you manage a blog, an eCommerce store, or a government website, ensuring your menus are accessible is a simple but powerful step toward better usability for everyone.

Make your website more accessible