Ir al contenido principal
Skip to docs content

ARIA Roles Quick Reference

A comprehensive reference for all WAI-ARIA roles with details on how Speakable handles each one. Use this guide to understand how different screen readers announce role semantics, what HTML elements map implicitly to each role, and which ARIA states are required or supported.

Note: Speakable approximates screen reader behavior through static HTML analysis. Actual output varies by screen reader version and user settings.

Landmark Roles

8

Landmark roles identify large content areas and help assistive technology users navigate page structure quickly.

role="banner"Implicit: <header>

Supported ARIA States

aria-labelaria-labelledby
Speakable Output
NVDA

banner landmark

JAWS

banner region

VoiceOver

banner

Narrator

banner

role="complementary"Implicit: <aside>

Supported ARIA States

aria-labelaria-labelledby
Speakable Output
NVDA

complementary landmark

JAWS

complementary region

VoiceOver

complementary

Narrator

complementary

role="contentinfo"Implicit: <footer>

Supported ARIA States

aria-labelaria-labelledby
Speakable Output
NVDA

content information landmark

JAWS

content info region

VoiceOver

content information

Narrator

content info

role="form"Implicit: <form>

Supported ARIA States

aria-labelaria-labelledby
Speakable Output
NVDA

Contact form landmark

JAWS

Contact form region

VoiceOver

Contact, form

Narrator

Contact, form landmark

role="main"Implicit: <main>

Supported ARIA States

aria-labelaria-labelledby
Speakable Output
NVDA

main landmark

JAWS

main region

VoiceOver

main

Narrator

main landmark

role="navigation"Implicit: <nav>

Supported ARIA States

aria-labelaria-labelledby
Speakable Output
NVDA

Main navigation landmark

JAWS

Main navigation region

VoiceOver

navigation, Main

Narrator

navigation, Main

role="region"Implicit: <section>

Supported ARIA States

aria-label (required)aria-labelledby
Speakable Output
NVDA

Features region landmark

JAWS

Features region

VoiceOver

Features, region

Narrator

Features, region

role="search"Implicit: <search>

Supported ARIA States

aria-labelaria-labelledby
Speakable Output
NVDA

search landmark

JAWS

search region

VoiceOver

search

Narrator

search landmark


Widget Roles

17

Widget roles define interactive UI elements. These roles communicate the type of control and its current state to assistive technologies.

role="button"Implicit: <button>⚠ Commonly misused

Supported ARIA States

aria-pressedaria-expandedaria-disabled
Speakable Output
NVDA

Submit button

JAWS

Submit button

VoiceOver

Submit, button

Narrator

Submit, button

role="checkbox"Implicit: <input type="checkbox">

Supported ARIA States

aria-checked (required)aria-disabledaria-required
Speakable Output
NVDA

Accept terms checkbox not checked

JAWS

Accept terms check box not checked

VoiceOver

Accept terms, unticked, checkbox

Narrator

Accept terms, checkbox, unchecked

role="combobox"

Supported ARIA States

aria-expanded (required)aria-controlsaria-activedescendantaria-autocomplete
Speakable Output
NVDA

Country edit combo collapsed has autocomplete

JAWS

Country combo box edit

VoiceOver

Country, collapsed, combo box

Narrator

Country, combo box, collapsed, editable

role="dialog"Implicit: <dialog>

Supported ARIA States

aria-label (required)aria-labelledbyaria-modal
Speakable Output
NVDA

Confirm deletion dialog

JAWS

Confirm deletion dialog

VoiceOver

Confirm deletion, web dialog

Narrator

Confirm deletion, dialog

role="link"Implicit: <a href>⚠ Commonly misused

Supported ARIA States

aria-currentaria-disabled
Speakable Output
NVDA

Learn more link

JAWS

Learn more link

VoiceOver

Learn more, link

Narrator

Learn more, link

role="listbox"Implicit: <select>

Supported ARIA States

aria-multiselectablearia-requiredaria-activedescendantaria-orientation
Speakable Output
NVDA

Country list box

JAWS

Country list box

VoiceOver

Country, list box

Narrator

Country, list box

role="menu"

Supported ARIA States

aria-activedescendantaria-orientation
Speakable Output
NVDA

File menu

JAWS

File menu

VoiceOver

File, menu

Narrator

File, menu

role="menuitem"

Supported ARIA States

aria-disabledaria-expandedaria-haspopup
Speakable Output
NVDA

Save menu item

JAWS

Save

VoiceOver

Save, menu item

Narrator

Save, menu item

role="option"Implicit: <option>

Supported ARIA States

aria-selected (required)aria-disabled
Speakable Output
NVDA

United States 3 of 195

JAWS

United States

VoiceOver

United States

Narrator

United States, 3 of 195

role="progressbar"Implicit: <progress>

Supported ARIA States

aria-valuenowaria-valueminaria-valuemaxaria-valuetext
Speakable Output
NVDA

Upload progress bar 75 percent

JAWS

Upload progress bar 75%

VoiceOver

75%, Upload, progress indicator

Narrator

Upload, progress bar, 75%

role="radio"Implicit: <input type="radio">

Supported ARIA States

aria-checked (required)aria-disabledaria-posinsetaria-setsize
Speakable Output
NVDA

Express shipping radio button checked 2 of 3

JAWS

Express shipping radio button checked

VoiceOver

Express shipping, selected, radio button, 2 of 3

Narrator

Express shipping, radio button, checked, 2 of 3

role="slider"Implicit: <input type="range">

Supported ARIA States

aria-valuenow (required)aria-valueminaria-valuemaxaria-valuetextaria-orientation
Speakable Output
NVDA

Volume slider 80

JAWS

Volume slider 80

VoiceOver

Volume, 80, slider

Narrator

Volume, slider, 80

role="switch"

Supported ARIA States

aria-checked (required)aria-disabled
Speakable Output
NVDA

Dark mode switch on

JAWS

Dark mode switch On

VoiceOver

Dark mode, on, switch

Narrator

Dark mode, toggle switch, on

role="tab"

Supported ARIA States

aria-selected (required)aria-controlsaria-disabled
Speakable Output
NVDA

Settings tab selected 2 of 4

JAWS

Settings tab 2 of 4

VoiceOver

Settings, selected, tab, 2 of 4

Narrator

Settings, tab, 2 of 4, selected

role="tabpanel"

Supported ARIA States

aria-labelledby
Speakable Output
NVDA

Settings tab panel

JAWS

Settings tab panel

VoiceOver

Settings, tab panel

Narrator

Settings, tab panel

role="textbox"Implicit: <input type="text">, <textarea>

Supported ARIA States

aria-multilinearia-placeholderaria-readonlyaria-required
Speakable Output
NVDA

Email edit required has autocomplete blank

JAWS

Email edit type in text

VoiceOver

Email, required, text field

Narrator

Email, edit, required

role="tree"

Supported ARIA States

aria-multiselectablearia-activedescendantaria-orientation
Speakable Output
NVDA

File browser tree view

JAWS

File browser tree view

VoiceOver

File browser, tree

Narrator

File browser, tree view


Document Structure Roles

23

Document structure roles describe the organization of content on a page. They provide semantic meaning without implying interactivity.

role="article"Implicit: <article>

Supported ARIA States

aria-labelaria-labelledbyaria-posinsetaria-setsize
Speakable Output
NVDA

article

JAWS

article

VoiceOver

article

Narrator

article

role="cell"Implicit: <td>

Supported ARIA States

aria-colindexaria-colspanaria-rowindexaria-rowspan
Speakable Output
NVDA

column 2 row 3 Price $49.99

JAWS

Price column $49.99

VoiceOver

row 3, Price, $49.99

Narrator

row 3, column 2, $49.99

role="columnheader"Implicit: <th scope="col">

Supported ARIA States

aria-sortaria-colindex
Speakable Output
NVDA

Price column header sorted ascending

JAWS

Price column header sort ascending

VoiceOver

Price, sorted ascending, column header

Narrator

Price, column header, sorted ascending

role="definition"Implicit: <dd>

Supported ARIA States

aria-labelaria-labelledby
Speakable Output
NVDA

definition

JAWS

definition

VoiceOver

definition

Narrator

definition

role="directory"

Supported ARIA States

aria-label
Speakable Output
NVDA

directory

JAWS

directory

VoiceOver

directory

Narrator

directory

role="document"

Supported ARIA States

aria-labelaria-labelledby
Speakable Output
NVDA

document

JAWS

document

VoiceOver

web content

Narrator

document

role="feed"

Supported ARIA States

aria-labelaria-labelledbyaria-busy
Speakable Output
NVDA

News feed

JAWS

News feed

VoiceOver

News, feed

Narrator

News, feed

role="figure"Implicit: <figure>

Supported ARIA States

aria-labelaria-labelledby
Speakable Output
NVDA

Performance chart figure

JAWS

figure Performance chart

VoiceOver

Performance chart, figure

Narrator

Performance chart, figure

role="grid"

Supported ARIA States

aria-multiselectablearia-readonlyaria-activedescendantaria-colcountaria-rowcount
Speakable Output
NVDA

Spreadsheet grid with 10 columns and 50 rows

JAWS

Spreadsheet grid

VoiceOver

Spreadsheet, grid, 10 columns, 50 rows

Narrator

Spreadsheet, grid

role="group"Implicit: <fieldset>

Supported ARIA States

aria-labelaria-labelledbyaria-activedescendantaria-disabled
Speakable Output
NVDA

Shipping options grouping

JAWS

Shipping options group

VoiceOver

Shipping options, group

Narrator

Shipping options, group

role="heading"Implicit: <h1>-<h6>⚠ Commonly misused

Supported ARIA States

aria-level (required)
Speakable Output
NVDA

heading level 2 Getting Started

JAWS

Getting Started heading level 2

VoiceOver

Getting Started, heading level 2

Narrator

Getting Started, heading, level 2

role="img"Implicit: <img>

Supported ARIA States

aria-label (required)aria-labelledby
Speakable Output
NVDA

graphic Company logo

JAWS

Company logo graphic

VoiceOver

Company logo, image

Narrator

Company logo, image

role="list"Implicit: <ul>, <ol>

Supported ARIA States

aria-labelaria-labelledby
Speakable Output
NVDA

list with 5 items

JAWS

list of 5 items

VoiceOver

list, 5 items

Narrator

list, 5 items

role="listitem"Implicit: <li>

Supported ARIA States

aria-levelaria-posinsetaria-setsize
Speakable Output
NVDA

bullet Install dependencies

JAWS

bullet Install dependencies

VoiceOver

Install dependencies

Narrator

Install dependencies, list item

role="math"

Supported ARIA States

aria-labelaria-labelledby
Speakable Output
NVDA

math

JAWS

math

VoiceOver

mathematical expression

Narrator

math

role="note"

Supported ARIA States

aria-labelaria-labelledby
Speakable Output
NVDA

note

JAWS

note

VoiceOver

note

Narrator

note

role="row"Implicit: <tr>

Supported ARIA States

aria-rowindexaria-selectedaria-expandedaria-level
Speakable Output
NVDA

row 3

JAWS

row 3

VoiceOver

row 3 of 10

Narrator

row 3

role="rowgroup"Implicit: <tbody>, <thead>, <tfoot>
Speakable Output
NVDA

not announced

JAWS

not announced

VoiceOver

not announced

Narrator

not announced

role="rowheader"Implicit: <th scope="row">

Supported ARIA States

aria-sortaria-rowindex
Speakable Output
NVDA

row header January

JAWS

January row header

VoiceOver

January, row header

Narrator

January, row header

role="separator"Implicit: <hr>

Supported ARIA States

aria-valuenowaria-valueminaria-valuemaxaria-orientation
Speakable Output
NVDA

separator

JAWS

separator

VoiceOver

separator

Narrator

separator

role="table"Implicit: <table>

Supported ARIA States

aria-labelaria-labelledbyaria-colcountaria-rowcount
Speakable Output
NVDA

Pricing table with 3 columns and 5 rows

JAWS

Pricing table 3 columns 5 rows

VoiceOver

Pricing, table, 3 columns, 5 rows

Narrator

Pricing, table, 3 columns, 5 rows

role="term"Implicit: <dt>
Speakable Output
NVDA

Accessibility

JAWS

Accessibility

VoiceOver

Accessibility, term

Narrator

Accessibility

role="toolbar"

Supported ARIA States

aria-labelaria-labelledbyaria-activedescendantaria-orientation
Speakable Output
NVDA

Formatting toolbar

JAWS

Formatting tool bar

VoiceOver

Formatting, toolbar

Narrator

Formatting, toolbar


Live Region Roles

5

Live region roles indicate areas of the page that update dynamically. Screen readers announce changes to these regions without requiring focus.

role="alert"

Supported ARIA States

aria-atomicaria-live (implicit: assertive)
Speakable Output
NVDA

alert Form submission failed. Please check your inputs.

JAWS

Alert Form submission failed. Please check your inputs.

VoiceOver

Form submission failed. Please check your inputs., alert

Narrator

alert, Form submission failed. Please check your inputs.

role="log"

Supported ARIA States

aria-atomicaria-live (implicit: polite)
Speakable Output
NVDA

log

JAWS

log

VoiceOver

log

Narrator

log

role="marquee"

Supported ARIA States

aria-atomicaria-live (implicit: off)
Speakable Output
NVDA

marquee

JAWS

marquee

VoiceOver

marquee

Narrator

marquee

role="status"

Supported ARIA States

aria-atomic (implicit: true)aria-live (implicit: polite)
Speakable Output
NVDA

3 items in cart

JAWS

3 items in cart

VoiceOver

3 items in cart, status

Narrator

3 items in cart, status

role="timer"

Supported ARIA States

aria-atomicaria-live
Speakable Output
NVDA

timer 5 minutes remaining

JAWS

5 minutes remaining timer

VoiceOver

5 minutes remaining, timer

Narrator

5 minutes remaining, timer


Window Roles

2

Window roles define overlay containers like dialogs and alert dialogs that demand or request user interaction.

role="alertdialog"

Supported ARIA States

aria-label (required)aria-labelledbyaria-describedbyaria-modal
Speakable Output
NVDA

Delete account alert dialog Are you sure? This cannot be undone.

JAWS

Alert dialog Delete account Are you sure? This cannot be undone.

VoiceOver

Delete account, alert, web dialog, Are you sure? This cannot be undone.

Narrator

Delete account, alert dialog, Are you sure? This cannot be undone.

role="dialog"Implicit: <dialog>

Supported ARIA States

aria-label (required)aria-labelledbyaria-modal
Speakable Output
NVDA

Edit profile dialog

JAWS

Edit profile dialog

VoiceOver

Edit profile, web dialog

Narrator

Edit profile, dialog

Key Differences Across Screen Readers

Screen readers differ in announcement order, terminology, and level of detail. Understanding these differences helps you write more inclusive content and verify your accessibility testing covers real-world behavior.

Announcement Order

NVDA and JAWS typically announce the role after the name (“Submit button”), while VoiceOver and Narrator separate them with a comma and often put the role after the name (“Submit, button”). This comma-separated pattern is what Speakable models for macOS/iOS and Windows Narrator output.

Terminology Variations

NVDA uses “landmark” for landmark roles while JAWS uses “region.” VoiceOver says “web dialog” instead of just “dialog.” Checkboxes are “not checked” in NVDA but “unticked” in VoiceOver. These variations are modeled in Speakable’s per-reader renderers.

Position and Count Information

NVDA and Narrator include position information for options and radio buttons (“3 of 195”), while JAWS typically omits this. VoiceOver includes position for radio buttons but not always for options. Speakable includes position info where the respective reader would announce it in its default verbosity settings.

State Announcements

Each reader handles states differently. NVDA says “collapsed” or “expanded,” JAWS may omit the state in some contexts, VoiceOver often announces it before the role, and Narrator places it after. Required fields are announced as “required” by all readers but at different positions in the output string.

Using This Reference with Speakable

When Speakable analyzes your HTML, it maps elements to their implicit or explicit ARIA roles and generates output based on the patterns shown above. You can use this reference to:

1.

Verify that your elements have the correct implicit role by using native HTML elements instead of ARIA overrides.

2.

Understand why Speakable output differs between readers. It reflects real-world variation, not bugs.

3.

Check which ARIA states are required for a role to ensure screen readers get complete information.

4.

Cross-reference with the Common Mistakes page when roles like button, link, or heading show unexpected output.

Best Practices

Prefer native HTML elements. Use <button> instead of <div role="button">. Native elements provide keyboard support and states for free.

Always provide accessible names for landmarks. A bare <nav> is announced as just “navigation”. Add aria-label to differentiate multiple landmarks of the same type.

Include required states. Roles like checkbox require aria-checked. Without it, the screen reader cannot communicate the control’s state.

Test with multiple readers. An element that sounds clear in NVDA may be confusing in VoiceOver due to different announcement order. Speakable shows all four outputs simultaneously to catch these gaps.

Don’t override implicit roles. Adding role="button" to a <button> is redundant. Adding conflicting roles (like role="link" on a button) creates confusing output.

Related Pages