[Skip navigation links]
Login

Labelling forms, images and links Screen reader compatibility

Last updated: September 22, 2021

Screen reader compatibility test results for labelling, showing how failures and techniques work in different screen reader / browser combinations.

The results include two types of test:

Reliability by user agent

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 7998%
JAWS IEJAWS 2019.1912.1 with IE1196%11 better
JAWS FirefoxJAWS 2019.1912.1 with FF6894%9 better
NVDA ChromeNVDA 2019.2 with Chrome 7998%
NVDA IENVDA 2019.2 with IE1174%3 better
NVDA FirefoxNVDA 2019.2 with FF6892%7 better
VoiceOver MacVoiceOver macOS 10.15 with Safari 14.192%7 better
VoiceOver iOSVoiceOver iOS 14.7 with Safari iOS 14.783%2 better
WindowEyes IEWindowEyes 9.2 with IE1194%11 better
Dolphin IEDolphin SR 15.05 with IE1177%
SaToGo IESaToGo 3.4.96.0 with IE1153%
Average Including older versions 85%

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).

Reliability trend

100%80%60%40%20%0%201482%201585%201685%201787%201890%201992%202092%202192%

Works as expected

These tests use conformant HTML or WCAG sufficient techniques, and work in all tested browser / screen reader combinations.

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Should work. Works in 100% Link containing img with altGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% Link containing img with titleGoodGoodGoodGoodGoodGoodGoodGood
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 titleGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% img with null altGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% input type=image with altGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% input type=text inside label with text before controlGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% input type=text with aria-labelledby attributeGoodGoodGoodGoodGoodGoodGoodGood
Should work. Works in 100% input type=text with label forGoodGoodGoodGoodGoodGoodGoodGood

Expected to work

These tests use conformant HTML or WCAG sufficient techniques and might be expected to work in screen readers. This doesn't always happen.

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
Should work. Fails in 1% - 25% Click Here link with aria-describedby attributeGoodGoodGoodBetterBetterGoodBetterGood
Should work. Fails in 1% - 25% Click Here link with title attributeBadGoodGoodBetterBetterGoodBetterBetter
Should work. Fails in 1% - 25% Link text replaced by aria-label attributeBetterBetterGoodGoodBetterGoodGoodGood
Should work. Fails in 1% - 25% Link text replaced by aria-labelledby attributeBadBetterGoodBetterGoodGoodGoodGood
Should work. Fails in 1% - 25% Yes/No radio buttons inside fieldset elementGoodGoodGoodGoodGoodGoodBetterBetter
Should work. Fails in 76% - 100% abbr with titleBadBadBadBadBadBadBadBad
Should work. Fails in 26% - 50% 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 51% - 75% area with aria-labelledby attributeBadBadGoodBetterBetterGoodBadBad
Should work. Fails in 26% - 50% area with title attributeBadBadGoodGoodBadGoodBetterBad
Should work. Fails in 1% - 25% button containing img with altBetterGoodGoodBetterGoodGoodGoodGood
Should work. Fails in 1% - 25% button containing img with aria-labelBetterGoodGoodBetterGoodGoodGoodGood
Should work. Fails in 26% - 50% button containing img with aria-labelledbyBadGoodGoodBetterBadGoodGoodGood
Should work. Fails in 26% - 50% button containing img with title attributeBetterGoodGoodBetterGoodGoodBadBad
Should work. Fails in 1% - 25% button with aria-label containing img with null altGoodGoodGoodBetterGoodGoodGoodGood
Should work. Fails in 26% - 50% fieldset containing linksBadBetterGoodBadGoodGoodBetterBad
Should work. Fails in 1% - 25% iframe with title attributeBadBadGoodGoodBetterGoodGoodGood
Should work. Fails in 1% - 25% iframe with fallback contentGoodBadGoodGoodBetterGoodBadGood
Should work. Fails in 1% - 25% img with aria-labelBetterGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 1% - 25% img with aria-labelledbyBadGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 26% - 50% img with figcaptionGoodGoodGoodGoodBetterBadBadBad
Should work. Fails in 1% - 25% input type=image with aria-label attributeGoodGoodGoodBetterGoodGoodGoodGood
Should work. Fails in 1% - 25% input type=image with aria-labelledby attributeBadGoodGoodBetterGoodGoodGoodGood
Should work. Fails in 1% - 25% input type=image with title attributeGoodGoodGoodGoodGoodGoodGoodGood
Should work. Fails in 1% - 25% input type=text inside label with text after controlGoodGoodGoodGoodGoodWorseGoodGood
Should work. Fails in 1% - 25% input type=text inside label with text before and after controlGoodGoodGoodGoodGoodWorseWorseGood
Should work. Fails in 1% - 25% input type=text with aria-describedby attributeGoodGoodGoodBetterBetterGoodBetterGood
Should work. Fails in 1% - 25% input type=text with aria-label attributeBadBetterGoodGoodGoodGoodGoodGood
Should work. Fails in 1% - 25% input type=text with title attributeBadBetterGoodGoodGoodGoodGoodGood

Expected to fail

These tests use non-conformant HTML or WCAG failures and are expected to fail in screen readers.

Screen ReaderNVDAJAWSVoiceOver
BrowserIEFFCrIEFFCrMaciOS
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 26% - 50% 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 51% - 75% Yes/No radio buttons without fieldsetBadBadBadBadBadBadBadBetter
Should fail. Fails in 76% - 100% acronym with titleBadBadBadBadBadBadBadBad
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 1% - 25% fieldset containing no controlsGoodGoodGoodBadBetterBetterBetterBetter
Should fail. Fails in 1% - 25% fieldset used to put border round textGoodGoodGoodGoodGoodGoodGoodBad
Should fail. Fails in 76% - 100% fieldset with blank legendBadBadBadBadBadBadBadBad
Should fail. Fails in 26% - 50% fieldset with no legendBadBadBadBadBadBadBadBetter
Should fail. Fails in 26% - 50% iframe with title matching frame filenameBadBadBadGoodBadBadBadGood
Should fail. Fails in 1% - 25% iframe with blank titleGoodBadGoodGoodBetterGoodBadGood
Should fail. Fails in 1% - 25% iframe with no fallback content and no titleGoodBadGoodGoodBetterGoodBadGood
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 aria-describedbyBadBadBadBadBadBadGoodBad
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 with server side image mapBadBadBadBadBadBadBadBad
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% input type=text inside blank labelBadBadBadBadBadBadBadBad
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

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: