|
Getting your Trinity Audio player ready... |
Most developers misuse ARIA. They treat it like a shortcut instead of what it really is, a precision tool for accessibility. Done right, ARIA can make your website usable for millions of people who rely on assistive tech. Done wrong, it can wreck usability for everyone.
What is ARIA, Anyway?
ARIA (Accessible Rich Internet Applications) extends HTML’s ability to describe complex, interactive content. It tells assistive technologies what’s happening on the screen, what’s a button, a tab, a dialogue, or a live update.
For example, ARIA helps with:
- Accessible JavaScript widgets: Ensuring interactive elements like sliders or tabs are usable with screen readers.
- Form hints and error messages: Providing helpful guidance when users make mistakes.
- Live content updates: Announcing changes to the content dynamically.
In short, ARIA gives meaning to dynamic interfaces where plain HTML falls short. But it’s not a fix-all. If a native HTML element already works, use that first.
Rule One: No ARIA is better than bad ARIA.
WebAIM found that pages using ARIA had 41% more detected accessibility errors than those that didn’t. That statistic alone should make you think twice.
Why ARIA Matters
Modern sites rely heavily on custom components: dropdowns, sliders, modals, and single-page apps. Without ARIA, many of these elements are invisible or confusing to screen readers. ARIA bridges that gap but only when applied correctly.
Used correctly, it can:
- Make JavaScript widgets accessible.
- Announce live content changes.
- Improve form error handling and hints.
Used poorly, it breaks navigation, creates focus traps, and confuses users.
ARIA Basics: Roles, States, and Properties
- Roles: think of roles as job titles for your HTML elements, helping screen readers and other AT understand what each element is supposed to do. (
role="button",role="dialog").
- States: describe the current condition of an element and can change over time. They provide dynamic information to assistive technologies. (
aria-expanded="true").
- Properties: provide additional information about an element that doesn’t change dynamically. They help to describe relationships and enhance the context for assistive technologies. (
aria-labelledby,aria-describedby).
Together, they modify what’s called the Accessibility Tree, the internal structure that assistive technologies read.

When ARIA Goes Wrong
Developers often treat ARIA like a cosmetic layer instead of a functional one. Common mistakes include:
- Using ARIA When HTML Will Do: If you’re adding
role="button"to a<div>or<a>, stop right there. Use a<button>element instead. It’s got all the accessibility features built in, and you won’t have to worry about mimicking behaviours in JavaScript.


2. Ignoring Semantic HTML: HTML5 provides many elements that are already accessible out of the box. Using role="list" on a <ul> is redundant. The <ul> element already has the right semantics. Stick to native elements for better performance and simpler code.

3. Overusing ARIA Landmark Roles: Adding ARIA landmark roles like role="navigation" or role="main" to HTML elements that already have semantic meaning can create unnecessary redundancy. Semantic HTML elements like <nav> and <main> are inherently accessible and provide the appropriate roles and context for assistive technologies.
Examples:
<header>: Already provides context for header content.<nav>: Clearly indicates navigation links.<main>: Defines the primary content of the page.<footer>: Used for footer content.
4. Keyboard Trap: Creating a “keyboard trap” occurs when users can tab into an element but cannot tab out. This is a critical accessibility issue. All interactive ARIA elements must be accessible via keyboard.
Mismanaging keyboard focus can create barriers for users who rely on keyboard navigation.

By removing the tabindex from the button, it becomes part of the normal tab order, allowing users to navigate out of the dialog.
Remember: Use tabindex sparingly and always consider the impact on keyboard navigation. It’s better to rely on native focusable elements whenever possible.
5. ARIA States and Properties: Failing to update ARIA states and properties dynamically can mislead users about the current state of an element.

When the button is clicked, the aria-pressed state should change from false to true to accurately reflect its new state.
Remember: Keep ARIA states and properties in sync with the visual and interactive state of your elements. This ensures assistive technology users have the same experience as sighted users.
ARIA Best Practices
- Don’t use ARIA: Only use ARIA when you absolutely need its help. Overusing ARIA can lead to more accessibility hiccups than you bargained for.
- Stick to Semantic HTML When You Can: HTML elements come with built-in accessibility features, so use them.
- Always support keyboard navigation: If it’s interactive, it should be keyboard-friendly. No one likes being stuck in a digital dead end, so make sure your ARIA controls are easy to navigate with just a keyboard.
- Don’t hide focusable elements: Avoid using
aria-hidden="true"on elements that users need to interact with. It’s frustrating and counterproductive. - Use accessible names for interactive elements: Every interactive element should have a clear and descriptive name.

Key Takeaway
ARIA is like a scalpel. In skilled hands, it fixes problems. In careless hands, it creates them. You don’t need ARIA to make your site accessible; you need to understand when ARIA actually adds value.
If you’re serious about improving ARIA accessibility, start by reviewing your site’s structure and testing it with a screen reader. Most accessibility issues come from misusing ARIA, not from missing it.
Want to See Real-World Examples?
Check out my Accessibility Audit Services page to see how ARIA mistakes impact usability and how proper implementation increases conversions.
Or, if you’d rather see practical before-and-after examples, visit my Accessibility Case Studies.

