HTML elements Screen reader compatibility

HTML
Nov 26, 2024

Shows how different HTML elements 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

a

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (93% average)100% 95% 100% 100% 97% 100% 91% 89%
93%Click Here link with aria-describedby attribute
90%Click Here link with title attribute
100%Link containing img with alt
100%Link containing img with title
92%Link text replaced by aria-label attribute
95%Link text replaced by aria-labelledby attribute
92%a element placeholder link with no event handler or href attribute
82%fieldset containing links
Issues when used incorrectly (54% average)51% 48% 50% 53% 56% 53% 43% 43%
69%A link with empty label
99%A link with non-breaking space as label
26%CSS content: property on link
85%Link target opens in new window
100%Link containing img with null alt
100%Link containing img without alt
8%Link with aria-label containing img with no alt
15%Link with aria-labelledby containing img with no alt
53%Link with onclick but no href
5%Link with title containing img with no alt

abbr

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (0% average)0% 0% 0% 0% 0% 0% 0% 0%
0%abbr with title

acronym

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Issues when used incorrectly (100% average)100% 100% 100% 100% 100% 100% 100% 100%
100%acronym with title

applet

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (79% average)100% 92% 100% 100% 69% 91% 62% 100%
94%applet inside figure with figcaption element
77%applet with aria-label attribute
74%applet with aria-labelledby attribute
67%applet with title attribute
81%applet with fallback content
Issues when used incorrectly (34% average)0% 15% 0% 0% 38% 0% 50% 0%
33%applet with alt attribute
35%applet with no description

area

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (72% average)100% 65% 100% 100% 54% 100% 75% 14%
80%area and img with alt attributes
97%area with alt attribute and img with null alt
76%area with aria-label attribute
59%area with aria-labelledby attribute
59%area with title attribute
Issues when used incorrectly (84% average)87% 71% 90% 87% 79% 90% 100% 100%
51%Image map with no name attribute
100%area with no alt
100%area with null alt

audio

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (1% average)0% 0% 0% 0% 0% 0% 0% 0%
1%audio with aria-label attribute
0%audio with aria-labelledby attribute
1%audio with title attribute
Issues when used incorrectly (97% average)100% 100% 100% 100% 100% 100% 75% 100%
100%audio with fallback content
94%audio with no description

button

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (90% average)100% 100% 98% 100% 85% 100% 83% 83%
95%button containing img with alt
96%button containing img with aria-label
79%button containing img with aria-labelledby
77%button containing img with title attribute
95%button with aria-label containing img with null alt
100%button with title containing img with null alt
Issues when used incorrectly (52% average)50% 50% 50% 50% 50% 50% 50% 50%
100%button containing img with no alt
100%button containing img with null alt
1%button with aria-label containing img with no alt
8%button with title containing img with no alt

caption

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (93% average)100% 100% 100% 100% 92% 100% 100% 60%
93%Data table with caption and th
Issues when used incorrectly (97% average)100% 100% 100% 100% 100% 100% 100% 100%
97%Data table with caption but no th

dd

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Issues when used incorrectly (98% average)100% 91% 100% 100% 100% 100% 91% 100%
98%Definition lists with images as bullets

div

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 (84% average)71% 86% 78% 71% 87% 78% 92% 67%
12%CSS content: property on div
97%Nested ARIA headings

embed

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (46% average)35% 83% 25% 25% 27% 46% 63% 48%
98%embed inside figure with figcaption
35%embed with aria-label attribute
28%embed with aria-labelledby attribute
23%embed with title attribute
Issues when used incorrectly (92% average)100% 100% 100% 100% 96% 100% 50% 85%
89%embed with alt attribute
94%embed with no description

fieldset

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (88% average)100% 93% 100% 100% 96% 100% 93% 55%
95%Yes/No radio buttons inside fieldset element
82%fieldset containing links
Issues when used incorrectly (52% average)60% 49% 54% 58% 46% 60% 57% 53%
56%Yes/No radio buttons without fieldset
21%fieldset containing no controls
33%fieldset used to put border round text
100%fieldset with blank legend
48%fieldset with no legend

figcaption

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (85% average)100% 100% 100% 100% 74% 71% 65% 65%
94%applet inside figure with figcaption element
98%embed inside figure with figcaption
65%img with figcaption

figure

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (85% average)100% 100% 100% 100% 74% 71% 65% 65%
94%applet inside figure with figcaption element
98%embed inside figure with figcaption
65%img with figcaption

h1-h6

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (100% average)100% 100% 100% 100% 100% 100% 100% 100%
100%Heading is img with alt
Issues when used incorrectly (65% average)75% 64% 75% 63% 63% 63% 67% 59%
2%Empty heading
100%Heading is img alt=filename
100%Heading is img with `alt=
100%Heading is img with no alt
22%Heading non-breaking spaces
93%Heading only punctuation
2%Heading only spaces
100%Nested headings

html

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (56% average)47% 43% 57% 63% 57% 70% 57% 57%
63%Match lang subtags
100%Page with lang set on the html and p elements
14%Page with xml:lang set on the html and p elements
0%application/xhtml+xml page with mismatching lang and xml:lang on the html element
100%text/html page with mismatching lang and xml:lang on the html element

iframe

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (88% average)100% 69% 100% 79% 97% 83% 79% 100%
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
91%iframe with title attribute
87%iframe with fallback content
Issues when used incorrectly (36% average)46% 56% 43% 35% 35% 32% 56% 8%
48%Interactive iframe with role=presentation and negative tabindex and no accessible name
52%Interactive iframe with negative tabindex and no accessible name
87%iframe where src is a PNG image
58%iframe with title matching frame filename
13%iframe with blank title
14%iframe with no fallback content and no title

img

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (87% average)100% 90% 99% 100% 80% 99% 84% 69%
100%Heading is img with alt
100%Link containing img with alt
100%Link containing img with title
80%area and img with alt attributes
97%area with alt attribute and img with null alt
76%area with aria-label attribute
59%area with aria-labelledby attribute
59%area with title attribute
95%button containing img with alt
96%button containing img with aria-label
79%button containing img with aria-labelledby
77%button containing img with title attribute
95%button with aria-label containing img with null alt
100%button with title containing img with null alt
100%img with alt
96%img with aria-label
89%img with aria-labelledby
65%img with figcaption
100%img with title
100%img with null alt
Issues when used incorrectly (71% average)70% 68% 71% 71% 70% 71% 69% 74%
98%Definition lists with images as bullets
100%Heading is img alt=filename
100%Heading is img with `alt=
100%Heading is img with no alt
51%Image map with no name attribute
100%Link containing img with null alt
100%Link containing img without alt
8%Link with aria-label containing img with no alt
15%Link with aria-labelledby containing img with no alt
5%Link with title containing img with no alt
100%area with no alt
100%area with null alt
100%button containing img with no alt
100%button containing img with null alt
1%button with aria-label containing img with no alt
8%button with title containing img with no alt
68%img with alt set to ASCII art smiley
100%img with alt set to src filename
87%img with aria-describedby
100%img with null alt and non-null title attributes
100%img with null alt and non-null aria-label attributes
100%img with null alt and non-null aria-labelledby attributes
100%img with server side image map
100%img without alt

input type=image

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (97% average)100% 100% 100% 100% 100% 100% 100% 100%
100%input type=image with alt
98%input type=image with aria-label attribute
92%input type=image with aria-labelledby attribute
99%input type=image with title attribute
Issues when used incorrectly (100% average)100% 100% 100% 100% 100% 100% 100% 100%
100%input type=image with no alt
100%input type=image with null alt

input type=radio

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (95% average)100% 100% 100% 100% 92% 100% 91% 82%
95%Yes/No radio buttons inside fieldset element
Issues when used incorrectly (56% average)50% 50% 50% 90% 50% 93% 55% 18%
56%Yes/No radio buttons without fieldset

input type=text

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (96% average)100% 95% 100% 100% 99% 98% 93% 100%
99%input type=text inside label with text after control
94%input type=text inside label with text before and after control
100%input type=text inside label with text before control
94%input type=text with aria-describedby attribute
92%input type=text with aria-label attribute
100%input type=text with aria-labelledby attribute
100%input type=text with label for
92%input type=text with title attribute
Issues when used incorrectly (72% average)63% 64% 63% 73% 73% 73% 77% 79%
100%input type=text inside blank label
100%input type=text with blank label for
3%input with aria-labelledby pointing to role=presentation element
75%label elements reference controls with duplicate ids

label

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (98% average)100% 100% 100% 100% 100% 96% 91% 100%
99%input type=text inside label with text after control
94%input type=text inside label with text before and after control
100%input type=text inside label with text before control
100%input type=text with label for
Issues when used incorrectly (92% average)83% 83% 83% 97% 92% 98% 100% 100%
100%input type=text inside blank label
100%input type=text with blank label for
75%label elements reference controls with duplicate ids

legend

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (88% average)100% 93% 100% 100% 96% 100% 93% 55%
95%Yes/No radio buttons inside fieldset element
82%fieldset containing links
Issues when used incorrectly (50% average)63% 49% 55% 50% 45% 52% 58% 61%
21%fieldset containing no controls
33%fieldset used to put border round text
100%fieldset with blank legend
48%fieldset with no legend
Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Issues when used incorrectly (100% average)100% 100% 100% 100% 100% 100% 100% 100%
100%CSS stylesheet link with media=aural
100%CSS stylesheet link with media=speech

map

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (72% average)100% 65% 100% 100% 54% 100% 75% 14%
80%area and img with alt attributes
97%area with alt attribute and img with null alt
76%area with aria-label attribute
59%area with aria-labelledby attribute
59%area with title attribute
Issues when used incorrectly (84% average)87% 71% 90% 87% 79% 90% 100% 100%
51%Image map with no name attribute
100%area with no alt
100%area with null alt

object

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (55% average)100% 50% 100% 80% 51% 79% 60% 48%
58%object with aria-label attribute
52%object with aria-labelledby attribute
54%object with title attribute
56%object with fallback content
Issues when used incorrectly (65% average)0% 50% 29% 100% 54% 100% 50% 70%
64%object with alt attribute
67%object with no description

p

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (56% average)47% 43% 57% 63% 57% 70% 57% 57%
63%Match lang subtags
100%Page with lang set on the html and p elements
14%Page with xml:lang set on the html and p elements
0%application/xhtml+xml page with mismatching lang and xml:lang on the html element
100%text/html page with mismatching lang and xml:lang on the html element

pre

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Issues when used incorrectly (100% average)100% 100% 100% 100% 100% 100% 100% 100%
100%Space separated tables

span

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (100% average)100% 100% 100% 100% 100% 100% 100% 100%
100%input type=text with aria-labelledby attribute
Issues when used incorrectly (41% average)33% 38% 33% 33% 39% 33% 35% 55%
100%Space separated words
3%input with aria-labelledby pointing to role=presentation element

table

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (78% average)90% 83% 89% 94% 85% 95% 70% 40%
93%Data table with caption and th
30%Data table with role=columnheader headers but no th
81%Data table with role=grid
96%Data table with role=table
84%Data table with summary and th
57%Data table with td headers attribute
63%Data table with th scope on cell headers
97%Data table with th cell headers
95%Layout table with role=presentation
98%Layout table with single cell
Issues when used incorrectly (85% average)88% 95% 88% 88% 88% 88% 76% 90%
30%Data table th cell headers with no scope
97%Data table with caption but no th
89%Data table with role=note
96%Data table with role=presentation
97%Data table with summary but no th
73%Data table with thead, tfoot but no th
97%Data table with no th elements
97%Data table with null summary and no th

tbody

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

td

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (70% average)75% 73% 75% 85% 75% 89% 52% 47%
30%Data table with role=columnheader headers but no th
57%Data table with td headers attribute
95%Layout table with role=presentation
98%Layout table with single cell

tfoot

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Issues when used incorrectly (73% average)100% 100% 100% 100% 100% 100% 0% 18%
73%Data table with thead, tfoot but no th

th

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (80% average)100% 92% 100% 100% 83% 100% 70% 29%
93%Data table with caption and th
81%Data table with role=grid
96%Data table with role=table
84%Data table with summary and th
57%Data table with td headers attribute
63%Data table with th scope on cell headers
97%Data table with th cell headers
Issues when used incorrectly (87% average)86% 94% 86% 86% 86% 86% 87% 100%
30%Data table th cell headers with no scope
97%Data table with caption but no th
89%Data table with role=note
96%Data table with role=presentation
97%Data table with summary but no th
97%Data table with no th elements
97%Data table with null summary and no th

thead

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Issues when used incorrectly (73% average)100% 100% 100% 100% 100% 100% 0% 18%
73%Data table with thead, tfoot but no th

tr

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

video

Screen ReaderNVDAJAWSVoiceOver
BrowserEdgeFFCrEdgeFFCrMaciOS
Reliability when used correctly (30% average)20% 47% 5% 0% 5% 0% 70% 70%
33%video with aria-label attribute
23%video with aria-labelledby attribute
32%video with title attribute
Issues when used incorrectly (98% average)100% 100% 100% 100% 100% 100% 100% 100%
95%video with fallback content
100%video with no description

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