ARIA screen reader support
Is role="alert" announced? Does aria-describedby get read when you Tab to the field? Screen readers don’t all do what ARIA asks, and they change from one release to the next. These are the results we heard ourselves, in the screen reader and browser combinations people use most, with the steps to check them on your own site.
Combinations from WebAIM's screen reader survey (2026) (opens in a new tab).
Screen reader shortcuts by task: the keys for each test, and how much one press of Down Arrow reads, which decides how long a waiting message waits.
Test them yourself: one small example of each attribute, with what to do and what to listen for.
role="alert"
An assertive live region: ARIA asks for its changes to be presented at once.
| Screen reader | Down Arrow | Say all |
|---|---|---|
| JAWS | Read once the chunk being read ends | Not read |
| NVDA | Read once the paragraph ends | Read once the paragraph ends |
| JAWS | Couldn’t test | Couldn’t test |
| NVDA | Not read | Not read |
| NVDA | Read once the paragraph ends | Read once the paragraph ends |
| JAWS | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| TalkBack | Not tested | Not tested |
aria-live="assertive"
Asks for each change to the region to be presented at once.
Guides that use it
| Screen reader | Down Arrow | Say all |
|---|---|---|
| JAWS | Read once the chunk being read ends | Not tested |
| NVDA | Read once the chunk being read ends | Not tested |
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| TalkBack | Not tested | Not tested |
role="status"
A polite live region: its changes wait until the screen reader has finished what it is saying.
Guides that use it (17)
- Autocomplete fields with silent, mouse-only suggestions
- Tooltips that vanish on approach and can't be dismissed
- Toasts that vanish before you can read or undo them
- Dropdowns and fields that change the page on their own
- Div buttons that can't be reached with Tab
- Add to cart buttons that change a badge and say nothing
- Form success and error messages that are never announced
- Loading spinners that screen readers never announce
- Progress bars and meters that screen readers can't read
- Single-page app route changes that are never announced
- Search and filter results that update without a word
- Status messages that are shown but never announced
- Alerts that cut off VoiceOver for routine updates
- Drag-and-drop boards that only a mouse can use
- Task boards that say nothing when a card moves
- Sortable lists that move only by dragging, or in silence
- Support that can only be reached by phone
| Screen reader | Down Arrow | Say all |
|---|---|---|
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| TalkBack | Not tested | Not tested |
role="timer"
A live region that is off by default: its changes are not announced.
Guides that use it
| Screen reader | Down Arrow | Say all |
|---|---|---|
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| TalkBack | Not tested | Not tested |
aria-describedby
Gives an element a description, such as a hint or an error, from text elsewhere on the page.
Guides that use it (18)
- Disabled buttons that can't be found or say why
- Buttons and links named differently from their text
- Date pickers that can't be typed in or used by keyboard
- Confirmation dialogs that don't read out their question
- Tooltips that vanish on approach and can't be dismissed
- Form errors that don't say how to fix them
- Checkouts that take payment with no review or undo
- Error summaries that don't say which fields failed
- One-time code boxes that won't take a pasted code
- Checkout forms that ask for the same address twice
- Dropdowns and fields that change the page on their own
- Keyboard traps in editors and embedded widgets
- Hold-to-confirm buttons and other timed key presses
- Right-click, long-press and swipe actions with no button
- Drag-and-drop boards that only a mouse can use
- Sortable lists that move only by dragging, or in silence
- Image uploads that never ask for alt text
- Session timeouts with no warning or way to extend
| Screen reader | Tab to it | Down Arrow |
|---|---|---|
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| TalkBack | Not tested | Not tested |
aria-invalid="true"
Marks a field whose value failed a check.
| Screen reader | Tab to it | Down Arrow |
|---|---|---|
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| TalkBack | Not tested | Not tested |
aria-current="page"
Marks the link to the page you are on, in a menu, breadcrumbs or pagination.
Guides that use it (7)
- Date pickers that can't be typed in or used by keyboard
- Carousels that keyboard and screen reader users can't use
- Step indicators that mark the current step only by its look
- Breadcrumbs that mark the current page only by its look
- Navigation menus that change order or names between pages
- Navigation that marks the current page only by its look
- Pagination links that don't say which page or where they go
| Screen reader | Tab to it | Down Arrow |
|---|---|---|
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| TalkBack | Not tested | Not tested |
aria-expanded
Says whether a button’s menu or section is open.
Guides that use it (12)
- Autocomplete fields with silent, mouse-only suggestions
- Custom dropdowns that keyboards and screen readers can't use
- Multi-selects with silent ticks and mouse-only chips
- Tree views keyboards can't open and screen readers flatten
- Floating buttons and panels that keyboard focus reaches last
- Search panels that close on Tab and drop keyboard focus
- Accordions that don't say whether a panel is open
- Show and hide buttons that don't say whether they are open
- Dropdowns and fields that change the page on their own
- Menu-only sites with no search or site map
- Hover-only dropdowns, or ones that never say they are open
- Fixed-height boxes that cut off enlarged text
| Screen reader | Press it | Tab to it |
|---|---|---|
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| TalkBack | Not tested | Not tested |
aria-pressed
Makes a button a toggle that is on or off.
Guides that use it (9)
- Toggle buttons that don't say whether they are pressed
- Toggle switches that don't say whether they are on
- Videos without audio description of what they show
- Video players with no captions button in the control bar
- Headings set as pictures of text in a brand font
- Videos a keyboard can't play, or with no captions button
- Accessibility settings that need the feature they turn on
- Pinch, drag and tilt gestures with no button
- Animations that ignore the reduced-motion setting
| Screen reader | Press it | Tab to it |
|---|---|---|
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| TalkBack | Not tested | Not tested |
lang
Names the language of a phrase, so a screen reader can read it with the right voice.
| Screen reader | Down Arrow | Say all |
|---|---|---|
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| NVDA | Not tested | Not tested |
| JAWS | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| VoiceOver | Not tested | Not tested |
| TalkBack | Not tested | Not tested |
<dialog>
A dialog opened with showModal(): focus moves into it.
Guides that use it (7)
- Date pickers that can't be typed in or used by keyboard
- Confirmation dialogs that don't read out their question
- Cookie banners that hide keyboard focus and come last
- Modals that leave keyboard focus behind them
- Hold-to-confirm buttons and other timed key presses
- Image uploads that never ask for alt text
- Session timeouts with no warning or way to extend
| Screen reader | Open it |
|---|---|
| JAWS | Not tested |
| NVDA | Not tested |
| JAWS | Not tested |
| NVDA | Not tested |
| NVDA | Not tested |
| JAWS | Not tested |
| VoiceOver | Not tested |
| VoiceOver | Not tested |
| TalkBack | Not tested |
How we test
- Down Arrow
- Moving on with Down Arrow or a swipe; how much one press reads depends on the combination
- Say all
- Reading a long paragraph without stopping
- Tab to it
- Moving focus to it with Tab
- Press it
- Pressing it with Enter or Space, focus staying on it
- Open it
- Pressing the button that opens it