HTML5 Accessibility - editors draft

Get the current accessibility support status of HTML5 features across major browsers.

This site tests which new 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.

Feature Support

Sections & Grouping

Element Criteria Chrome/Opera Edge Firefox IE Safari
article Accessibly supported yes partial yes partial yes
Feature implemented yes yes yes yes yes
Mapped yes no yes no yes
Name/Description   partial   partial yes
section Accessibly supported yes partial yes partial yes
Feature implemented yes yes yes yes yes
Mapped yes no yes no yes
Name/Description   partial   partial yes
nav Accessibly supported yes partial yes partial yes
Feature implemented yes yes yes yes yes
Mapped yes no yes no yes
Name/Description   partial   partial yes
aside Accessibly supported yes partial yes partial yes
Feature implemented yes yes yes yes yes
Mapped yes no yes no yes
Name/Description   partial   partial yes
header Accessibly supported yes partial yes partial yes
Feature implemented yes yes yes yes yes
Mapped partial no yes no yes
Name/Description partial partial   partial Yes
footer Accessibly supported yes partial yes partial yes
Feature implemented yes yes yes yes yes
Mapped yes no yes no yes
Name/Description   partial   partial yes
figure Accessibly supported yes partial yes partial partial
Feature implemented yes yes yes yes yes
Mapped yes no yes no no
Name/Description   partial   partial partial
figcaption Accessibly supported yes no yes no yes
Feature implemented yes yes yes yes yes
Mapped yes no yes no yes
main Accessibly supported yes partial yes not implemented yes
Feature implemented yes yes yes no yes
Mapped yes no yes n/a yes
Name/Description   partial   n/a yes

Text-level

Element Criteria Chrome/Opera Edge Firefox IE Safari
time Accessibly supported yes not implemented yes not implemented not implemented
Feature implemented yes no yes no no
Mapped yes n/a yes n/a n/a
Name/Description yes n/a   n/a n/a
mark Accessibly supported yes partial partial partial partial
Feature implemented yes yes yes yes yes
Mapped yes no no no no
Name/Description yes partial   partial partial

Graphics & Media

Element Criteria Chrome/Opera Edge Firefox IE Safari
canvas Accessibly supported yes partial yes partial partial
Feature implemented yes yes yes yes yes
drawFocusIfNeeded() yes no yes no yes
Mapped yes no yes no no
sub-DOM yes yes yes yes yes
audio Accessibly supported partial yes yes yes partial
Feature implemented yes yes yes yes yes
Mapped yes yes yes yes yes
Keyboard yes yes yes yes no
video Accessibly supported yes partial partial yes partial
Feature implemented yes yes yes yes yes
Mapped yes yes yes yes yes
Keyboard yes partial no yes no
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 partial yes partial yes
Feature implemented yes yes yes yes yes
Mapped yes no yes no yes
Name/Description   partial   partial yes
tel input Accessibly supported yes partial yes partial partial
Feature implemented yes yes yes yes yes
Mapped yes no yes no no
Name/Description   partial   partial yes
url input Accessibly supported yes partial yes partial partial
Feature implemented yes yes yes yes yes
Mapped yes no yes no no
Name/Description   partial   partial yes
Error state mapped   no   no no
email input Accessibly supported yes partial yes partial partial
Feature implemented yes yes yes yes yes
Mapped yes no yes no no
Name/Description   partial   partial yes
Error state mapped   no   no no
datetime-​local input Accessibly supported partial partial not implemented not implemented not implemented
Feature implemented yes yes no no no
Mapped partial partial n/a n/a n/a
Name/Description   partial n/a n/a n/a
Keyboard yes yes n/a n/a n/a
date input Accessibly supported yes partial not implemented not implemented not implemented
Feature implemented yes yes no no no
Mapped partial partial n/a n/a n/a
Name/Description   partial n/a n/a n/a
Keyboard yes yes n/a n/a n/a
month input Accessibly supported yes partial not implemented not implemented not implemented
Feature implemented yes yes no no no
Mapped partial partial n/a n/a n/a
Name/Description   partial n/a n/a n/a
Keyboard yes yes n/a n/a n/a
week input Accessibly supported yes partial not implemented not implemented not implemented
Feature implemented yes yes no no no
Mapped partial partial n/a n/a n/a
Name/Description   partial n/a n/a n/a
Keyboard yes yes n/a n/a n/a
time input Accessibly supported yes partial not implemented not implemented not implemented
Feature implemented yes yes no no no
Mapped yes partial n/a n/a n/a
Name/Description   partial n/a n/a n/a
Keyboard yes yes n/a n/a n/a
number input Accessibly supported yes partial yes partial yes
Feature implemented yes yes yes yes yes
Mapped yes no yes no yes
Name/Description   partial   partial yes
Error state mapped   no   no no
Keyboard yes yes yes yes yes
range input Accessibly supported yes partial yes partial yes
Feature implemented yes yes yes yes yes
Mapped yes yes yes yes yes
Name/Description   partial   partial yes
Keyboard yes yes yes yes yes
color input Accessibly supported yes not implemented partial not implemented not implemented
Feature implemented yes no yes no no
Mapped yes n/a partial n/a n/a
Name/Description   n/a   n/a n/a
Keyboard yes n/a yes n/a n/a
datalist Accessibly supported partial partial yes partial not implemented
Feature implemented yes yes yes yes no
Mapped no partial yes partial n/a
Keyboard yes yes yes yes n/a
output Accessibly supported yes not implemented yes not implemented partial
Feature implemented yes no yes no yes
Mapped yes n/a yes n/a no
Name/Description   n/a   n/a partial
progress Accessibly supported yes partial yes partial partial
Feature implemented yes yes yes yes partial
Mapped yes yes yes partial partial
Name/Description   partial   partial partial
meter Accessibly supported partial partial no not implemented partial
Feature implemented yes yes yes yes
Mapped partial yes partial n/a partial
Name/Description   partial   n/a partial
details Accessibly supported yes not implemented not implemented not implemented yes
Feature implemented yes no no no yes
Mapped yes n/a n/a n/a yes
Keyboard yes n/a n/a n/a yes
summary Accessibly supported yes not implemented not implemented not implemented partial
Feature implemented yes no no no yes
Mapped yes n/a n/a n/a no
Name/Description   n/a n/a n/a partial
Keyboard yes n/a n/a n/a yes
toolbar menu Accessibly supported not implemented not implemented not implemented not implemented not implemented
Feature implemented no no no no no
Mapped n/a n/a n/a n/a n/a
Keyboard n/a n/a n/a n/a n/a
context menu Accessibly supported not implemented not implemented yes not implemented not implemented
Feature implemented no no yes no no
Mapped n/a n/a yes n/a n/a
Keyboard n/a n/a yes n/a n/a
menuitem Accessibly supported not implemented not implemented yes not implemented not implemented
Feature implemented no no yes no no
Mapped n/a n/a yes n/a n/a
Keyboard n/a n/a yes n/a n/a
dialog Accessibly supported yes not implemented not implemented not implemented not implemented
Feature implemented yes no no no no
Mapped yes n/a n/a n/a n/a
Keyboard yes n/a n/a n/a n/a

Properties

Attribute Criteria Chrome/Opera Edge Firefox IE Safari
hidden Accessibly supported yes no yes yes yes
Feature implemented yes yes yes yes yes
Mapped yes no yes yes yes
required Accessibly supported yes partial yes partial partial
Feature implemented yes yes yes yes yes
Mapped yes yes yes yes yes
Error state mapped   no   no no
placeholder Accessibly supported partial partial partial partial yes
Feature implemented yes yes yes yes yes
Mapped yes no yes no yes
Name/Description partial partial 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 Accessiblity was developed by The Paciello Group, your accessibility partner. Contact us for solutions to your accessibility issues.

Further design and development by David Storey and Melanie Richards.