HTML5 Accessibility

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

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 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 partial yes yes partial yes
Feature implemented yes yes yes yes yes
Mapped partial 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 partial
Feature implemented yes yes yes yes yes
Mapped yes yes yes no no
Name/Description yes yes   partial partial
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 not implemented
Feature implemented yes yes yes no no
Mapped yes yes yes n/a n/a
Name/Description yes yes   n/a n/a
mark Accessibly supported yes yes partial partial partial
Feature implemented yes yes yes yes yes
Mapped yes yes no no no
Name/Description yes yes   partial partial

Graphics & Media

Element Criteria Chrome/Opera Edge Firefox IE Safari
canvas Accessibly supported yes yes yes partial partial
Feature implemented yes yes yes yes yes
drawFocusIfNeeded() yes yes yes no yes
Mapped yes yes 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 no yes yes yes yes
Keyboard yes yes yes yes no
video Accessibly supported partial yes partial yes partial
Feature implemented yes yes yes yes yes
Mapped no yes yes yes yes
Keyboard yes yes 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 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 partial
Feature implemented yes yes yes yes yes
Mapped yes yes yes no no
Name/Description yes yes   partial yes
url input Accessibly supported partial yes yes partial partial
Feature implemented yes yes yes yes yes
Mapped yes yes yes no no
Name/Description yes yes   partial yes
Error state mapped no yes   no no
email input Accessibly supported partial yes yes partial partial
Feature implemented yes yes yes yes yes
Mapped yes yes yes no no
Name/Description yes yes   partial yes
Error state mapped no yes   no no
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 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
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 partial yes not implemented not implemented not implemented
Feature implemented yes yes no no no
Mapped partial 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 partial yes not implemented not implemented not implemented
Feature implemented yes yes no no no
Mapped partial 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
number input Accessibly supported partial yes yes partial partial
Feature implemented yes yes yes yes yes
Mapped yes yes yes no yes
Name/Description yes yes   partial yes
Error state mapped no yes   no no
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 not implemented
Feature implemented yes yes yes no no
Mapped yes yes partial n/a n/a
Name/Description yes yes   n/a n/a
Keyboard yes yes yes n/a n/a
datalist Accessibly supported partial yes yes partial not implemented
Feature implemented yes yes yes yes no
Mapped no yes yes partial n/a
Keyboard yes yes yes yes n/a
output Accessibly supported partial yes yes not implemented partial
Feature implemented yes yes yes no yes
Mapped yes yes yes n/a no
Name/Description partial yes   n/a partial
progress Accessibly supported yes yes yes partial partial
Feature implemented yes yes yes yes partial
Mapped yes yes yes partial partial
Name/Description yes yes   partial partial
meter Accessibly supported partial yes no not implemented partial
Feature implemented yes yes yes yes
Mapped partial yes partial n/a partial
Name/Description yes yes   n/a partial
details Accessibly supported yes not implemented yes not implemented yes
Feature implemented yes no yes no yes
Mapped yes n/a yes n/a yes
Keyboard yes n/a yes n/a yes
summary Accessibly supported partial not implemented yes not implemented partial
Feature implemented yes no yes no yes
Mapped partial n/a yes n/a no
Name/Description partial n/a yes n/a partial
Keyboard yes n/a yes 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 yes yes yes yes
Feature implemented yes yes yes yes yes
Mapped yes yes yes yes yes
required Accessibly supported partial yes yes partial partial
Feature implemented yes yes yes yes yes
Mapped yes yes yes yes yes
Error state mapped no yes   no no
placeholder Accessibly supported partial yes partial partial partial
Feature implemented yes yes yes yes yes
Mapped yes yes yes no yes
Name/Description partial yes partial partial partial

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.