← all articles
// article

ARIA roles and HTML role — accessibility mistakes

2025-11-25

What exactly are beginners getting wrong with ARIA roles?

Many developers, eager to make their web applications accessible, often misstep with ARIA (Accessible Rich Internet Applications) roles by applying them without understanding their core purpose or, worse, by using them when native HTML would suffice. The most common beginner errors boil down to:

These mistakes don't just create messy code; they can actively degrade the experience for users relying on assistive technologies, turning helpful features into confusing roadblocks.

Why do ARIA roles even exist? Aren't HTML elements enough?

HTML is robust. Elements like <button>, <a>, <nav>, and <form> come with built-in semantics, properties, and expected behaviors that assistive technologies (like screen readers) understand automatically. A native <button>, for instance, isn't just visually distinct; it tells a screen reader, “Hey, this is a clickable control.” It’s also inherently focusable via keyboard and responds to both Enter and Space keys.

However, the web evolved. Developers started building highly interactive, complex user interfaces (think custom sliders, tabbed interfaces, modal dialogs, or tree views) that HTML didn't initially have direct, semantically rich elements for. This is where ARIA steps in. ARIA provides a way to add semantic information to elements when the native HTML isn't sufficient or when you're building custom JavaScript components that need to communicate their nature, state, and properties to assistive technologies. It’s a bridge, not a replacement, for HTML.

The "First Rule of ARIA": Your Accessibility Golden Ticket

If there’s one principle to engrave into your developer brain, it’s this: “If you can use a native HTML element or attribute with the semantics and behavior you require, instead of re-purposing an element and adding an ARIA role, state or property, then do so.”

This rule, straight from the W3C, isn't just a suggestion; it's a foundational guideline. Why? Because native HTML elements:

Consider a simple button. Writing <button>Click me</button> gives you a clickable, keyboard-focusable element that announces itself as a button to a screen reader. Contrast this with <div role="button" tabindex="0">Click me</div>. The latter requires you to manually add tabindex="0" for focusability, and JavaScript event listeners for both `click` and `keydown` (specifically for `Enter` and `Space` keys) to mimic a native button's behavior. Why do the extra work and risk missing something critical?

Common ARIA Missteps and How to Avoid Them

Misusing Interactive Roles on Non-Interactive Elements

This is perhaps the most frequent pitfall. You build a custom component, say, a `div` that acts like a button, and you add `role="button"`. Great! You've told the screen reader it's a button. But have you made it *behave* like one?

The same applies to `role="link"`. A <span role="link">Read more</span> without an `href` or proper keyboard handling is a semantic lie. It sounds like a link, but doesn't act like one, frustrating users.

Overuse and Redundancy

Some elements already have implicit ARIA semantics. Adding `role="navigation"` to a <nav> element is redundant. The browser already understands a <nav> is for navigation. Similarly, a <ul> is implicitly `role="list"`, and a <form> is implicitly `role="form"`.

Adding redundant ARIA doesn't improve accessibility; it just adds unnecessary verbosity for screen reader users and bloats your code. It can also, in some edge cases, conflict with browser defaults.

Forgetting Keyboard Navigation Entirely

ARIA primarily affects the *semantic layer* – how elements are announced to assistive technologies. It does not automatically bestow keyboard operability. A complex custom tab component with `role="tablist"`, `role="tab"`, and `role="tabpanel"` is useless for a keyboard-only user if you haven't written the JavaScript to:

This is where many custom components fall short, even with correct ARIA roles. At SISL, we often see custom solutions that look great but fail fundamental keyboard tests. As a boutique studio, we guide our clients through implementing robust keyboard interaction alongside ARIA to ensure true usability.

Ignoring `aria-live` Regions for Dynamic Content

Modern web applications are highly dynamic. Content appears, disappears, or updates without a full page reload (think form validation messages, search results, or chat notifications). Screen readers often miss these changes unless explicitly told to monitor them.

`aria-live` attributes are crucial here:

Without these, users of assistive technologies can easily miss crucial feedback, leading to confusion or abandonment.

When *should* you use ARIA? Real-world scenarios.

Despite the warnings, ARIA is incredibly powerful when used correctly. Here are scenarios where it's indispensable:

If you're unsure about the nuances of ARIA implementation for a complex interface, especially in a cutting-edge web application, don't hesitate to get in touch. Expert guidance can save significant time and ensure your application is truly inclusive.

The Cost of Getting ARIA Wrong (and Right)

Accessibility isn't just a moral imperative; it's a legal and business one. Failing to implement accessibility correctly, especially in regions with strong accessibility laws (like the US with ADA or EU with EN 301 549), can lead to costly lawsuits and significant reputational damage. Beyond legal risks, a poorly accessible website or application alienates a significant portion of potential users – estimated at 15-20% of the global population living with disabilities. That's a massive market segment to ignore.

Fixing accessibility issues after launch is almost always more expensive than building it correctly from the start. Retrofitting complex ARIA interactions and keyboard navigation can be akin to rebuilding core parts of your UI, potentially costing thousands of dollars in developer time and delaying other critical features. Investing upfront in a thoughtful, accessible design and development process, guided by principles like the “First Rule of ARIA,” saves money and unlocks a wider audience.

Beyond ARIA: A Holistic Approach to Web Accessibility

ARIA is a powerful tool, but it's just one piece of the accessibility puzzle. True web accessibility requires a holistic approach:

  1. Semantic HTML First: Always start with the most appropriate native HTML element.
  2. Keyboard Operability: Ensure every interactive element is usable with a keyboard alone.
  3. Color Contrast: Meet WCAG guidelines for text and interactive elements.
  4. Clear Language & Structure: Use headings correctly, write concise text, and provide alternatives for non-text content (e.g., alt text for images).
  5. Responsive Design: Ensure your site works well on various screen sizes and input methods.
  6. Testing with Assistive Technologies: Regularly test your application with actual screen readers (NVDA, JAWS, VoiceOver) and keyboard navigation to catch real-world usability issues.

Conclusion: Build for Everyone, Not Just the "Average" User

ARIA roles are not magic sprinkles you can dust over your HTML to make it accessible. They are a precise, powerful tool designed to fill semantic gaps when native HTML falls short. Misusing them is not just ineffective; it can actively harm the experience for users who rely on assistive technologies.

Approach ARIA with a developer's precision and a user's empathy. Prioritize semantic HTML, ensure robust keyboard interaction, and only reach for ARIA when you genuinely need to provide additional meaning or functionality that the browser doesn't offer by default. By adhering to these principles, you'll build web experiences that are not just functional, but genuinely inclusive for everyone.

Got a similar problem?

Boutique web development studio from Poland — sites, WooCommerce / Magento stores, custom web apps and landings. See what we shipped.

See SISL portfolio →

Free technical audit of your site — in 24h

Core Web Vitals measured on real users, indexability, structured data, meta and internal linking. A written report with prioritised fixes, not a PDF from a generic tool. No cost, no call required.

Get the free audit →