HTML elements Screen reader compatibility

Last updated: October 16, 2016

Shows how different HTML elements behave in commonly used screen readers

The results include two types of test:

a

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (85% average)81% 89% 84% 93% 79% 95% 75% 79% 79%
Should work. Fails in 1% - 25% A "click here" link with TITLE attributeBadGoodBetterBetterBetterGoodBadBadGood
Should work. Fails in 1% - 25% A "click here" link with aria-describedby attributeGoodGoodBadBetterBetterGoodBadBadGood
Should work. Fails in 1% - 25% A "click here" link with aria-label attributeBetterBetterGoodBetterGoodGoodGoodGoodBad
Should work. Fails in 1% - 25% A "click here" link with aria-labelledby attributeBadBetterBetterGoodGoodGoodGoodGoodBad
Should work. Works in 100% A link wraps IMG with ALTGoodGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% A link wraps IMG with TITLEGoodGoodGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 26% - 50% FIELDSET containing linksBadBadBadGoodBetterBetterBadBadBad
Should fail. Fails in 26% - 50% A element with ONCLICK but no HREFBadBadBadBadBadBadBadBadGood
Should fail. Fails in 76% - 100% A link TARGET opens in new windowBadBadBadBadBadBadBadBad
Should fail. Fails in 1% - 25% A link with TITLE wraps IMG with no ALTGoodBetterGoodGoodBetterGoodBetterGoodGood
Should fail. Fails in 1% - 25% A link with aria-label wraps IMG with no ALTGoodBetterBetterBetterBetterGoodBetterGoodBad
Should fail. Fails in 26% - 50% A link with aria-labelledby wraps IMG with no ALTBadBetterBadBetterBetterGoodBetterGoodBad
Should fail. Fails in 51% - 75% A link with empty labelBadBadBadBadGoodBetterWorseGood
Should fail. Fails in 76% - 100% A link with non-breaking space as labelBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% A link wraps IMG with null ALTBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% A link wraps IMG without ALTBadBadBadBadBadBadBadBadBad

abbr

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (50% average)67% 67% 40% 80% 0% 0% 100% 100% 0%
Should work. Fails in 26% - 50% ABBR with titleBetterBetterBetterBetterBadBadGoodGoodBad

acronym

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Should fail. Fails in 76% - 100% ACRONYM with titleBadBadBadBadBadBadBadBadBad

applet

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (45% average)50% 63% 63% 26% 25% 50% 50% 25% 33%
Should work. Fails in 1% - 25% APPLET inside FIGURE with FIGCAPTION elementGoodGoodGoodWorseGoodGoodGoodGoodGood
Should work. Fails in 76% - 100% APPLET with ARIA-LABEL attributeGoodWorseBetterBadBadBadBadBadBad
Should work. Fails in 76% - 100% APPLET with ARIA-LABELLEDBY attributeBadWorseBetterBadBadBadBadBad
Should work. Fails in 26% - 50% APPLET with fallback contentBadBetterGoodBetterBadGoodGoodBadBad
Should fail. Fails in 76% - 100% APPLET with ALT attributeBadBetterBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% APPLET with TITLE attributeBadWorseBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% APPLET with no descriptionBadBadBadBadBadBadBadBadBad

area

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (48% average)41% 38% 90% 20% 63% 0% 69% 25% 50%
Should work. Fails in 26% - 50% AREA with ALT attributeBadBadGoodBadWorseBadBetterGoodGood
Should work. Fails in 51% - 75% AREA with TITLE attributeBadBadGoodBadWorseBadBetterBadGood
Should work. Fails in 51% - 75% AREA with aria-label attributeBadBadBetterBadWorseBadBetterBadBad
Should work. Fails in 51% - 75% AREA with aria-labelledby attributeBadBadBetterBadBadBadBetterBadBad
Should fail. Fails in 76% - 100% AREA with no ALT attributeBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% AREA with null ALT attributeBadBadBadBadBadBadBadBadBad
Should fail. Fails in 26% - 50% Image MAP with no NAME attributeBadBadGoodBadBadBadBetterGoodGood

audio

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (2% average)0% 0% 11% 0% 0% 0% 0% 0% 0%
Should work. Fails in 76% - 100% AUDIO with ARIA-LABEL attributeBadBadBadBadBadBadBadBadBad
Should work. Fails in 76% - 100% AUDIO with ARIA-LABELLEDBY attributeBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% AUDIO with TITLE attributeBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% AUDIO with fallback contentBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% AUDIO with no descriptionBadBadBadBadBadBadBadBadBad

button

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (82% average)75% 100% 77% 83% 83% 83% 83% 100% 42%
Should work. Works in 100% BUTTON with TITLE wraps IMG with null ALTGoodGoodGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 1% - 25% BUTTON with aria-label wraps IMG with null ALTGoodGoodBetterGoodGoodGoodGoodGoodBad
Should work. Fails in 26% - 50% BUTTON wraps IMG with TITLE attributeBetterGoodBetterGoodBadBadBetterGoodGood
Should work. Fails in 1% - 25% BUTTON wraps IMG with aria-labelBetterGoodBetterGoodGoodGoodBetterGoodBad
Should work. Fails in 26% - 50% BUTTON wraps IMG with aria-labelledbyBadGoodBetterBadGoodGoodBetterGoodBad
Should work. Fails in 1% - 25% BUTTON wraps only an IMG with an ALT attributeBetterGoodBetterGoodGoodGoodBetterGoodBad
Should fail. Fails in 1% - 25% BUTTON with TITLE wraps IMG with no ALTGoodGoodBadGoodGoodGoodGoodGoodGood
Should fail. Fails in 1% - 25% BUTTON with aria-label wraps IMG with no ALTGoodGoodGoodGoodGoodGoodGoodGoodBad
Should fail. Fails in 76% - 100% BUTTON wraps IMG with no ALTBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% BUTTON wraps IMG with null ALT attributeBadBadBadBadBadBadBadBadBad

caption

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (90% average)100% 100% 75% 75% 100% 100% 100% 100%
Should work. Fails in 1% - 25% Data table with CAPTION and THGoodGoodBetterBetterGoodGoodGoodGood
Should fail. Fails in 76% - 100% Data table with CAPTION but no THBadBadBadBadBadBadGoodBadGood

dd

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Should fail. Fails in 76% - 100% Definition lists with images as bulletsBadBadBadBadBadBadBadBadBad

div

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (82% average)50% 100% 100% 100% 100% 100% 50% 0% 0%
Should work. Fails in 1% - 25% ARIA role=headingBetterGoodGoodGoodGoodGoodBetterBadBad
Should fail. Fails in 76% - 100% Nested ARIA headingsBadBadBadBadBadBadBadBadBad

embed

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (46% average)67% 67% 50% 43% 33% 33% 33% 33% 50%
Should work. Fails in 1% - 25% EMBED inside FIGURE with FIGCAPTIONGoodGoodGoodWorseGoodGoodGoodGoodGood
Should work. Fails in 76% - 100% EMBED with ARIA-LABEL attributeGoodWorseBetterBetterBadBadBadBadBad
Should work. Fails in 76% - 100% EMBED with ARIA-LABELLEDBY attributeBadWorseBetterBetterBadBadBadBad
Should fail. Fails in 76% - 100% EMBED with ALT attributeBadBadBadBetterBadBadBadBadBad
Should fail. Fails in 76% - 100% EMBED with TITLE attributeBadWorseBadBetterBadBadBadBadBad
Should fail. Fails in 76% - 100% EMBED with no descriptionBadBadBadBadBadBadBadBadBad

fieldset

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (74% average)83% 83% 75% 100% 58% 50% 50% 50% 50%
Should work. Fails in 26% - 50% FIELDSET containing linksBadBadBadGoodBetterBetterBadBadBad
Should work. Fails in 1% - 25% Yes/No radio buttons inside FIELDSETGoodGoodGoodGoodBetterBadBetterBadBad
Should fail. Fails in 1% - 25% FIELDSET containing no controls GoodGoodGoodGoodBetterBetterBetterGoodGood
Should fail. Fails in 1% - 25% FIELDSET used to put border round textGoodGoodGoodGoodGoodGoodBetterGoodGood
Should fail. Fails in 51% - 75% FIELDSET with blank LEGENDBadBadBadBadBadBadBadBadBad
Should fail. Fails in 51% - 75% FIELDSET with no LEGENDBadBadBadBadBadBadBadBadBad
Should fail. Fails in 51% - 75% Yes/No radio buttons without FIELDSETBadBadBadBadBadBadBadBadBad

figcaption

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (81% average)100% 100% 100% 53% 57% 57% 100% 100% 100%
Should work. Fails in 1% - 25% APPLET inside FIGURE with FIGCAPTION elementGoodGoodGoodWorseGoodGoodGoodGoodGood
Should work. Fails in 1% - 25% EMBED inside FIGURE with FIGCAPTIONGoodGoodGoodWorseGoodGoodGoodGoodGood
Should work. Fails in 26% - 50% IMG with FIGCAPTIONGoodGoodGoodBadBadBadGoodGoodGood

figure

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (81% average)100% 100% 100% 53% 57% 57% 100% 100% 100%
Should work. Fails in 1% - 25% APPLET inside FIGURE with FIGCAPTION elementGoodGoodGoodWorseGoodGoodGoodGoodGood
Should work. Fails in 1% - 25% EMBED inside FIGURE with FIGCAPTIONGoodGoodGoodWorseGoodGoodGoodGoodGood
Should work. Fails in 26% - 50% IMG with FIGCAPTIONGoodGoodGoodBadBadBadGoodGoodGood

h1-h6

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (100% average)100% 100% 100% 100% 100% 100% 100% 100% 100%
Should work. Works in 100% Heading is IMG with ALTGoodGoodGoodGoodGoodGoodGoodGoodGood
Should fail. Fails in 1% - 25% Empty headingGoodGoodGoodGoodGoodBetterGoodGoodBad
Should fail. Fails in 76% - 100% Heading is IMG ALT=""BadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% Heading is IMG ALT=filenameBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% Heading is IMG with no ALTBadBadBadBadBadBadBadBadBad
Should fail. Fails in 1% - 25% Heading non-breaking spacesGoodBetterGoodBetterBadGoodBetterGoodBad
Should fail. Fails in 76% - 100% Heading only punctuationBadBadBadBadBadBadWorseBadBad
Should fail. Fails in 1% - 25% Heading only spacesGoodGoodGoodGoodGoodBetterGoodGoodBad
Should fail. Fails in 76% - 100% Nested headingsBadBadBadBadBadBadBadBadBad

iframe

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (88% average)83% 67% 100% 90% 75% 100% 88% 100% 100%
Should work. Fails in 1% - 25% IFRAME with fallback contentGoodBadGoodBetterBadGoodBetterGoodGood
Should work. Fails in 1% - 25% IFRAME with titleBadBadGoodBetterGoodGoodGoodGoodGood
Should fail. Fails in 1% - 25% IFRAME with blank titleGoodBadGoodBetterBadGoodBetterGoodGood
Should fail. Fails in 1% - 25% IFRAME with no alt content and no titleGoodBadGoodBetterBadGoodBetterGoodGood
Should fail. Fails in 26% - 50% IFRAME with title matching frame filenameBadBadGoodBadBadGoodBadGoodGood

img

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (77% average)69% 82% 88% 70% 81% 68% 84% 74% 58%
Should work. Works in 100% A link wraps IMG with ALTGoodGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% A link wraps IMG with TITLEGoodGoodGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 26% - 50% AREA with ALT attributeBadBadGoodBadWorseBadBetterGoodGood
Should work. Fails in 51% - 75% AREA with TITLE attributeBadBadGoodBadWorseBadBetterBadGood
Should work. Fails in 51% - 75% AREA with aria-label attributeBadBadBetterBadWorseBadBetterBadBad
Should work. Fails in 51% - 75% AREA with aria-labelledby attributeBadBadBetterBadBadBadBetterBadBad
Should work. Works in 100% BUTTON with TITLE wraps IMG with null ALTGoodGoodGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 1% - 25% BUTTON with aria-label wraps IMG with null ALTGoodGoodBetterGoodGoodGoodGoodGoodBad
Should work. Fails in 26% - 50% BUTTON wraps IMG with TITLE attributeBetterGoodBetterGoodBadBadBetterGoodGood
Should work. Fails in 1% - 25% BUTTON wraps IMG with aria-labelBetterGoodBetterGoodGoodGoodBetterGoodBad
Should work. Fails in 26% - 50% BUTTON wraps IMG with aria-labelledbyBadGoodBetterBadGoodGoodBetterGoodBad
Should work. Fails in 1% - 25% BUTTON wraps only an IMG with an ALT attributeBetterGoodBetterGoodGoodGoodBetterGoodBad
Should work. Works in 100% Heading is IMG with ALTGoodGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% IMG with ALTGoodGoodGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 26% - 50% IMG with FIGCAPTIONGoodGoodGoodBadBadBadGoodGoodGood
Should work. Works in 100% IMG with TITLEGoodGoodGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 1% - 25% IMG with aria-labelBetterGoodGoodGoodGoodGoodGoodBadBad
Should work. Fails in 1% - 25% IMG with aria-labelledbyBadGoodGoodGoodGoodGoodBetterBadBad
Should work. Works in 100% IMG with null ALT attributeGoodGoodGoodGoodGoodGoodGoodGoodGood
Should fail. Fails in 1% - 25% A link with TITLE wraps IMG with no ALTGoodBetterGoodGoodBetterGoodBetterGoodGood
Should fail. Fails in 1% - 25% A link with aria-label wraps IMG with no ALTGoodBetterBetterBetterBetterGoodBetterGoodBad
Should fail. Fails in 26% - 50% A link with aria-labelledby wraps IMG with no ALTBadBetterBadBetterBetterGoodBetterGoodBad
Should fail. Fails in 76% - 100% A link wraps IMG with null ALTBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% A link wraps IMG without ALTBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% AREA with no ALT attributeBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% AREA with null ALT attributeBadBadBadBadBadBadBadBadBad
Should fail. Fails in 1% - 25% BUTTON with TITLE wraps IMG with no ALTGoodGoodBadGoodGoodGoodGoodGoodGood
Should fail. Fails in 1% - 25% BUTTON with aria-label wraps IMG with no ALTGoodGoodGoodGoodGoodGoodGoodGoodBad
Should fail. Fails in 76% - 100% BUTTON wraps IMG with no ALTBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% BUTTON wraps IMG with null ALT attributeBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% Definition lists with images as bulletsBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% Heading is IMG ALT=""BadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% Heading is IMG ALT=filenameBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% Heading is IMG with no ALTBadBadBadBadBadBadBadBadBad
Should fail. Fails in 51% - 75% IMG with ALT set to ASCII art smileyBadBadBadBadGoodGoodBadBadGood
Should fail. Fails in 76% - 100% IMG with ALT set to SRC filenameBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% IMG with aria-describedbyBadBadBadBadGoodBadBetterBadBad
Should fail. Fails in 76% - 100% IMG with null ALT and 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 with server side image mapBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% IMG without ALT attributeBadBadBadBadBadBadBadBadBad
Should fail. Fails in 26% - 50% Image MAP with no NAME attributeBadBadGoodBadBadBadBetterGoodGood

input type=image

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (93% average)94% 100% 83% 100% 100% 100% 94% 100% 38%
Should work. Works in 100% INPUT type=image with ALT attributeGoodGoodGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 1% - 25% INPUT type=image with TITLE attributeGoodGoodGoodGoodGoodGoodGoodGoodBad
Should work. Fails in 1% - 25% INPUT type=image with aria-label attributeGoodGoodBetterGoodGoodGoodGoodGoodBad
Should work. Fails in 1% - 25% INPUT type=image with aria-labelledby attributeBadGoodBadGoodGoodGoodBetterGoodBad
Should fail. Fails in 76% - 100% INPUT type=image with no ALT attributeBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% INPUT type=image with null ALTBadBadBadBadBadBadBadBadBad

input type=radio

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (86% average)100% 100% 100% 100% 67% 33% 75% 50% 50%
Should work. Fails in 1% - 25% Yes/No radio buttons inside FIELDSETGoodGoodGoodGoodBetterBadBetterBadBad
Should fail. Fails in 51% - 75% Yes/No radio buttons without FIELDSETBadBadBadBadBadBadBadBadBad

input type=text

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (94% average)88% 88% 98% 99% 100% 100% 97% 94% 69%
Should work. Fails in 1% - 25% INPUT type=text inside LABEL with text after controlGoodGoodGoodGoodGoodGoodGoodGoodBad
Should work. Fails in 1% - 25% INPUT type=text inside LABEL with text before and after controlGoodGoodGoodGoodGoodGoodGoodGoodBad
Should work. Works in 100% INPUT type=text inside LABEL with text before controlGoodGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% INPUT type=text with LABEL FORGoodGoodGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 1% - 25% INPUT type=text with TITLE attributeBadBadGoodGoodGoodGoodGoodGoodBad
Should work. Fails in 1% - 25% INPUT type=text with aria-describedby attributeGoodGoodBetterBetterGoodGoodBetterBadGood
Should work. Fails in 1% - 25% INPUT type=text with aria-label attributeBadBadGoodGoodGoodGoodGoodGoodBad
Should work. Works in 100% INPUT type=text with aria-labelledby attributeGoodGoodGoodGoodGoodGoodGoodGoodGood
Should fail. Fails in 76% - 100% INPUT type=text inside blank LABELBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% INPUT type=text with blank LABEL FORBadBadBadBadBadBadBadBadBad
Should fail. Fails in 1% - 25% INPUT with aria-labelledby pointing to role=presentation elementGoodGoodWorseGoodGoodGoodBadGood
Should fail. Fails in 51% - 75% LABELs reference controls with duplicate idsBadBadBadBadBadBadBadBadBad

label

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (99% average)100% 100% 100% 100% 100% 100% 100% 100% 75%
Should work. Fails in 1% - 25% INPUT type=text inside LABEL with text after controlGoodGoodGoodGoodGoodGoodGoodGoodBad
Should work. Fails in 1% - 25% INPUT type=text inside LABEL with text before and after controlGoodGoodGoodGoodGoodGoodGoodGoodBad
Should work. Works in 100% INPUT type=text inside LABEL with text before controlGoodGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% INPUT type=text with LABEL FORGoodGoodGoodGoodGoodGoodGoodGoodGood
Should fail. Fails in 76% - 100% INPUT type=text inside blank LABELBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% INPUT type=text with blank LABEL FORBadBadBadBadBadBadBadBadBad
Should fail. Fails in 51% - 75% LABELs reference controls with duplicate idsBadBadBadBadBadBadBadBadBad

legend

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (74% average)83% 83% 75% 100% 58% 50% 50% 50% 50%
Should work. Fails in 26% - 50% FIELDSET containing linksBadBadBadGoodBetterBetterBadBadBad
Should work. Fails in 1% - 25% Yes/No radio buttons inside FIELDSETGoodGoodGoodGoodBetterBadBetterBadBad
Should fail. Fails in 1% - 25% FIELDSET containing no controls GoodGoodGoodGoodBetterBetterBetterGoodGood
Should fail. Fails in 1% - 25% FIELDSET used to put border round textGoodGoodGoodGoodGoodGoodBetterGoodGood
Should fail. Fails in 51% - 75% FIELDSET with blank LEGENDBadBadBadBadBadBadBadBadBad
Should fail. Fails in 51% - 75% FIELDSET with no LEGENDBadBadBadBadBadBadBadBadBad

map

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (48% average)41% 38% 90% 20% 63% 0% 69% 25% 50%
Should work. Fails in 26% - 50% AREA with ALT attributeBadBadGoodBadWorseBadBetterGoodGood
Should work. Fails in 51% - 75% AREA with TITLE attributeBadBadGoodBadWorseBadBetterBadGood
Should work. Fails in 51% - 75% AREA with aria-label attributeBadBadBetterBadWorseBadBetterBadBad
Should work. Fails in 51% - 75% AREA with aria-labelledby attributeBadBadBetterBadBadBadBetterBadBad
Should fail. Fails in 76% - 100% AREA with no ALT attributeBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% AREA with null ALT attributeBadBadBadBadBadBadBadBadBad
Should fail. Fails in 26% - 50% Image MAP with no NAME attributeBadBadGoodBadBadBadBetterGoodGood

object

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (17% average)33% 0% 0% 29% 17% 33% 33% 0% 0%
Should work. Fails in 76% - 100% OBJECT with ARIA-LABEL attributeGoodBadBadBadBadBadWorseBadBad
Should work. Fails in 76% - 100% OBJECT with ARIA-LABELLEDBY attributeBadBadBadBadBadBadBadBad
Should work. Fails in 51% - 75% OBJECT with fallback contentBadBadBadBadBetterGoodBetterBadBad
Should fail. Fails in 76% - 100% OBJECT with ALT attributeBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% OBJECT with TITLE attributeBadBadBadBadBadBadWorseBadBad
Should fail. Fails in 76% - 100% OBJECT with no descriptionBadBadBadBadBadBadBadBadBad

pre

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Should fail. Fails in 76% - 100% Space separated tablesBadBadBadBadBadBadBadBadBad

span

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (100% average)100% 100% 100% 100% 100% 100% 100% 100% 100%
Should work. Works in 100% INPUT type=text with aria-labelledby attributeGoodGoodGoodGoodGoodGoodGoodGoodGood
Should fail. Fails in 1% - 25% INPUT with aria-labelledby pointing to role=presentation elementGoodGoodWorseGoodGoodGoodBadGood
Should fail. Fails in 76% - 100% Space separated wordsBadBadBadBadBadBadBadBadBad

table

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (75% average)63% 77% 84% 87% 64% 61% 89% 86% 40%
Should work. Fails in 1% - 25% Data table with CAPTION and THGoodGoodBetterBetterGoodGoodGoodGood
Should work. Fails in 1% - 25% Data table with SUMMARY and THGoodGoodBetterBetterGoodGoodGoodGood
Should work. Fails in 26% - 50% Data table with TD HEADERS attributeBadGoodBetterBetterBadBadGood
Should work. Fails in 1% - 25% Data table with TH cell headersGoodGoodBetterGoodGoodBetterGoodGoodGood
Should work. Fails in 51% - 75% Data table with TH row/columns headers with SCOPEBadBadGoodGoodBadBadBetter
Should work. Fails in 26% - 50% Data table with role gridBetterGoodBetterBetterBetterBetterGoodGoodBad
Should work. Fails in 51% - 75% Data table with role rowheader headers but no THBadBadGoodGoodBadBadGoodBadGood
Should work. Fails in 1% - 25% Layout table with role presentationGoodGoodGoodGoodGoodGoodBetterGoodBad
Should work. Fails in 1% - 25% Layout table with single cellGoodGoodGoodGoodGoodGoodGoodGoodBad
Should fail. Fails in 76% - 100% Data table with CAPTION but no THBadBadBadBadBadBadGoodBadGood
Should fail. Fails in 76% - 100% Data table with SUMMARY but no THBadBadBadBadBadBadGoodBadGood
Should fail. Fails in 51% - 75% Data table with TH row/columns headers without SCOPEBadBadBetterBetterBadBadWorse
Should fail. Fails in 51% - 75% Data table with THEAD, TFOOT but no THBadBadBadBadGoodBetterGoodGoodGood
Should fail. Fails in 76% - 100% Data table with no TH elementsBadBadBadBadBadBadGoodBadGood
Should fail. Fails in 76% - 100% Data table with null SUMMARY but no THBadBadBadBadBadBadGoodBadGood
Should fail. Fails in 51% - 75% Data table with role noteBetterBadBadBadBadBadWorseGoodGood
Should fail. Fails in 76% - 100% Data table with role presentationBadBadBadBadBadBadWorseGoodGood

tbody

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (46% average)0% 0% 100% 100% 0% 0% 100% 0% 100%
Should work. Fails in 51% - 75% Data table with role rowheader headers but no THBadBadGoodGoodBadBadGoodBadGood

td

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (71% average)46% 69% 94% 94% 50% 55% 88% 67% 33%
Should work. Fails in 26% - 50% Data table with TD HEADERS attributeBadGoodBetterBetterBadBadGood
Should work. Fails in 51% - 75% Data table with role rowheader headers but no THBadBadGoodGoodBadBadGoodBadGood
Should work. Fails in 1% - 25% Layout table with role presentationGoodGoodGoodGoodGoodGoodBetterGoodBad
Should work. Fails in 1% - 25% Layout table with single cellGoodGoodGoodGoodGoodGoodGoodGoodBad

tfoot

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Should fail. Fails in 51% - 75% Data table with THEAD, TFOOT but no THBadBadBadBadGoodBetterGoodGoodGood

th

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (75% average)65% 85% 77% 81% 64% 57% 92% 100% 50%
Should work. Fails in 1% - 25% Data table with CAPTION and THGoodGoodBetterBetterGoodGoodGoodGood
Should work. Fails in 1% - 25% Data table with SUMMARY and THGoodGoodBetterBetterGoodGoodGoodGood
Should work. Fails in 26% - 50% Data table with TD HEADERS attributeBadGoodBetterBetterBadBadGood
Should work. Fails in 1% - 25% Data table with TH cell headersGoodGoodBetterGoodGoodBetterGoodGoodGood
Should work. Fails in 51% - 75% Data table with TH row/columns headers with SCOPEBadBadGoodGoodBadBadBetter
Should work. Fails in 26% - 50% Data table with role gridBetterGoodBetterBetterBetterBetterGoodGoodBad
Should fail. Fails in 76% - 100% Data table with CAPTION but no THBadBadBadBadBadBadGoodBadGood
Should fail. Fails in 76% - 100% Data table with SUMMARY but no THBadBadBadBadBadBadGoodBadGood
Should fail. Fails in 51% - 75% Data table with TH row/columns headers without SCOPEBadBadBetterBetterBadBadWorse
Should fail. Fails in 76% - 100% Data table with no TH elementsBadBadBadBadBadBadGoodBadGood
Should fail. Fails in 76% - 100% Data table with null SUMMARY but no THBadBadBadBadBadBadGoodBadGood
Should fail. Fails in 51% - 75% Data table with role noteBetterBadBadBadBadBadWorseGoodGood
Should fail. Fails in 76% - 100% Data table with role presentationBadBadBadBadBadBadWorseGoodGood

thead

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Should fail. Fails in 51% - 75% Data table with THEAD, TFOOT but no THBadBadBadBadGoodBetterGoodGoodGood

tr

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (46% average)0% 0% 100% 100% 0% 0% 100% 0% 100%
Should work. Fails in 51% - 75% Data table with role rowheader headers but no THBadBadGoodGoodBadBadGoodBadGood

video

Screen ReaderNVDAJAWSVoiceOverWin-EyesDolphinSaToGo
BrowserIEFFIEFFMaciOSIEIEIE
Reliability when used correctly (10% average)50% 0% 11% 11% 0% 0% 0% 0% 0%
Should work. Fails in 76% - 100% VIDEO with ARIA-LABEL attributeGoodBadBadBadBadBadBadBadBad
Should work. Fails in 76% - 100% VIDEO with ARIA-LABELLEDBY attributeBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% VIDEO with TITLE attributeGoodBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% VIDEO with fallback contentBadBadBadBadBadBadBadBadBad
Should fail. Fails in 76% - 100% VIDEO with no descriptionBadBadBadBadBadBadBadBadBad

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: