HTML5 Accessibility

Get the current accessibility support status of HTML5 features across major browsers. Editor’s draft, April 2022

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 yes 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 yes 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 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
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 yes yes
Feature implemented yes yes yes no yes
Mapped yes yes yes n/a yes
Keyboard yes yes yes n/a yes

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.

Browser-Based Dev Tools

Desktop Apps

Notes & Further Resources

Contributors

HTML5 Accessibility is developed and maintained by Steve Faulkner

Further design and development by David Storey and Melanie Richards.