Back to Community

Why Your Screen Reader Isn't Reading ARIA Labels and How to Fix It

27 threads Sep 16, 2025 CoreAccessibility

Content

If you've added ARIA attributes like aria-label or screen-reader-only text to an element, but your screen reader (like NVDA) remains silent, you're not alone. This is a common point of confusion in web accessibility. This guide will walk you through the typical reasons this happens and how to resolve it.

Why Screen Readers Ignore ARIA Labels

Based on common support threads, a screen reader failing to announce an ARIA label is rarely a bug in WordPress core. The issue almost always stems from one of a few specific implementation errors in your HTML code.

  • Invalid HTML Structure: Placing interactive elements like <button> or <input> inside another interactive element is invalid and can cause screen readers to behave unpredictably.
  • Incorrect Role Usage: Using an invalid or nonsensical ARIA role (e.g., role="nav" instead of role="navigation") can break the expected semantics for assistive technology.
  • aria-label on Ineffective Elements: The aria-label attribute is designed to work on interactive elements or elements with a semantic role. Using it on a generic <span> or <div> without a proper role may not have the intended effect, as noted in W3C documentation.
  • CSS Conflicts: The CSS intended to hide content only from sighted users (e.g., .sr-only) may be implemented in a way that also hides it from screen readers, often by using display: none or visibility: hidden incorrectly.

How to Troubleshoot and Fix the Issue

Follow these steps to diagnose and correct the problem.

1. Validate Your HTML Structure

The first step is to ensure your HTML is valid. A common mistake, as seen in one thread, is nesting a <button> and a <div> with an icon inside it. A button should contain only phrasing content. Simplify the structure.

<!-- Problematic Structure -->
<button>
    <div class="hamburger-icon">
        <span class="sr-only">Menu Button</span>
        <svg>...</svg>
    </div>
</button>

<!-- Improved Structure -->
<button aria-label="Menu Button" class="hamburger-icon">
    <svg aria-hidden="true">...</svg>
</button>

2. Use ARIA Roles Correctly

Always use standard, valid ARIA roles. For a navigation element, the correct role is role="navigation". Review the official ARIA role definitions.

3. Apply aria-label to the Right Element

Place the aria-label directly on the interactive element itself (the <button>), not on a child <span> within it. This is the most reliable method.

<button aria-label="Menu Button Double Tap To Toggle" aria-expanded="false" class="mobile-nav">
    <svg aria-hidden="true">...</svg>
</button>

4. Check Your Screen-Reader-Only CSS

Ensure your CSS for visually hidden text does not remove it from the accessibility tree. Avoid display: none or visibility: hidden. Use a proven .sr-only class instead.

.sr-only {
    border: 0;
    clip: rect(1px, 1px, 1px, 1px);
    clip-path: inset(50%);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px;
    word-wrap: normal !important;
}

5. Test with a Screen Reader

Finally, test your fixes with an actual screen reader. Free options like NVDA (NonVisual Desktop Access) for Windows are essential for testing. Remember that behavior can vary between screen readers (e.g., NVDA vs. VoiceOver on Mac), so testing on multiple platforms is ideal for broader accessibility.

When to Seek Further Help

If you have verified your HTML is valid and your ARIA attributes are correctly implemented but the issue persists, the problem might lie with a third-party theme or plugin. As is common practice in support forums, you would need to contact the specific theme or plugin's support channel for further assistance, as volunteers typically do not have access to commercial products to troubleshoot them.

By methodically checking these common pitfalls, you can usually resolve why your carefully written ARIA labels are being ignored and create a more accessible experience for all users.

Related Support Threads Support