How HTML elements are supported by screen readers
Typical support patterns of HTML elements by screen readers:
- Identification of an element by role as the user moves through the content.
- Announcement of the text content of an element.
- Announcement of the start and end of an element.
- Change in voice as the content of an element is announced.
- Announcement of an elements accessible name and/or description
- Announcement of states and properties.
- Emission of a beep or other sound when an element with a particular state or property receives virtual focus.
- Instructions on how to operate interactive elements such as form controls.
- Navigation of elements by keyboard and “quick access” lists of a particular elements, list items are linked to each instance of an element on the page.
Note: The combination of patterns supported varies from element to element and support for a particular element varies between screen reader software.
Windows Narrator: quick commands
Narrator key: Caps Lock (or Insert) by default.
- Start/stop Narrator: Windows + Ctrl + Enter
- Toggle Scan mode: Narrator + Space
Scan mode must be turned on to use other keyboard shortcuts. - Links: K (next), Shift + K (previous), Narrator + F7 (list all); Popular links & page summary: Narrator + S twice
- Headings: H (next), Shift + H (previous); Headings list: Narrator + F6
- Landmarks/regions: Landmarks list: Narrator + F5
- Forms: E (next edit), Shift + E (previous). Press Space to turn Scan mode off when you need to type; Tab to move between form fields
- Lists & tables: I / Shift + I (next/previous list item); ,/. to jump to start/end of long lists or tables
- Images/graphics: G / Shift + G to move between images
Support legend
- means we have found this feature to be implemented interoperably (across multiple browsers)
- means the element has no expected semantics.
- means we are unsure whether this feature is supported, this may be due to lack of testing or lack of clarity around what 'support' of this feature is supposed to convey to the user.
- means we have found that this feature is not implemented
| Element | Test Case | Represents | AURAL UI | Interaction | Supported | Notes |
|---|---|---|---|---|---|---|
a
|
A hyperlink |
"Link", Element content
|
|
|
Link role announced before link text/label.
|
|
a
without href
|
a
without href test
|
An anchor | Element content | No special commands |
Treated as regular text. No semantics conveyed or expected as |
|
abbr
|
abbr test
|
An abbreviation |
|
No special commands |
If
If
In Firefox with the |
Note, expansions are not announced by default and that expansions provided using the |
address
|
address test
|
Contact information for a page or article element |
|
No special commands |
By default
If In Firefox |
|
area
|
area test
|
Hyperlink or dead area on an image map |
"Image", alt content, "graphic", "link", "area", alt content |
|
|
|
aria-level |
h7-h10 test
(i.e. role="heading" and aria-level="{7-10}")
|
Heading levels greater than 6 |
"Heading level [#]", element content |
No special commands for
|
For levels 1-9 (Chrome and Edge)
For levels 10 or above (Chrome and Edge) In Firefox |
Additional announcement of "at level [#]" is appended when Narrator verbosity settings are set to level 3 ("All control details") or higher. In Chrome and Edge:
In Firefox:
|
article
|
article test
|
Self-contained syndicatable or reusable composition |
|
No special commands |
With accessible name
|
You cannot focus on articles themselves, only content within them, as expected. Article semantics are
only exposed when an accessible name is present.
|
aside
|
aside test
|
Landmark for tangentially related content | "Complimentary", accessible name (when present), element content |
|
|
|
audio
|
audio test
|
Audio player |
|
The audio element is focusable with Tab by default.If the audio element has a controls attribute the buttons in the UI are navigable using
button commands.
|
Controls in the audio player are accessible.
|
|
b
|
b test
|
Text bolded for utilitarian purposes | Element content | No special commands | Refer to: Screen Readers support for text level HTML semantics | |
base
|
No test | Base URL and default target browsing context for hyperlinks and forms | None expected | No special commands | No UI | |
bdi
|
bdi test
|
Text directionality isolation | Element content | No special commands | No aural impact; structure-only element. | |
bdo
|
bdo test
|
Text directionality formatting | Element content | No special commands | No special semantics conveyed. Reads text correctly regardless of direction. | |
blockquote
|
blockquote test
|
A section quoted from another source |
With accessible name: Accessible name, element content Without accessible name: Element content |
No special commands |
The blockquote role is not announced.The cite attribute content is not announced (as expected)
|
|
body
|
body test
|
Document body | Element content | No special commands |
No semantics conveyed or expected |
|
br
|
br test
|
Line break, e.g. in poem or postal address | "Space" | No special commands |
Firefox ignores line breaks (no announcement by Narrator) |
|
button
|
button test
|
Button control |
Accessible name, "button"
With state: Accessible name, "button", state (If aria-disabled or
aria-expanded present)
Toggle button: Accessible name, "toggle button", On/Off (If aria-pressed present)
|
For buttons, disclosure buttons and toggle buttons
For popup buttons |
Semantics always conveyed, whether or not accessible name is present (via content or
|
|
canvas
|
canvas test
|
Scriptable bitmap canvas | "Image" element content | No special commands |
The canvas is 'transparent' for screen reader users. HTML content included in the HTML5 canvas sub DOM is announced and navigable by screen reader users and is navigable by keyboard users. Note: advised to add |
|
caption
|
caption test
|
Table caption | Caption content, "table", "[# rows] by [# columns]" (e.g. "4 by 8") |
|
Caption is announced when navigating to a table | |
cite
|
cite test
|
Reference to a creative work | Element content | No special commands |
No semantics conveyed or expected as |
|
code
|
code test
|
Computer code | Element content | No special commands |
No semantics conveyed or expected as |
|
col
|
No test | Table column | None expected | No special commands | No semantics conveyed | |
colgroup
|
colgroup test
|
Group of columns in a table | None expected | No special commands | ||
data
|
data test
|
Machine-readable equivalent | Element content | No special commands |
No semantics conveyed or expected as |
|
datalist
|
datalist test
|
Container for options for combo box control |
Label content, "combo, edit, has popup, suggestion available." |
|
No Firefox announces "collapsed" whether or not suggestions are visible. |
|
dd
|
dd test
|
Definition content for corresponding dt (term) element | Element content | No special commands |
Included as part of If user navigates via list item navigation (For example, pressing I to go to the next item in a list) then The "definition" role is not exposed unless the element has an accessible name (e.g. |
|
del
|
del test
|
A removal from the document |
Element content |
No special commands |
There is no indication that text has been deleted. Refer to: Screen Readers support for text level HTML semantics |
|
details
|
details test
|
Disclosure widget container |
|
No special commands |
No announcement expected, unless accessible name is present. Refer to |
|
dfn
|
dfn test
|
Defining instance of a term | Element content | No special commands |
No semantics conveyed Note intentional non-support across screen readers in conclusion to JAWS tracker Issue 821 due to perceived unnecessary additional verbosity. |
|
dialog
|
dialog test | Modal/Non-modal dialog: Represents a transitory part of an application, in the form of a small window ("dialog box") | Accessible name (if present), "dialog", first focusable element content and role |
Modal dialogs: Esc closes the dialog by default and returns focus to the triggering control Non-modal dialogs: No special commands by default. |
|
|
div
|
div test
|
Generic flow container | Element content | No special commands |
No semantics conveyed or expected |
|
dl
|
dl test
|
Association list consisting of name-value groups |
First <dt> element content, "List of #"
|
|
In Chrome and Edge In Firefox |
In Chrome and Edge, the
In Firefox, the |
dt
|
dt test
|
Legend for corresponding dd element(s) | Element content |
|
In Chrome and Edge In Firefox |
In Chrome and Edge, the
In Firefox, definitions are not announced. If a |
em
|
em test
|
Stress emphasis | Element content | No special commands |
No semantics conveyed. Refer to: Screen Readers support for text level HTML semantics |
|
embed
|
embed test
|
Plugins |
No special commands |
Announcements will vary, depending on embedded content. | ||
fieldset
|
fieldset test
|
Group of form controls |
Focusing on control inside: Control label and role, legend content, "Group" |
No special commands |
Requires an accessible name via
Accessible name and "group" role is announced on initial focus inside the group (e.g. on focus of the first control child). The |
|
figcaption
|
figcaption test
|
Caption for figure | Element content | No special commands |
"Caption" role is not announced. Article How do you figure? includes Windows Narrator support notes. |
|
figure
|
figure test
|
Figure with optional caption | Element content, graphic (if an image), figcaption content (if present) | No special commands |
Article How do you figure? includes Windows Narrator support notes. |
|
footer
|
footer test
|
Footer for a page or section | "Footer, content information landmark", accessible name (if present) |
|
Announced as "section footer" when used inside a region and given an accessible name (e.g. |
|
form
|
form test
|
User-submittable form | With accessible name: Accessible name, "form" |
Becomes a landmark when
|
No semantics conveyed unless |
|
h1 - h6
|
h1 - h6 test
|
Section heading | "Heading level [#]", element content |
|
Additional announcement of "at level [#]" is appended when Narrator verbosity settings are set to level 3 ("All control details") or higher. |
|
head
|
No test | Container for document metadata | None expected | No special commands | No UI | |
header
|
header test
|
Introductory or navigational aids for a page or section |
|
|
Announced as "section header" when used inside a region and given an accessible name (e.g. |
|
hr
|
hr test
|
Thematic break | "separator" | No special commands |
The "separator" role is not announced if a |
|
html
|
No test | Root element | None expected | No special commands | ||
i
|
i test
|
Alternate voice | Element content | No special commands | No semantics conveyed | |
iframe
|
"Accessible name" (if present), "document" | No special commands |
An accessible name is usually provided via the When no title is provided via either method, only the role "document" is announced. |
|||
img
|
img test
|
Image | Alt attribute content, "Graphic" |
|
"Verbosity Level 3 - All control details" (or higher) is required in Windows Narrator settings to hear the image role, "Graphic", announced. For verbosity level 2 ("some control details") and lower, only the
If an |
|
input [button]
|
input [button] test
|
Button control | Accessible name, "button", state (when present) |
The Note, form element keyboard shortcuts do not work in Firefox |
||
input [checkbox]
|
input [checkbox] test
|
Checkbox control | Label content, "checkbox", state (when present) |
|
In Chrome and Edge In Firefox |
Firefox does not announce when a checkbox is Note, form element keyboard shortcuts do not work in Firefox |
input [color]
|
input [color] test
|
Colour picker control | Label content / accessible name, "Colour picker", [#]% red, [#]% green, [#]% blue |
|
On activation, the control opens the browser's default colour picker dialog.
Chrome and Edge identify Note, form element keyboard shortcuts do not work in Firefox |
|
input [date]
|
input [date] test
|
Date (day/month year) picker control |
|
|
The date input is a a composite of multiple spinners. It includes a button to open the browser's default datepicker dialog Note, form element keyboard shortcuts do not work in Firefox |
|
input [email]
|
input [email] test
|
Text control for inputting email address | Accessible name/label, "Edit", state (if present) |
|
Announced as "Edit". Does not announce type of input. Note, form element keyboard shortcuts do not work in Firefox |
|
input [file]
|
input [file] test
|
File chooser control |
|
|
The As this is a composite control, it can be navigated to using either button or edit commands. Note, form element keyboard shortcuts do not work in Firefox |
|
input [hidden]
|
No test | Hidden form control | None expected | No special commands | No UI | |
input [image]
|
input [image] test
|
Button control | Accessible name/label, "button", state (when present) | sl
|
Image inputs are "submit" buttons by default. Image inputs should be given an accessible name (e.g. via Note, form element keyboard shortcuts do not work in Firefox |
|
input [number]
|
input [number] test
|
Spin box control | Accessible name/label, "spin button" |
|
The value is announced when changed via typing or using arrow keys to increase / decrease. If using form control navigation (scan mode), additional instructions of "Press space to edit" are announced on focus. Note, form element keyboard shortcuts do not work in Firefox |
|
input [password]
|
input [password] test
|
Text control for inputting a password | Accessible name/label, "edit", state (if present) |
|
Note: Keyboard character input is announced as "hidden". Placeholder text is only announced in Chrome and Edge when Narrator verbosity settings are set to level 3 ("All control details") or higher. If using form or edit control navigation (scan mode), additional instructions of "Press space to edit" are announced on focus. Note, the keyboard shortcuts do not work in Firefox |
|
input [range]
|
input [range] test
|
slider control |
Accessible name/label, "slider at [#]" |
When in edit mode (not scan mode):
|
Slider value is announced as it changes. Note, form element keyboard shortcuts do not work in Firefox |
|
input [radio]
|
input [radio],
test
|
single choice from a set of options |
Label content, "Radio button", selected/not selected", state (when present), legend content / group accessible name, "group" (when present) |
When in edit mode (not scan mode):
|
Group name and role are announced when radios are wrapped in a Note, form element keyboard shortcuts do not work in Firefox |
|
input [reset]
|
input [reset] test
|
Button control for resetting a form | Accessible name (or "Reset"), "button", state (when present) |
Note, form element keyboard shortcuts do not work in Firefox |
||
input [search]
|
input [search] test
|
Text control for inputting search terms |
Accessible name/label, "Edit", state (if present) |
|
Announced as "Edit". Does not announce type of input or "searchbox" role. If using form control navigation (scan mode), additional instructions of "Press space to edit" are announced on focus. Note, keyboard shortcuts do not work in Firefox |
|
input [submit]
|
input [submit] test
|
Button control for submitting a form | Accessible name (or "Submit"), "button", state (when present) |
Firefox uses "Submit query" as the default button text if no Note, form element keyboard shortcuts do not work in Firefox |
||
input [tel]
|
input [tel] test
|
Text box control for inputting a phone number | Accessible name/label, "Edit", state (if present) |
|
Announced as "Edit". Does not announce type of input. If using form control navigation (scan mode), additional instructions of "Press space to edit" are announced on focus. Note, keyboard shortcuts do not work in Firefox |
|
input [text]
|
input [text] test
|
Text edit control | Accessible name/label, "Edit", state (if present) |
|
Announced as "Edit". Does not announce type of input. If using form control navigation (scan mode), additional instructions of "Press space to edit" are announced on focus. Note, keyboard shortcuts do not work in Firefox |
|
input [time]
|
input [time] test
|
Control for setting a specific time. |
Focused inside the time input: "Hours", Accessible name/label (if present), "spin button", value, "timepicker" |
|
Hour/Minute values are announced as they change. The time input is a a composite of multiple spinners. In Chrome and Edge, it includes a button to open the browser's default timepicker dialog Note, keyboard shortcuts do not work in Firefox |
|
input [url]
|
input [url] test
|
Text control for inputting a URL |
Accessible name/label, "Edit", state (if present) |
|
Announced as "Edit". Does not announce type of input or "searchbox" role. If using form control navigation (scan mode), additional instructions of "Press space to edit" are announced on focus. Note, keyboard shortcuts do not work in Firefox |
|
ins
|
ins test
|
An addition to the document |
Element content |
No special commands |
There is no indication that text has been inserted. Refer to: Screen Readers support for text level HTML semantics |
|
kbd
|
kbd test
|
Represents user input | Element content | No special commands | No semantics conveyed | |
label
|
label test
|
Caption for a form control | Label content announced when the programatically linked form control has focus | No special commands | ||
legend
|
legend test
|
Caption for fieldset
|
Legend content is announced as the group label for a group of related controls on first focus inside the group. | No special commands |
Refer to fieldset element Legend content is not announced if the |
|
li
|
ul > li test and ol > li test
|
List item |
|
|
If a list element has an accessible name provided (e.g. via |
|
link
|
No test | Link metadata | None expected | No special commands | No UI | |
main
|
main test
|
Main content of a document | Accessible name (when present), "Main landmark", accessible description (when present) |
|
||
map
|
map test
|
Image map | None expected | No special commands | No UI | |
mark
|
mark test
|
Highlight |
|
No special commands |
|
|
meta
|
No test | Text metadata | None expected | No special commands | No UI | |
meter
|
meter test
|
Gauge |
|
No special commands |
The "meter" role is only announced when the element has no accessible name. |
|
nav
|
nav test
|
Section with navigational links | Accessible name (when present), "navigation landmark", accessible description (when present) |
|
Accessible description is announced after a brief pause. In Firefox, the |
|
noscript
|
noscript test
|
Fallback content for script |
Content of |
No special commands |
Ignored when JavaScript is enabled. Reads content rendered on screen when Javascript not enanabled |
|
object
|
object test
|
Embedded image, nested browsing context, or plugin | Depends on format of data file. |
|
Semantics depend on the type of data file specified in the |
|
ol
|
ol test
|
Ordered list |
|
|
If a list element has an accessible name provided (e.g. via Narrator does not announce accessible descriptions on lists in Firefox |
|
optgroup
|
optgroup test
|
Group of options in a list box |
First option in |
No special commands |
The The "group" role is not announced. |
|
option
|
option test
|
Option in a list box or combobox control |
Option content, selected/not selected state, optgroup label content (if in an |
Navigable using UP/DOWN arrow keys |
Option content and its selected state is announced. The "option" role does not need to be announced. |
|
output
|
output test
|
Calculated output value from a calculation or user input |
Output content |
No special commands |
No semantics conveyed. The output value is auto-announced as expected for elements with a "status" role. |
|
p
|
p test
|
Paragraph | Element content |
|
No semantics conveyed or expected |
|
param
(obsolete)
|
No test | Parameter for object | None expected | No special commands | No UI | |
picture
|
No test | Container offering alternative versions of an image | None expected | No special commands | No UI | |
pre
|
pre test
|
Block of preformatted text | Element content | No special commands |
No semantics conveyed or expected as |
|
progress
|
progress test
|
Progress bar |
Accessible name (if present), "progress indicator", "Current value: value", "Minimum value: min value", "Maximum value: max value" |
No special commands |
In Chrome and Edge In Firefox |
The Firefox does not announce progress role or values unless it is made focusable with |
q
|
q test
|
Quotation | "Double quotation mark", element content, "double quotation mark" | No special commands |
No semantics conveyed, but double-quote punctuation is auto-added by browsers and this is announced at the start and end of the quote. |
|
rb
|
No test | Ruby base element | Element content | No special commands |
No semantics conveyed |
|
rp
|
No test | Fallback parenthesis for browsers that don't support Ruby | Element content | No special commands |
No semantics conveyed |
|
rt
|
No test | Ruby annotation | Element content | No special commands |
No semantics conveyed |
|
rtc
|
No test | Ruby text container | Element content | No special commands |
No semantics conveyed |
|
ruby
|
No test | Ruby: Show pronunciation | Element content | No special commands |
No semantics conveyed |
|
samp
|
samp test
|
Computer output | Element content | No special commands |
No semantics conveyed |
|
s
|
s test
|
Inaccurate text | Element content |
No semantics conveyed |
Browsers usually give Refer to: Screen Readers support for text level HTML semantics |
|
script
|
No test | Embedded script | None expected | No special commands | No UI | |
section
|
Generic document or application section |
|
Only when an accessible name is present:
|
No semantics conveyed unless the |
||
select
|
select test
|
List box control | Accessible name/label (when present), "combobox", selected option content, state |
|
The expanded/collapsed state is always announced, followed by other states like "required" or "disabled". Note, keyboard shortcuts do not work in Firefox |
|
small
|
small test
|
Side comment | Element content | No special commands |
No semantics conveyed |
|
source
|
No test | Media source for video or audio | None expected | No special commands | No UI | |
span
|
span test
|
Generic phrasing container | None expected | No special commands |
No semantics conveyed or expected |
|
strong
|
strong test
|
Importance | Element content | No special commands |
No semantics conveyed. It was reported as undesirable by NVDA users in 2015. Refer to: Screen Readers support for text level HTML semantics |
|
style
|
No test | Embedded styling information | None expected | No special commands | No UI | |
sub
|
sub test
|
Subscript | Element content | No special commands |
No semantics conveyed |
|
summary
|
summary test
|
disclosure widget control/label | Summary content, "disclosure triangle"/"button", expanded/collapsed state |
|
Chrome and Edge announce "disclosure triangle", whereas Firefox announces button". |
|
sup
|
sup test
|
Superscript | Element content | No special commands | No semantics conveyed | |
svg
|
svg test
|
Scalable Vector Graphic |
Title content (if present)
|
No special commands |
No image/graphic semantics conveyed. Narrator announces |
|
table |
Data table |
|
|
In Chrome and Edge In Firefox |
Narrator does not announce the presence of a table in Firefox. |
|
tbody
|
tbody test
|
Group of rows in a data table | Element content | No special commands |
No semantics conveyed or expected |
|
td
|
td test
|
Data cell in a data table |
|
|
Increased verbosity in Narrator settings is required to hear row and column information, including column headers and merged cell details when browsing table contents. Narrator does not announce row header information while focused on data cells unless using the keyboard shortcuts. Using Firefox, Narrator does not announce column header information while focused on data cells unless using the keyboard shortcuts. It does announce row number information (e.g. "row 2 of 5") alongside column number information by default. |
|
template
|
No test | Template | None expected | No special commands | No UI | |
textarea
|
textarea test
|
Multiline text field | Label content (if present), "Edit", Placeholder or text content, state |
|
The If using form control navigation (scan mode), additional instructions of "Press space to edit" are announced on focus. Note, keyboard shortcuts do not work in Firefox |
|
tfoot
|
tfoot test
|
Group of footer rows in a data table | Element content for each cell | No special commands |
No semantics conveyed |
|
th
|
th test
|
Header cell in a data table |
|
|
Increased verbosity in Narrator settings is required to hear row and column information, including column headers and merged cell details, when browsing table contents. Using Chrome or Edge, Narrator does not announce row headers unless using the keyboard shortcut. Using Firefox, Narrator announces "Header" for both column and row header cells in all reading modes. |
|
thead
|
thead test
|
Group of header rows in a data table | Element content | No special commands |
No semantics conveyed or expected |
|
time
|
time test
|
Machine-readable equivalent of date- or time-related data | "Time", aria-describedby content (if present and correctly linked), Element content | No special commands |
Narrator announces "Time" before the element content in Chrome and Edge. The role is not conveyed when using Firefox. Note, if the |
|
title
|
No test | Document title | Title content | Read document title Narrator + T |
Title is announced on initial page load and via the keyboard shortcut. The browser name and number of open tabs/windows is also announced when using the keyboard shortcut. |
|
tr
|
tr test
|
Data table row | "Row" |
|
The "row" role is only announced in Chrome and Edge if using arrow keys to move between the last and first cells in adjacent rows. |
|
track
|
track test
|
Reference to external timed text track | Caption content | No special commands |
The browser defines which type of caption track is supported. |
|
u
|
u test
|
Indicates a non-textual annotation | Element content | No special commands |
No semantics conveyed or expected as Note, the default rendering of the |
|
ul
|
ul test
|
Unordered List |
|
|
If a list element has an accessible name provided (e.g. via Narrator does not announce accessible descriptions on lists in Firefox |
|
var
|
var test
|
Variable | Element content | No special commands |
No semantics conveyed or expected |
|
video
|
video test
|
Video Player |
"Play", "button", accessible name (if present) |
The Narrator announces the accessible name on focus of the |
||
wbr
|
No test | Line breaking opportunity | None expected | No special commands | No UI |