Ttooleras

ARIA Role Reference

Web Tools

Complete reference for WAI-ARIA roles, states, and properties with usage examples, screen reader behavior, and accessibility guidance.. Free, private — all processing in your browser.

100

Continue

The server has received the request headers and the client should proceed to send the request body.

1xx Informational
101

Switching Protocols

The server is switching to a different protocol as requested by the client (e.g., upgrading to WebSocket).

1xx Informational
103

Early Hints

Used to return some response headers before the final HTTP message, allowing preloading of resources.

1xx Informational
200

OK

The request succeeded. The meaning depends on the HTTP method: GET returns the resource, POST returns the result of the action.

2xx Success
201

Created

The request succeeded and a new resource was created. Typically returned after POST requests.

2xx Success
202

Accepted

The request has been accepted for processing, but the processing has not been completed yet.

2xx Success
204

No Content

The request succeeded but there is no content to return. Common for DELETE requests.

2xx Success
206

Partial Content

The server is returning only part of the resource due to a Range header sent by the client.

2xx Success
301

Moved Permanently

The resource has permanently moved to a new URL. Search engines will update their index. Passes link equity.

3xx Redirection
302

Found

The resource is temporarily at a different URL. The client should continue using the original URL.

3xx Redirection
304

Not Modified

The resource has not been modified since the last request. The client should use its cached version.

3xx Redirection
307

Temporary Redirect

Like 302, but guarantees the HTTP method won't change. POST stays POST.

3xx Redirection
308

Permanent Redirect

Like 301, but guarantees the HTTP method won't change. The permanent version of 307.

3xx Redirection
400

Bad Request

The server cannot process the request due to malformed syntax, invalid parameters, or missing required fields.

4xx Client Error
401

Unauthorized

Authentication is required. The client must provide valid credentials. Despite the name, this means 'unauthenticated'.

4xx Client Error
403

Forbidden

The server understood the request but refuses to authorize it. The client does not have permission.

4xx Client Error
404

Not Found

The server cannot find the requested resource. The most well-known HTTP error.

4xx Client Error
405

Method Not Allowed

The HTTP method is not supported for this endpoint. The response includes an Allow header listing valid methods.

4xx Client Error
408

Request Timeout

The server timed out waiting for the request. The client may retry.

4xx Client Error
409

Conflict

The request conflicts with the current state of the server. Common for duplicate entries.

4xx Client Error
410

Gone

The resource is permanently gone and will not be available again. Unlike 404, this is intentional.

4xx Client Error
413

Payload Too Large

The request body is larger than the server is willing to accept.

4xx Client Error
415

Unsupported Media Type

The server does not support the media type of the request body (e.g., wrong Content-Type).

4xx Client Error
422

Unprocessable Entity

The request is well-formed but contains semantic errors. Common for validation failures.

4xx Client Error
429

Too Many Requests

Rate limiting — the client has sent too many requests in a given time period.

4xx Client Error
500

Internal Server Error

A generic server error. Something went wrong on the server side.

5xx Server Error
502

Bad Gateway

The server, acting as a gateway, received an invalid response from an upstream server.

5xx Server Error
503

Service Unavailable

The server is temporarily unable to handle the request due to maintenance or overload.

5xx Server Error
504

Gateway Timeout

The server, acting as a gateway, didn't receive a timely response from the upstream server.

5xx Server Error
Advertisement

The ARIA Roles Reference is a comprehensive guide to WAI-ARIA (Web Accessibility Initiative - Accessible Rich Internet Applications) roles, states, and properties. ARIA attributes help screen readers and assistive technology understand web page structure and UI component behavior beyond what HTML alone conveys. Web developers building accessible applications use ARIA to label custom controls (not using native buttons), announce dynamic content changes, structure complex widgets (comboboxes, tabs, dialogs), and fix accessibility gaps in existing sites.

The reference groups ARIA by category: landmark roles (main, navigation, banner), document structure (article, heading, list), widget roles (button, checkbox, combobox, tab, dialog), window roles (alert, log, status), states (aria-expanded, aria-checked, aria-disabled), and properties (aria-label, aria-labelledby, aria-describedby, aria-live). Each entry shows usage examples, screen reader behavior, common mistakes, and links to WAI-ARIA Authoring Practices. Use for accessibility audits, adding ARIA to custom components, or understanding unfamiliar ARIA attributes in existing code.

ARIA Role Reference — key features

Complete ARIA catalog

All roles, states, and properties from WAI-ARIA 1.2 with explanations.

Categorized browsing

Landmark, widget, document structure, window, state, property categories.

HTML equivalent guidance

For each ARIA role, shows whether an HTML native element exists (and is preferred).

Screen reader behavior

Describes how major screen readers (NVDA, JAWS, VoiceOver) announce each ARIA element.

Usage examples

Code snippets showing correct ARIA usage in context.

Common mistakes

Pitfalls and anti-patterns to avoid for each role/attribute.

WCAG mapping

Which WCAG success criteria each ARIA attribute helps satisfy.

Offline reference

Loads once, works without additional network calls.

How to use the ARIA Role Reference

  1. 1

    Search or browse

    Search by role name or browse by category (landmark, widget, state, property).

  2. 2

    Read description

    Each ARIA entry has a description, use case, and key details.

  3. 3

    Review examples

    See code snippets showing correct usage in realistic contexts.

  4. 4

    Check for HTML equivalent

    Each role notes whether an HTML native element should be preferred.

  5. 5

    Apply to your code

    Copy example pattern and adapt to your specific component.

Common use cases for the ARIA Role Reference

Accessibility development

  • Building accessible components: Reference correct ARIA for custom comboboxes, dialogs, tabs, and other complex widgets.
  • Fixing accessibility issues: When an audit identifies missing ARIA, look up the exact attributes needed.
  • Screen reader testing: Understand what each ARIA attribute makes screen readers announce, so you can design for that audience.

Code review

  • Verify ARIA correctness: Check ARIA in PR changes against standards to catch misuse.
  • Anti-pattern detection: Identify role=\"button\" on divs, aria-hidden on focusable elements, and other common mistakes.
  • Accessibility pairing: Have an accessibility expert review ARIA usage against this reference during code review.

Learning

  • Onboarding accessible development: New developers learning ARIA can use this as a self-paced reference.
  • Accessibility training: Resource for teams building a11y-first products.
  • Exam prep: Reference for IAAP (International Association of Accessibility Professionals) certifications.

ARIA Role Reference — examples

Labeled button

Accessible name for custom button.

Input
<div role=\"button\" tabindex=\"0\" aria-label=\"Close dialog\">X</div>
Output
Screen reader announces: \"Close dialog, button\"
(better: use <button aria-label=\"Close dialog\">X</button>)

Expanded state

Dropdown or accordion.

Input
<button aria-expanded=\"false\" aria-controls=\"menu1\">Menu</button>
Output
announces \"Menu, button, collapsed\"
when expanded, aria-expanded flips to true

Live region

Announcing dynamic updates.

Input
<div aria-live=\"polite\">3 items in cart</div>
Output
when text changes, screen reader announces new content at next break in speech

Landmark

Page structure.

Input
<nav aria-label=\"Main navigation\">...</nav>
Output
screen reader users can navigate directly to this landmark
announced as \"Main navigation, navigation landmark\"

Hidden decoration

Icon with adjacent text.

Input
<span aria-hidden=\"true\">✓</span> Done
Output
screen reader reads \"Done\" without the icon
icon is purely visual decoration

Technical details

WAI-ARIA is a W3C standard (current 1.2) defining ways to make web content accessible to users with disabilities, particularly those using screen readers. It supplements HTML with additional semantic information.

Core ARIA concepts:

Role: what the element is (button, heading, listbox)
State: current state (expanded, checked, disabled) — changes during interaction
Property: feature that doesn\u2019t change (label, level, description)

Landmark roles: structural sections of a page
- banner: site header
- navigation: nav menu
- main: main content
- complementary: sidebar
- contentinfo: footer
- search: search area
- region: generic landmark with aria-label

HTML5 equivalents often preferred: <header>, <nav>, <main>, <aside>, <footer>, <form role=\"search\">.

Widget roles: interactive components
- button: clickable action
- checkbox: toggle
- combobox: dropdown with text entry
- dialog: modal dialog
- listbox: select list
- menu/menuitem: application menus
- progressbar: progress indicator
- slider: range input
- tab/tablist/tabpanel: tabbed interface
- tooltip: hover/focus help

Document structure: article, heading, list, table, definition, group, region.

Window-like roles: alert (urgent message), alertdialog (alert + dialog), log (continuous updates), status (status updates), timer.

States (change during interaction):
- aria-busy: currently loading
- aria-checked: checkbox/radio state (true, false, mixed)
- aria-disabled: disabled (alternative to native disabled attribute)
- aria-expanded: collapsible state (true, false)
- aria-hidden: hidden from assistive tech
- aria-pressed: toggle button state
- aria-selected: selected in a set (true, false)

Properties (static):
- aria-label: accessible name when visible text isn\u2019t enough
- aria-labelledby: reference to labelling element(s) by ID
- aria-describedby: reference to description element
- aria-current: current page/step/etc.
- aria-level: heading level for generic role
- aria-live: announces dynamic changes (off, polite, assertive)
- aria-atomic: announce entire live region or just changes
- aria-haspopup: indicates popup (menu, listbox, dialog, etc.)
- aria-controls: what element is controlled

First rule of ARIA: use HTML native semantics when possible. <button>Submit</button> is better than <div role=\"button\" tabindex=\"0\">Submit</div>.

Second rule of ARIA: don\u2019t change HTML semantics unless necessary. Don\u2019t add role=\"button\" to a heading.

Third rule of ARIA: all interactive ARIA controls must be keyboard accessible.

Fourth rule of ARIA: don\u2019t use role=\"presentation\" or aria-hidden=\"true\" on visible focusable elements — it hides from assistive tech but remains interactive.

Fifth rule: all interactive elements must have an accessible name (from visible text, aria-label, aria-labelledby, or title attribute).

Common problems and solutions

Using ARIA when HTML suffices

<div role=\"button\" tabindex=\"0\"> needs keyboard handling, focus styling, and ARIA. <button> gets all of that natively. Use HTML elements first; add ARIA only when no native equivalent exists.

role=presentation on focusable elements

role=\"presentation\" (or role=\"none\") removes semantics. If the element is still focusable or interactive, screen readers get confused. Only use on purely decorative elements.

aria-hidden on focusable elements

aria-hidden=\"true\" hides from assistive tech but element remains interactive via keyboard. Users can tab to it but the screen reader says nothing. Always remove tabindex or disable interaction when using aria-hidden.

Missing accessible name

Interactive elements must have a name. <button> with just an icon needs aria-label or visible text. <a href> with just an image needs alt text or aria-label.

Misusing aria-live

aria-live=\"assertive\" interrupts whatever the user is doing. Reserve for truly urgent messages (errors). Use \"polite\" for most dynamic updates.

Redundant ARIA

<h1 role=\"heading\"> is redundant — heading is already the role of h1. Adding ARIA to elements with matching native semantics is at best redundant, at worst breaking the native semantics.

Broken references

aria-labelledby, aria-describedby, aria-controls reference elements by ID. If the referenced ID doesn’t exist, the reference is broken silently. Validate references during development.

ARIA Role Reference — comparisons and alternatives

Compared to the official WAI-ARIA specification, this reference is more readable and includes practical examples. The spec is authoritative and more complete; this reference is a friendly entry point.

Compared to WAI-ARIA Authoring Practices Guide, this tool provides quick-reference lookups while APG offers detailed pattern implementations. Use APG for building complex widgets; use this tool for quick lookups.

Compared to accessibility testing tools (axe, WAVE), this tool is for learning and reference. Testing tools find issues; this tool helps you understand how to fix them.

Frequently asked questions about the ARIA Role Reference

What is ARIA?

WAI-ARIA (Web Accessibility Initiative - Accessible Rich Internet Applications) is a set of HTML attributes for improving accessibility of web content, especially for users relying on screen readers and assistive technology. It supplements HTML where HTML alone doesn’t provide enough semantic information.

When should I use ARIA?

Only when native HTML doesn’t provide the needed semantics. Use <button> not <div role=\"button\">. Add ARIA for: custom UI components (dropdown, dialog, tab), dynamic updates (aria-live), states not expressible in HTML (aria-expanded), labeling complex relationships (aria-labelledby).

What is the first rule of ARIA?

Don’t use ARIA if HTML alone gives you the semantics you need. <button>Click me</button> is better than <div role=\"button\" tabindex=\"0\">Click me</div>. HTML native elements come with correct semantics, keyboard handling, focus behavior, and screen reader support automatically.

What is aria-label used for?

To provide an accessible name when visible text isn’t sufficient or doesn’t exist. Example: a close button showing only an \"X\" icon. Add aria-label=\"Close dialog\" so screen readers announce the action clearly.

What is the difference between aria-labelledby and aria-describedby?

aria-labelledby provides the NAME of an element by referencing other element IDs containing label text. aria-describedby provides additional DESCRIPTION by referencing other element IDs. Name vs description: name is concise; description is longer context.

What is aria-live?

Marks a region whose content updates dynamically. Screen readers announce changes without the user needing to manually navigate there. Values: polite (announce at next break), assertive (interrupt immediately — use sparingly), off (don’t announce).

What is a landmark?

A section of a page with structural meaning: navigation, main, banner (header), contentinfo (footer), complementary (sidebar). Screen reader users can navigate between landmarks directly, skipping past repetitive content.

Is ARIA validated by browsers?

Browsers don’t validate ARIA — invalid ARIA can silently break accessibility without any visible error. Use accessibility testing tools (axe-core, WAVE) to catch issues automatically. This reference helps you understand correct usage.

Additional resources

Advertisement

Related tools

All Web Tools

Learn more

Explore more tools

200+ free tools that run in your browser.

Browse all tools →