WAI-ARIA Screen reader compatibility

ARIA
Nov 26, 2024

Shows how different WAI-ARIA attributes behave in commonly used screen readers.

The results include two types of test:

  • Expected to work - these tests show support when accessibility features are used correctly
  • Expected to fail - these tests show what happens when accessibility features are used incorrectly

ARIA support by user agent

ARIA role and attribute support in different screen reader / browser combinations. Expected failures are not included in the reliability graph.

The solid area in the graph shows percentage of tests that pass in all tested interaction modes. The cross hatched area shows partial passes that only work in some interaction modes.

An example of a partial pass is when form labels are read when tabbing, but ignored in browse mode.

ComboVersionsReliabilityTest Changes
JAWS ChromeJAWS 2024.2409.2 with Chrome 131
JAWS EdgeJAWS 2024.2409.2 with Edge 131
JAWS FirefoxJAWS 2024.2409.2 with FF 128
10 better
JAWS IEJAWS 2019.1912.1 with IE11
15 better
NVDA ChromeNVDA 2024.4 with Chrome 131
1 better
NVDA EdgeNVDA 2024.4 with Edge 131
4 better
NVDA FirefoxNVDA 2024.4 with FF 128
13 better
NVDA IENVDA 2019.2 with IE11
5 better
VoiceOver MacVoiceOver macOS 14.6 with Safari 17.6
13 better
VoiceOver iOSVoiceOver iOS 17.7 with Safari iOS 17.7
10 better
WindowEyes IEWindowEyes 9.2 with IE11
10 better 1 worse
Dolphin IEDolphin SR 15.05 with IE11
SaToGo IESaToGo 3.4.96.0 with IE11
Average Including older versions

The average includes all versions, but some browser/AT combinations have tests for multiple versions (NVDA / JAWS / VoiceOver), while others only have tests for a single version (SaToGo and Dolphin).

ARIA support trend

This graph shows reliability over time for ARIA in NVDA, JAWS and Voiceover. Other screen readers don't have enough historical data yet to plot trends.

100%80%60%40%20%0%201467%201567%201668%201771%201876%201978%202083%202183%202284%202386%202487%

ARIA roles

columnheader

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (30% average)0% 0% 0% 40% 69% 57% 9% 9%
30%Data table with role=columnheader headers but no th

grid

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (81% average)100% 100% 100% 100% 85% 100% 91% 9%
81%Data table with role=grid

heading

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (94% average)100% 100% 100% 100% 100% 100% 100% 100%
94%ARIA role=heading
Issues when used incorrectly (97% average)100% 100% 100% 100% 100% 100% 100% 73%
97%Nested ARIA headings

note

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Issues when used incorrectly (89% average)100% 100% 100% 100% 92% 100% 100% 100%
89%Data table with role=note

presentation

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (90% average)100% 100% 100% 63% 100% 67% 100% 87%
85%Interactive iframe with role=presentation and aria-label attribute
85%Interactive iframe with role=presentation and title attribute
86%Interactive iframe with role=presentation and no accessible name
95%Layout table with role=presentation
Issues when used incorrectly (40% average)38% 39% 37% 38% 41% 37% 37% 50%
96%Data table with role=presentation
48%Interactive iframe with role=presentation and negative tabindex and no accessible name
3%input with aria-labelledby pointing to role=presentation element

row

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (30% average)0% 0% 0% 40% 69% 57% 9% 9%
30%Data table with role=columnheader headers but no th

rowgroup

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (30% average)0% 0% 0% 40% 69% 57% 9% 9%
30%Data table with role=columnheader headers but no th

table

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (96% average)100% 100% 100% 100% 100% 100% 100% 67%
96%Data table with role=table

ARIA attributes

aria-describedby

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (93% average)100% 100% 100% 100% 94% 100% 82% 100%
93%Click Here link with aria-describedby attribute
94%input type=text with aria-describedby attribute
Issues when used incorrectly (87% average)100% 92% 100% 100% 100% 100% 9% 100%
87%img with aria-describedby

aria-label

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (78% average)86% 83% 85% 82% 74% 84% 85% 70%
85%Interactive iframe with role=presentation and aria-label attribute
92%Link text replaced by aria-label attribute
77%applet with aria-label attribute
76%area with aria-label attribute
1%audio with aria-label attribute
96%button containing img with aria-label
95%button with aria-label containing img with null alt
35%embed with aria-label attribute
96%img with aria-label
98%input type=image with aria-label attribute
92%input type=text with aria-label attribute
58%object with aria-label attribute
33%video with aria-label attribute
Issues when used incorrectly (22% average)20% 21% 20% 20% 21% 20% 22% 29%
8%Link with aria-label containing img with no alt
1%button with aria-label containing img with no alt
100%img with null alt and non-null aria-label attributes

aria-labelledby

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (70% average)84% 82% 81% 81% 61% 83% 71% 67%
95%Link text replaced by aria-labelledby attribute
74%applet with aria-labelledby attribute
59%area with aria-labelledby attribute
0%audio with aria-labelledby attribute
79%button containing img with aria-labelledby
28%embed with aria-labelledby attribute
89%img with aria-labelledby
92%input type=image with aria-labelledby attribute
100%input type=text with aria-labelledby attribute
52%object with aria-labelledby attribute
23%video with aria-labelledby attribute
Issues when used incorrectly (27% average)20% 22% 20% 20% 21% 20% 23% 31%
15%Link with aria-labelledby containing img with no alt
100%img with null alt and non-null aria-labelledby attributes
3%input with aria-labelledby pointing to role=presentation element

aria-level

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (94% average)100% 100% 100% 100% 100% 100% 100% 100%
94%ARIA role=heading
Issues when used incorrectly (97% average)100% 100% 100% 100% 100% 100% 100% 73%
97%Nested ARIA headings

role

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (77% average)83% 79% 81% 79% 90% 84% 78% 53%
94%ARIA role=heading
30%Data table with role=columnheader headers but no th
81%Data table with role=grid
96%Data table with role=table
86%Interactive iframe with role=presentation and no accessible name
95%Layout table with role=presentation
Issues when used incorrectly (63% average)60% 64% 60% 60% 64% 60% 62% 71%
89%Data table with role=note
96%Data table with role=presentation
97%Nested ARIA headings
3%input with aria-labelledby pointing to role=presentation element

Key

  • Stable - works, or doesn't cause problems, in all versions of a specific combination of screen reader and browser
  • Better - works, or doesn't cause problems, in the most recent version of a specific combination of screen reader and browser (improvement)
  • Worse - causes problems in the most recent version of a specific combination of screen reader and browser, but used to work in older versions (regression)
  • Broken - causes problems in all versions of a specific combination of screen reader and browser

Test notes

All tests were carried out with screen reader factory settings. JAWS in particular has a wide variety of settings controlling exactly what gets spoken.

Screen readers allow users to interact in different modes, and can produce very different results in each mode. The modes used in these tests are:

  • Reading Content read using the “read next” command in a screen reader
  • Tabbing Content read using the “tab” key in a screen reader
  • Heading Content read using the “next heading” key in a screen reader
  • Touch Content read when touching an area of screen on a mobile device

In the “What the user hears” column:

  • Commas represent short pauses in screen reader voicing
  • Full Stops represent places where voicing stops, and the “read next” or “tab” or “next heading” command is pressed again
  • Ellipsis … represent a long pause in voicing
  • (Brackets) represent voicing that requires a keystroke to hear