[Skip navigation links]
Login

HTML attributes Screen reader compatibility

Last updated: October 16, 2021

Shows how different HTML attributes behave in commonly used screen readers.

The results include two types of test:

alt

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (95% average)89% 97% 100% 94% 93% 100% 99% 89%
Should work. Works in 100% Heading is img with altGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% Link containing img with altGoodGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 1% - 25% area and img with alt attributesBadBetterGoodGoodBetterGoodBetterBad
Should work. Fails in 1% - 25% area with alt attribute and img with null altBadGoodGoodGoodBetterGoodGoodGood
Should work. Fails in 1% - 25% button containing img with altBetterGoodGoodBetterGoodGoodGoodGood
Should work. Fails in 1% - 25% button with aria-label containing img with null altGoodGoodGoodBetterGoodGoodGoodGood
Should work. Works in 100% button with title containing img with null altGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% img with altGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% img with null altGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% input type=image with altGoodGoodGoodGoodGoodGoodGoodGood
Should fail. Fails in 76% - 100% Definition lists with images as bulletsBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% Heading is img alt=filenameBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% Heading is img with `alt=BadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% Heading is img with no altBadBadBadBadBadBadBadBad
Should fail. Fails in 51% - 75% Image map with no name attributeBadBetterBadGoodBetterBadBadBad
Should fail. Fails in 76% - 100% Link containing img with null altBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% Link containing img without altBadBadBadBadBadBadBadBad
Should fail. Fails in 1% - 25% Link with aria-label containing img with no altGoodBetterGoodBadBetterGoodBetterGood
Should fail. Fails in 1% - 25% Link with aria-labelledby containing img with no altBadBetterGoodBadBetterGoodBetterGood
Should fail. Fails in 1% - 25% Link with title containing img with no altGoodBetterGoodWorseBetterGoodBetterGood
Should fail. Fails in 26% - 50% applet with alt attributeBadBetterGoodBadBetterGoodBetterGood
Should fail. Fails in 76% - 100% area with no altBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% area with null altBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% button containing img with no altBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% button containing img with null altBadBadBadBadBadBadBadBad
Should fail. Fails in 1% - 25% button with aria-label containing img with no altGoodGoodGoodGoodGoodGoodGoodGood
Should fail. Fails in 1% - 25% button with title containing img with no altGoodGoodGoodBadGoodGoodGoodGood
Should fail. Fails in 76% - 100% embed with alt attributeBadBadBadBadBadBadBetterBad
Should fail. Fails in 51% - 75% img with alt set to ASCII art smileyBadBadBadBadBadBadGoodGood
Should fail. Fails in 76% - 100% img with alt set to src filenameBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% img with null altand non-null title attributesBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% img with null alt and non-null aria-label attributesBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% img with null alt and non-null aria-labelledby attributesBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% img without altBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% input type=image with no altBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% input type=image with null altBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% object with alt attributeBadBetterBetterBadBetterBadBetterBad

aria-describedby

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (92% average)100% 100% 100% 81% 95% 100% 78% 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 attributeGoodGoodGoodBetterBetterGoodBadGood
Should fail. Fails in 76% - 100% img with aria-describedbyBadBadBadBadBadBadGoodBad

aria-label

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (74% average)76% 78% 83% 72% 71% 86% 81% 65%
Should work. Fails in 1% - 25% Link text replaced by aria-label attributeBetterBetterGoodGoodBetterGoodGoodGood
Should work. Fails in 26% - 50% applet with aria-label attributeGoodBetterGoodBetterBetterGoodBetterGood
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 attributeGoodBetterBadBetterBadBadBetterBad
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 attributeGoodBetterGoodBadBetterGoodBetterBad
Should work. Fails in 51% - 75% video with aria-label attributeGoodBetterBadBadBadBadBetterBetter
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 (65% average)39% 77% 81% 69% 57% 84% 67% 61%
Should work. Fails in 1% - 25% Link text replaced by aria-labelledby attributeBadBetterGoodBetterGoodGoodGoodGood
Should work. Fails in 26% - 50% applet with aria-labelledby attributeBadBetterGoodBetterBetterGoodBetterGood
Should work. Fails in 26% - 50% area with aria-labelledby attributeBadBetterGoodBetterBetterGoodBadBad
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 attributeBadBetterBadBetterBadBadBetterBad
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 51% - 75% object with aria-labelledby attributeBadBetterGoodBadBetterGoodBetterBad
Should work. Fails in 76% - 100% video with aria-labelledby attributeBadBetterBadBadBadBadBetterBetter
Should fail. Fails in 1% - 25% 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 (92% 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

for

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (100% average)100% 100% 100% 100% 100% 100% 100% 100%
Should work. Works in 100% input type=text with label forGoodGoodGoodGoodGoodGoodGoodGood
Should fail. Fails in 76% - 100% input type=text with blank label forBadBadBadBadBadBadBadBad
Should fail. Fails in 51% - 75% label elements reference controls with duplicate idsBadBadBadBadBadBadBadBad

headers

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (55% average)0% 100% 100% 86% 44% 100% 0% 0%
Should work. Fails in 26% - 50% Data table with td headers attributeBadGoodGoodBetterBadGoodBadBad

href

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Should fail. Fails in 51% - 75% Link with onclick but no hrefBadBadBadBadBadBadBadBad

id

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (92% average)82% 100% 100% 97% 90% 100% 82% 70%
Should work. Fails in 26% - 50% Data table with td headers attributeBadGoodGoodBetterBadGoodBadBad
Should work. Works in 100% input type=text with aria-labelledby attributeGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% input type=text with label forGoodGoodGoodGoodGoodGoodGoodGood
Should fail. Fails in 76% - 100% input type=text with blank label forBadBadBadBadBadBadBadBad
Should fail. Fails in 1% - 25% input with aria-labelledby pointing to role=presentation elementGoodGoodGoodBetterGoodGoodGoodGood
Should fail. Fails in 51% - 75% label elements reference controls with duplicate idsBadBadBadBadBadBadBadBad

ismap

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Should fail. Fails in 76% - 100% img with server side image mapBadBadBadBadBadBadBadBad

lang

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (100% average)100% 100% 100% 100% 100% 100% 100% 100%
Should work. Works in 100% Page with lang set on the html and p elementsGoodGoodGoodGoodGoodGoodGoodGood

media

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Should fail. Fails in 76% - 100% CSS stylesheet link with media=auralBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% CSS stylesheet link with media=speechBadBadBadBadBadBadBadBad

name

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (67% average)40% 60% 100% 94% 45% 100% 74% 11%
Should work. Fails in 1% - 25% area and img with alt attributesBadBetterGoodGoodBetterGoodBetterBad
Should work. Fails in 1% - 25% area with alt attribute and img with null altBadGoodGoodGoodBetterGoodGoodGood
Should work. Fails in 26% - 50% area with aria-label attributeBadBetterGoodBetterBetterGoodBetterBad
Should work. Fails in 26% - 50% area with aria-labelledby attributeBadBetterGoodBetterBetterGoodBadBad
Should work. Fails in 26% - 50% area with title attributeBadBadGoodGoodBadGoodBetterBad
Should fail. Fails in 51% - 75% Image map with no name attributeBadBetterBadGoodBetterBadBadBad
Should fail. Fails in 76% - 100% area with no altBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% area with null altBadBadBadBadBadBadBadBad

role

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (77% average)63% 74% 75% 94% 92% 94% 71% 63%
Should work. Fails in 1% - 25% ARIA role=headingBetterGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 51% - 75% Data table with role=columnheader headers but no thBadBadBadGoodWorseWorseBadBad
Should work. Fails in 1% - 25% Data table with role=gridBetterGoodGoodBetterBetterGoodBetterBetter
Should work. Fails in 1% - 25% Layout table with role=presentationGoodGoodGoodGoodGoodGoodGoodBetter
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

scope

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (53% average)0% 25% 100% 100% 100% 100% 0% 0%
Should work. Fails in 26% - 50% Data table with th scope on cell headersBadBetterGoodGoodGoodGoodBadBad
Should fail. Fails in 26% - 50% Data table th cell headers with no scopeBadBetterGoodBetterBetterGoodBadBad

summary

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (81% average)100% 100% 100% 86% 78% 100% 86% 0%
Should work. Fails in 1% - 25% Data table with summary and thGoodGoodGoodBetterBetterGoodBetterBad
Should fail. Fails in 76% - 100% Data table with summary but no thBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% Data table with null summary and no thBadBadBadBadBadBadBadBad

target

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Should fail. Fails in 76% - 100% Link target opens in new windowBadBadBadBadBadBadBetterBetter

title

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (71% average)63% 69% 83% 73% 70% 85% 71% 57%
Should work. Fails in 1% - 25% Click Here link with title attributeBadGoodGoodBetterBetterGoodBetterBetter
Should work. Works in 100% Link containing img with titleGoodGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 76% - 100% abbr with titleBadBadBadBadBadBadBadBad
Should work. Fails in 26% - 50% applet with title attributeBadBetterGoodBadBetterGoodBetterGood
Should work. Fails in 26% - 50% area with title attributeBadBadGoodGoodBadGoodBetterBad
Should work. Fails in 76% - 100% audio with title attributeBadBadBadBadBadBadBadBad
Should work. Fails in 1% - 25% button containing img with title attributeBetterGoodGoodBetterGoodGoodBadBad
Should work. Works in 100% button with title containing img with null altGoodGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 76% - 100% embed with title attributeBadBetterBadBadBadBadBetterBad
Should work. Fails in 1% - 25% iframe with title attributeBadBadGoodGoodBetterGoodGoodGood
Should work. Works in 100% img with titleGoodGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 1% - 25% input type=image with title attributeGoodGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 1% - 25% input type=text with title attributeBadBetterGoodGoodGoodGoodGoodGood
Should work. Fails in 51% - 75% object with title attributeBadBetterGoodBadBetterGoodBetterBad
Should work. Fails in 51% - 75% video with title attributeGoodBetterBadBadBadBadBetterBetter
Should fail. Fails in 1% - 25% Link with title containing img with no altGoodBetterGoodWorseBetterGoodBetterGood
Should fail. Fails in 76% - 100% acronym with titleBadBadBadBadBadBadBadBad
Should fail. Fails in 1% - 25% button with title containing img with no altGoodGoodGoodBadGoodGoodGoodGood
Should fail. Fails in 51% - 75% iframe with title matching frame filenameBadBadBadGoodBadBadBadGood
Should fail. Fails in 1% - 25% iframe with blank titleGoodBadGoodGoodBetterGoodBadGood
Should fail. Fails in 76% - 100% img with null altand non-null title attributesBadBadBadBadBadBadBadBad

usemap

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (67% average)40% 60% 100% 94% 45% 100% 74% 11%
Should work. Fails in 1% - 25% area and img with alt attributesBadBetterGoodGoodBetterGoodBetterBad
Should work. Fails in 1% - 25% area with alt attribute and img with null altBadGoodGoodGoodBetterGoodGoodGood
Should work. Fails in 26% - 50% area with aria-label attributeBadBetterGoodBetterBetterGoodBetterBad
Should work. Fails in 26% - 50% area with aria-labelledby attributeBadBetterGoodBetterBetterGoodBadBad
Should work. Fails in 26% - 50% area with title attributeBadBadGoodGoodBadGoodBetterBad
Should fail. Fails in 51% - 75% Image map with no name attributeBadBetterBadGoodBetterBadBadBad
Should fail. Fails in 76% - 100% area with no altBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% area with null altBadBadBadBadBadBadBadBad

xml:lang

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Reliability when used correctly (38% average)0% 0% 100% 0% 0% 100% 0% 0%
Should work. Fails in 51% - 75% Page with xml:lang set on the html and p elementsBadBadGoodBadBadGoodBadBad

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: