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

ElementCriteriaChrome/OperaEdgeFirefoxIESafari
articleAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesnoyes
Name/Descriptionyesyes partialyes
sectionAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesnoyes
Name/Descriptionyesyes partialyes
navAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesnoyes
Name/Descriptionyesyes partialyes
asideAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesnoyes
Name/Descriptionyesyes partialyes
headerAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesnoyes
Name/Descriptionyesyes partialYes
footerAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesnoyes
Name/Descriptionyesyes partialyes
figureAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesnoyes
Name/Descriptionyesyes partialyes
figcaptionAccessibly supportedyesyesyesnoyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesnoyes
mainAccessibly supportedyesyesyesnot implementedyes
Feature implementedyesyesyesnoyes
Mappedyesyesyesn/ayes
Name/Descriptionyesyes n/ayes

Text-level

ElementCriteriaChrome/OperaEdgeFirefoxIESafari
timeAccessibly supportedyesyesyesnot implementedyes
Feature implementedyesyesyesnoyes
Mappedyesyesyesn/ayes
Name/Descriptionyesyesyesn/ayes
markAccessibly supportedyesyesyesyesyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesnoyes
Name/Descriptionyesyesyespartialyes

Graphics & Media

ElementCriteriaChrome/OperaEdgeFirefoxIESafari
canvasAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
drawFocusIfNeeded()yesyesyesnoyes
Mappedyesyesyesnoyes
sub-DOMyesyesyesyesyes
audioAccessibly supportedyesyesyesyesyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesyesyes
Keyboardyesyesnoyesyes
videoAccessibly supportedyesyesyesyesyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesyesyes
Keyboardyesyesnoyesyes
trackAccessibly supportedyesyesyesyesyes
Feature implementedyesyesyesyesyes
WebVTT or TTMLyesyesyesyesyes

Controls

ElementCriteriaChrome/OperaEdgeFirefoxIESafari
search inputAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesnoyes
Name/Descriptionyesyes partialyes
tel inputAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesnoyes
Name/Descriptionyesyes partialyes
url inputAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesnoyes
Name/Descriptionyesyes partialyes
Error state mappedyesyes noyes
email inputAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesnoyes
Name/Descriptionyesyesyesyesyes
Error state mappedyesyesyesnoyes
datetime-​local inputAccessibly supportedyesyesnot implementednot implementednot implemented
Feature implementedyesyesnonono
Mappedyesyesn/an/an/a
Name/Descriptionyesyesn/an/an/a
Keyboardyesyesn/an/an/a
date inputAccessibly supportedyesyesyesnot implementednot implemented
Feature implementedyesyesyesnono
Mappedyesyesyesn/an/a
Name/Descriptionyesyesyesn/an/a
Keyboardyesyesyesn/an/a
month inputAccessibly supportedyesyesnot implementednot implementednot implemented
Feature implementedyesyesnonono
Mappedyesyesn/an/an/a
Name/Descriptionyesyesn/an/an/a
Keyboardyesyesn/an/an/a
week inputAccessibly supportedyesyesnot implementednot implementednot implemented
Feature implementedyesyesnonono
Mappedyesyesn/an/an/a
Name/Descriptionyesyesn/an/an/a
Keyboardyesyesn/an/an/a
time inputAccessibly supportedyesyesyesnot implementednot implemented
Feature implementedyesyesyesnono
Mappedyesyesyesn/an/a
Name/Descriptionyesyesyesn/an/a
Keyboardyesyesyesn/an/a
number inputAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesnoyes
Name/Descriptionyesyesyespartialyes
Error state mappedyesyesyesnoyes
Keyboardyesyesyesyesyes
range inputAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesyesyes
Name/Descriptionyesyes partialyes
Keyboardyesyesyesyesyes
color inputAccessibly supportedyesyespartialnot implementedno
Feature implementedyesyesyesnoyes
Mappedyesyespartialn/ayes
Name/Descriptionyesyesyesn/apartial
Keyboardyesyesyesn/ano
datalistAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesno
Mappedyesyesyespartialyes
Keyboardyesyesyesyesyes
outputAccessibly supportedyesyesyesnot implementedyes
Feature implementedyesyesyesnoyes
Mappedyesyesyesn/ayes
Name/Descriptionyesyesyesn/ayes
progressAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyespartialyes
Name/Descriptionyesyes partialpartial
meterAccessibly supportedyesyesyesnot implementedyes
Feature implementedyesyesyesnoyes
Mappedyesyesyesn/ayes
Name/Descriptionyesyesyesn/ayes
detailsAccessibly supportedyesyesyesnot implementedyes
Feature implementedyesyesyesnoyes
Mappedyesyesyesn/ayes
Keyboardyesyesyesn/ayes
summaryAccessibly supportedyesyesyesnot implementedyes
Feature implementedyesyesyesnoyes
Mappedyesyesyesn/ayes
Name/Descriptionyesyesyesn/ayes
Keyboardyesyesyesn/ayes
dialogAccessibly supportedyesyesyesyes
Feature implementedyesyesyesnoyes
Mappedyesyesyesn/ayes
Keyboardyesyesyesn/ayes

Properties

AttributeCriteriaChrome/OperaEdgeFirefoxIESafari
hiddenAccessibly supportedyesyesyesyesyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesyesyes
requiredAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesyesyes
Error state mappedyesyesyesnoyes
placeholderAccessibly supportedyesyesyespartialyes
Feature implementedyesyesyesyesyes
Mappedyesyesyesnoyes
Name/Descriptionyesyespartialpartialyes

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.