-
Chrome 84
on Windows 10
98.5%
-
Edge 80
on Windows 10
100%
-
Firefox 80
on Windows 10
94%
-
Internet Explorer 11
on Windows 10
56%
-
Safari 13
on Mac OS
97%
This site tests which newish HTML5 features are accessibly supported by major browsers. This includes if they are keyboard accessible, mapped to the platform accessibility APIs, and if any accessibility related features are supported. An accessibly supported feature means it is usable by people who rely on assistive technology, without developers having to supplement with ARIA or other additional workarounds. Read What does acessibility supported mean for a comprehensive understanding of how to interpret these findings.
Feature Support
Sections & Grouping
Element | Criteria | Chrome/Opera | Edge | Firefox | IE | Safari |
---|---|---|---|---|---|---|
article |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | no | yes | |
Name/Description | yes | yes | partial | yes | ||
section |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | no | yes | |
Name/Description | yes | yes | partial | yes | ||
nav |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | no | yes | |
Name/Description | yes | yes | partial | yes | ||
aside |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | no | yes | |
Name/Description | yes | yes | partial | yes | ||
header |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | no | yes | |
Name/Description | yes | yes | partial | Yes | ||
footer |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | no | yes | |
Name/Description | yes | yes | partial | yes | ||
figure |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | no | yes | |
Name/Description | yes | yes | partial | yes | ||
figcaption |
Accessibly supported | yes | yes | yes | no | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | no | yes | |
main |
Accessibly supported | yes | yes | yes | not implemented | yes |
Feature implemented | yes | yes | yes | no | yes | |
Mapped | yes | yes | yes | n/a | yes | |
Name/Description | yes | yes | n/a | yes |
Text-level
Element | Criteria | Chrome/Opera | Edge | Firefox | IE | Safari |
---|---|---|---|---|---|---|
time |
Accessibly supported | yes | yes | yes | not implemented | yes |
Feature implemented | yes | yes | yes | no | yes | |
Mapped | yes | yes | yes | n/a | yes | |
Name/Description | yes | yes | yes | n/a | yes | |
mark |
Accessibly supported | yes | yes | yes | yes | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | no | yes | |
Name/Description | yes | yes | yes | partial | yes |
Graphics & Media
Element | Criteria | Chrome/Opera | Edge | Firefox | IE | Safari |
---|---|---|---|---|---|---|
canvas |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
drawFocusIfNeeded() | yes | yes | yes | no | yes | |
Mapped | yes | yes | yes | no | yes | |
sub-DOM | yes | yes | yes | yes | yes | |
audio |
Accessibly supported | yes | yes | partial | yes | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | yes | yes | |
Keyboard | yes | yes | no | yes | yes | |
video |
Accessibly supported | yes | yes | partial | yes | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | yes | yes | |
Keyboard | yes | yes | no | yes | yes | |
track |
Accessibly supported | yes | yes | yes | yes | yes |
Feature implemented | yes | yes | yes | yes | yes | |
WebVTT or TTML | yes | yes | yes | yes | yes |
Controls
Element | Criteria | Chrome/Opera | Edge | Firefox | IE | Safari |
---|---|---|---|---|---|---|
search input |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | no | yes | |
Name/Description | yes | yes | partial | yes | ||
tel input |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | no | yes | |
Name/Description | yes | yes | partial | yes | ||
url input |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | no | yes | |
Name/Description | yes | yes | partial | yes | ||
Error state mapped | yes | yes | no | yes | ||
email input |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | no | yes | |
Name/Description | yes | yes | yes | yes | yes | |
Error state mapped | yes | yes | yes | no | yes | |
datetime-local input |
Accessibly supported | yes | yes | not implemented | not implemented | not implemented |
Feature implemented | yes | yes | no | no | no | |
Mapped | yes | yes | n/a | n/a | n/a | |
Name/Description | yes | yes | n/a | n/a | n/a | |
Keyboard | yes | yes | n/a | n/a | n/a | |
date input |
Accessibly supported | yes | yes | yes | not implemented | not implemented |
Feature implemented | yes | yes | yes | no | no | |
Mapped | yes | yes | yes | n/a | n/a | |
Name/Description | yes | yes | yes | n/a | n/a | |
Keyboard | yes | yes | yes | n/a | n/a | |
month input |
Accessibly supported | yes | yes | not implemented | not implemented | not implemented |
Feature implemented | yes | yes | no | no | no | |
Mapped | yes | yes | n/a | n/a | n/a | |
Name/Description | yes | yes | n/a | n/a | n/a | |
Keyboard | yes | yes | n/a | n/a | n/a | |
week input |
Accessibly supported | yes | yes | not implemented | not implemented | not implemented |
Feature implemented | yes | yes | no | no | no | |
Mapped | yes | yes | n/a | n/a | n/a | |
Name/Description | yes | yes | n/a | n/a | n/a | |
Keyboard | yes | yes | n/a | n/a | n/a | |
time input |
Accessibly supported | yes | yes | yes | not implemented | not implemented |
Feature implemented | yes | yes | yes | no | no | |
Mapped | yes | yes | yes | n/a | n/a | |
Name/Description | yes | yes | yes | n/a | n/a | |
Keyboard | yes | yes | yes | n/a | n/a | |
number input |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | no | yes | |
Name/Description | yes | yes | yes | partial | yes | |
Error state mapped | yes | yes | yes | no | yes | |
Keyboard | yes | yes | yes | yes | yes | |
range input |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | yes | yes | |
Name/Description | yes | yes | partial | yes | ||
Keyboard | yes | yes | yes | yes | yes | |
color input |
Accessibly supported | yes | yes | partial | not implemented | no |
Feature implemented | yes | yes | yes | no | yes | |
Mapped | yes | yes | partial | n/a | yes | |
Name/Description | yes | yes | yes | n/a | partial | |
Keyboard | yes | yes | yes | n/a | no | |
datalist |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | no | |
Mapped | yes | yes | yes | partial | yes | |
Keyboard | yes | yes | yes | yes | yes | |
output |
Accessibly supported | yes | yes | yes | not implemented | yes |
Feature implemented | yes | yes | yes | no | yes | |
Mapped | yes | yes | yes | n/a | yes | |
Name/Description | yes | yes | yes | n/a | yes | |
progress |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | partial | yes | |
Name/Description | yes | yes | partial | partial | ||
meter |
Accessibly supported | partial | yes | partial | not implemented | yes |
Feature implemented | yes | yes | yes | no | yes | |
Mapped | partial | yes | partial | n/a | yes | |
Name/Description | yes | yes | yes | n/a | yes | |
details |
Accessibly supported | yes | yes | yes | not implemented | yes |
Feature implemented | yes | yes | yes | no | yes | |
Mapped | yes | yes | yes | n/a | yes | |
Keyboard | yes | yes | yes | n/a | yes | |
summary |
Accessibly supported | yes | yes | yes | not implemented | yes |
Feature implemented | yes | yes | yes | no | yes | |
Mapped | yes | yes | yes | n/a | yes | |
Name/Description | yes | yes | yes | n/a | yes | |
Keyboard | yes | yes | yes | n/a | yes | |
dialog |
Accessibly supported | yes | yes | not implemented | not implemented | not implemented |
Feature implemented | yes | yes | no | no | no | |
Mapped | yes | yes | n/a | n/a | n/a | |
Keyboard | yes | yes | n/a | n/a | n/a |
Properties
Attribute | Criteria | Chrome/Opera | Edge | Firefox | IE | Safari |
---|---|---|---|---|---|---|
hidden |
Accessibly supported | yes | yes | yes | yes | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | yes | yes | |
required |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | yes | yes | |
Error state mapped | yes | yes | yes | no | yes | |
placeholder |
Accessibly supported | yes | yes | yes | partial | yes |
Feature implemented | yes | yes | yes | yes | yes | |
Mapped | yes | yes | yes | no | yes | |
Name/Description | yes | yes | partial | partial | yes |
How to Test
Each feature has its own test page, including the pass criteria, and spec references for the required mapping from HTML feature to the platform accessibility layer.
Browser support for a feature is automatically detected. This checks to see if the browser claims it supports the feature via object detection, not if it is fully supported correctly. If a feature is not supported, it is excluded from the scoring.
If a feature is supported, the next step is to test if it is correctly mapped to the platform accessibility layer. This must be tested manually. This can be done with one of the tools listed at the end of this section.
To be accessibly supported, elements that represent interactive controls must be fully keyboard accessible. Actions that must be able to be performed are listed in the test file, but shortcuts may be different between browsers and platforms.