[Skip navigation links]
Login

WAI-ARIA Screen reader compatibility

Last updated: January 11, 2020

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

The results include two types of test:

ARIA support by user agent

ARIA role and attribute support in different screen reader / browser combinations. Expected failures (marked with Expected to Fail) 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 2019.1912.1 with Chrome 7990%
JAWS IEJAWS 2019.1912.1 with IE1186%15 better
JAWS FirefoxJAWS 2019.1912.1 with FF6876%8 better
NVDA ChromeNVDA 2019.2 with Chrome 7983%
NVDA IENVDA 2019.2 with IE1164%5 better
NVDA FirefoxNVDA 2019.2 with FF6881%8 better
VoiceOver MacVoiceOver macOS 10.14 with Safari 13.074%6 better
VoiceOver iOSVoiceOver iOS 12.4 with Safari iOS 12.466%3 better
WindowEyes IEWindowEyes 9.2 with IE1173%10 better 1 worse
Dolphin IEDolphin SR 15.05 with IE1152%
SaToGo IESaToGo 3.4.96.0 with IE1122%
Average Including older versions 69%

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%201468%201568%201669%201772%201877%201978%

ARIA roles

columnheader

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (39% average)0% 0% 0% 100% 100% 100% 0% 0%
Should work. Fails in 51% - 75% Data table with role=columnheader headers but no thBadBadBadGoodGoodGoodBadBad

grid

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (84% average)86% 100% 100% 75% 75% 100% 83% 83%
Should work. Fails in 1% - 25% Data table with role=gridBetterGoodGoodBetterBetterGoodBetterBetter

heading

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (90% average)71% 100% 100% 100% 100% 100% 100% 100%
Should work. Fails in 1% - 25% ARIA role=headingBetterGoodGoodGoodGoodGoodGoodGood
Should fail. Fails in 76% - 100% Nested ARIA headingsBadBadBadBadBadBadBadBad

note

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Should fail. Fails in 76% - 100% Data table with role=noteBetterBadBadBadBadBadBadBad

presentation

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (91% average)100% 100% 100% 100% 100% 100% 100% 67%
Should work. Fails in 1% - 25% Layout table with role=presentationGoodGoodGoodGoodGoodGoodGoodBad
Should fail. Fails in 76% - 100% Data table with role=presentationBadBadBadBadBadBadBadBad
Should fail. Fails in 1% - 25% input with aria-labelledby pointing to role=presentation elementGoodGoodGoodBetterGoodGoodGoodGood

row

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (39% average)0% 0% 0% 100% 100% 100% 0% 0%
Should work. Fails in 51% - 75% Data table with role=columnheader headers but no thBadBadBadGoodGoodGoodBadBad

rowgroup

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (39% average)0% 0% 0% 100% 100% 100% 0% 0%
Should work. Fails in 51% - 75% Data table with role=columnheader headers but no thBadBadBadGoodGoodGoodBadBad

ARIA attributes

aria-describedby

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (90% average)100% 100% 100% 81% 94% 100% 79% 100%
Should work. Fails in 1% - 25% Click Here link with aria-describedby attributeGoodGoodGoodBetterBetterGoodBetterGood
Should work. Fails in 1% - 25% input type=text with aria-describedby attributeGoodGoodGoodBetterBetterGoodBetterGood
Should fail. Fails in 76% - 100% img with aria-describedbyBadBadBadBadBadBadGoodBad

aria-label

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (71% average)76% 72% 83% 72% 67% 89% 77% 64%
Should work. Fails in 1% - 25% Link text replaced by aria-label attributeBetterBetterGoodGoodBetterGoodGoodGood
Should work. Fails in 26% - 50% applet with aria-label attributeGoodBetterGoodBetterBetterGoodBadGood
Should work. Fails in 26% - 50% area with aria-label attributeBadBetterGoodBetterBetterGoodBetterBad
Should work. Fails in 76% - 100% audio with aria-label attributeBadBadBadBadBadBadBadBad
Should work. Fails in 1% - 25% button containing img with aria-labelBetterGoodGoodBetterGoodGoodGoodGood
Should work. Fails in 1% - 25% button with aria-label containing img with null altGoodGoodGoodBetterGoodGoodGoodGood
Should work. Fails in 51% - 75% embed with aria-label attributeGoodBetterBadBetterBadGoodBadBad
Should work. Fails in 1% - 25% img with aria-labelBetterGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 1% - 25% input type=image with aria-label attributeGoodGoodGoodBetterGoodGoodGoodGood
Should work. Fails in 1% - 25% input type=text with aria-label attributeBadBetterGoodGoodGoodGoodGoodGood
Should work. Fails in 51% - 75% object with aria-label attributeGoodBadGoodBadBadGoodBadBad
Should work. Fails in 51% - 75% video with aria-label attributeGoodBadBadBadBadBadBetterBetter
Should fail. Fails in 1% - 25% Link with aria-label containing img with no altGoodBetterGoodBadBetterGoodBetterGood
Should fail. Fails in 1% - 25% button with aria-label containing img with no altGoodGoodGoodGoodGoodGoodGoodGood
Should fail. Fails in 76% - 100% img with null alt and non-null aria-label attributesBadBadBadBadBadBadBadBad

aria-labelledby

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (61% average)39% 74% 81% 69% 54% 88% 62% 61%
Should work. Fails in 1% - 25% Link text replaced by aria-labelledby attributeBadBetterGoodBetterGoodGoodGoodGood
Should work. Fails in 51% - 75% applet with aria-labelledby attributeBadBetterGoodBetterBetterGoodBadGood
Should work. Fails in 51% - 75% area with aria-labelledby attributeBadBadGoodBetterBetterGoodBadBad
Should work. Fails in 76% - 100% audio with aria-labelledby attributeBadBadBadBadBadBadBadBad
Should work. Fails in 26% - 50% button containing img with aria-labelledbyBadGoodGoodBetterBadGoodGoodGood
Should work. Fails in 76% - 100% embed with aria-labelledby attributeBadBetterBadBetterBadGoodBadBad
Should work. Fails in 1% - 25% img with aria-labelledbyBadGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 1% - 25% input type=image with aria-labelledby attributeBadGoodGoodBetterGoodGoodGoodGood
Should work. Works in 100% input type=text with aria-labelledby attributeGoodGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 76% - 100% object with aria-labelledby attributeBadBadGoodBadBadGoodBadBad
Should work. Fails in 76% - 100% video with aria-labelledby attributeBadBadBadBadBadBadBetterBetter
Should fail. Fails in 26% - 50% Link with aria-labelledby containing img with no altBadBetterGoodBadBetterGoodBetterGood
Should fail. Fails in 76% - 100% img with null alt and non-null aria-labelledby attributesBadBadBadBadBadBadBadBad
Should fail. Fails in 1% - 25% input with aria-labelledby pointing to role=presentation elementGoodGoodGoodBetterGoodGoodGoodGood

aria-level

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (90% average)71% 100% 100% 100% 100% 100% 100% 100%
Should work. Fails in 1% - 25% ARIA role=headingBetterGoodGoodGoodGoodGoodGoodGood
Should fail. Fails in 76% - 100% Nested ARIA headingsBadBadBadBadBadBadBadBad

role

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (76% average)63% 74% 75% 94% 94% 100% 70% 60%
Should work. Fails in 1% - 25% ARIA role=headingBetterGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 51% - 75% Data table with role=columnheader headers but no thBadBadBadGoodGoodGoodBadBad
Should work. Fails in 1% - 25% Data table with role=gridBetterGoodGoodBetterBetterGoodBetterBetter
Should work. Fails in 1% - 25% Layout table with role=presentationGoodGoodGoodGoodGoodGoodGoodBad
Should fail. Fails in 76% - 100% Data table with role=noteBetterBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% Data table with role=presentationBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% Nested ARIA headingsBadBadBadBadBadBadBadBad
Should fail. Fails in 1% - 25% input with aria-labelledby pointing to role=presentation elementGoodGoodGoodBetterGoodGoodGoodGood

Key

Tests expected to fail (due to authoring errors) are marked with Expected to Fail.

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:

In the "What the user hears" column: