Skip to content

ARIA Roles

This lesson explains ARIA Roles in web accessibility with clear examples, practical use cases, and implementation best practices.

ARIA Roles Overview

ARIA Roles define the purpose of HTML elements for assistive technologies. They help screen readers identify custom interface components such as dialogs, tabs, menus, alerts, and navigation regions that cannot be fully described using native HTML elements alone.

Native HTML elements already include built-in accessibility roles. ARIA roles should only be added when semantic HTML cannot provide the required functionality. Overusing ARIA can actually reduce accessibility rather than improve it.

Property Value
Purpose Describe the purpose of UI components.
Used By Screen readers and assistive technologies.
Common Categories Landmark, Widget, Document, Live Region
Works With HTML, CSS, and JavaScript
Recommended By WAI-ARIA and WCAG
Best Practice Use semantic HTML before adding ARIA roles.

ARIA Role Example

<div
  role="dialog"
  aria-labelledby="dialog-title"
  aria-modal="true">

  <h2 id="dialog-title">
    Delete Confirmation
  </h2>

</div>

The role="dialog" attribute informs assistive technologies that this element behaves as a modal dialog, while aria-labelledby provides its accessible name.

Common ARIA Roles

ARIA defines many roles that describe different types of user interface components. Selecting the correct role helps assistive technologies interpret custom widgets accurately.

Role Purpose Typical Usage
dialog Represents a modal or popup window. Confirmation dialogs
alert Announces important messages immediately. Error notifications
tablist Groups tab controls. Tabbed interfaces
tab Represents a selectable tab. Navigation tabs
tabpanel Contains content for a selected tab. Tab content area
menu Represents an application menu. Context menus

ARIA Role Best Practices

Best Practice Description
Use Native HTML First Prefer semantic HTML elements before assigning ARIA roles.
Choose the Correct Role Assign only roles that match the component behavior.
Update ARIA States Keep attributes like aria-expanded and aria-selected synchronized.
Support Keyboard Navigation Ensure every custom widget is fully keyboard accessible.
Test with Screen Readers Verify roles are announced correctly.
Follow WAI-ARIA Patterns Implement recommended accessibility design patterns.

Common ARIA Role Mistakes

  • Replacing semantic HTML with unnecessary ARIA roles.
  • Assigning incorrect roles to custom components.
  • Using multiple conflicting roles on one element.
  • Adding roles without supporting keyboard interaction.
  • Forgetting to update related ARIA states dynamically.
  • Using role="button" instead of a native button element.
  • Ignoring screen reader testing.
  • Assuming ARIA roles alone make a component accessible.

Key Takeaways

  • ARIA roles describe the purpose of custom interface components.
  • Native HTML elements already include built-in accessibility roles.
  • Use ARIA roles only when semantic HTML is not sufficient.
  • Combine ARIA roles with proper labels, states, and keyboard support.
  • Follow WAI-ARIA Authoring Practices when building custom widgets.
  • Always test ARIA roles with screen readers and keyboard navigation.

Pro Tip

Before adding an ARIA role, ask yourself whether a native HTML element already provides the same behavior. For example, use button instead of role="button" whenever possible. Native elements provide better accessibility, require less code, and work consistently across browsers and assistive technologies.