Implementation Report (in progress)

For ARIA in HTML rules implemented in W3C HTML checker

last updated 08 July 2018

Rules of ARIA attributes usage by HTML language feature
HTML language feature

Implicit ARIA semantics -

SHOULD NOT be used

ARIA roles, states and properties which MAY be used Test case Implemented in W3C Validator
a element with a href role=link

Roles: button, checkbox, menuitem, menuitemcheckbox, menuitemradio, option - (changed), radio, switch - (new), tab or treeitem

DPub Roles: doc-backlink, doc-biblioref, doc-glossref, doc-noteref - (new)

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

a-href yes
a element without a href No corresponding role

Any role

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

a-no-href no issue #638 marked as wontfix
address No corresponding role

Any role

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any).

address yes issue #637 - fixed
area with a href role=link

No role

global aria-* attributes and any aria-* attributes applicable to the link role.

area yes
article role=article

Roles: feed - (new), presentation, none, document, application, main or region.
global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

article yes
aside role=complementary

Roles: feed - (new), note, presentation, none, region or search.

DPub Roles: doc-example, doc-footnote, doc-pullquote, doc-tip - (new)

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

aside yes
audio No corresponding role

Role: application
global aria-* attributes and any aria-* attributes applicable to the application role.

audio yes
base No corresponding role No role or aria-* attributes base yes
body No corresponding role

No role

global aria-* attributes and any aria-* attributes applicable to the document role.

not tested  
button role=button

Roles: checkbox, link, menuitem, menuitemcheckbox, menuitemradio,option - (changed), radio, switch - (new) or tab
global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

button yes - fixed Partial issue #639
button type="menu" role=button

Roles: menuitem.
global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any) (changed)

type=menu not tested
canvas No corresponding role

Any role

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

canvas yes
caption No corresponding role

No role

global aria-* attributes

caption yes, fixed issue #640

col, colgroup

No corresponding role No role or aria-* attributes col & colgroup yes, fixed issue #645 and yes, fixed issue #646
datalist role=listbox

No role

global aria-* attributes and any aria-* attributes applicable to the listbox role.

datalist partial issue #653
dd role=definition

No role

global aria-* attributes and any aria-* attributes applicable to the definition role.

dd no issue #659
details role=group

No role

global aria-* attributes and any aria-* attributes applicable to the group role.

details yes
dialog role=dialog

Role: alertdialog

global aria-* attributes and any aria-* attributes applicable to the dialog role.

dialog yes
div No corresponding role

Any role

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

div yes
dl No corresponding role

Role: group,list presentation or none

DPub Role: doc-glossary - (new)

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

dl partial issue 671
dt role=term

Role: listitem

global aria-* attributes and any aria-* attributes applicable to the allowed role.

dt partial issue 672
embed No corresponding role

Role: application, document, presentation, none or img

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

embed yes
figcaption - (new) No corresponding role

Roles: group, presentation or none

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

figcaption partial issue 673
fieldset No corresponding role

Roles: group, none, or presentation

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

fieldset no issue 674
figure role=figure - (new)

Roles: group, none or presentation

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

figure yes
form role=form

Role: search, none or presentation

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

form yes

grouping content elements not listed elsewhere:

p, pre, blockquote

No corresponding role

Any role

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

  yes
h1 to h6 element role=heading, with the aria-level = positive integer

Role: tab, none or presentation

DPub Role: doc-subtitle - (new)

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

 

yes
hr role=separator

Roles: none or presentation

DPub Role: doc-pagebreak - (new)

global aria-* attributes and any aria-* attributes applicable to the separator role.

hr yes
html No corresponding role No role or aria* attributes    
iframe No corresponding role

Role: application, document, or img

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

iframe yes (note: none, presentation are allowed)
img with alt="" No corresponding role

Role: none or presentation(changed)

No aria* attributes except aria-hidden (changed)

   
img with alt="some text" role=img

Any role except presentation or none (changed)

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   
input type= button role=button

Role: link, menuitem, menuitemcheckbox, menuitemradio, option - (changed), radio, switch or tab

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   
input type= checkbox

role=checkbox

Role: button (when used in conjunction with aria-pressed), menuitemcheckbox, option - (changed) or switch

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

Note: the HTML checked attribute may be used instead of the aria-checked attribute for menuitemcheckbox, option or switch when used on type=checkbox. (changed)

   
input type=color No corresponding role No role

global aria-* attributes

   
input type=date No corresponding role

No role

global aria-* attributes

   
input type=datetime No corresponding role

No role

global aria-* attributes

   
input type=email with no list attribute role=textbox

No role

global aria-* attributes and any aria-* attributes applicable to the textbox role

   
input type=file No corresponding role

No role

global aria-* attributes

   
input type=hidden No corresponding role No role or aria* attributes hidden no issue 679
input type= image role=button

Role: link, menuitem, menuitemcheckbox, menuitemradio, radio or switch

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   
input type=month No corresponding role

No role

global aria-* attributes

   
input type=number role=spinbutton

No role

global aria-* attributes and any aria-* attributes applicable to the spinbutton role.

   
input type=password No corresponding role - (changed)

No role

global aria-* attributes and aria-required - (changed)

   
input type=radio role=radio

Role:menuitemradio

global aria-* attributes and any aria-* attributes applicable to the menuitemradio role.

Note: the HTML checked attribute may be used instead of the aria-checked attribute for menuitemradio when used on type=checkbox. (changed)

   
input type=range role=slider

No role

global aria-* attributes and any aria-* attributes applicable to the slider role.

   
input type= reset role=button

No role

global aria-* attributes and any aria-* attributes applicable to the button role.

   
input type=search, with no list attribute role=searchbox - (new)

No role

global aria-* attributes and any aria-* attributes applicable to the searchbox role.

   
input type=submit role=button

No role

global aria-* attributes and any aria-* attributes applicable to the button role.

   
input type=tel, with no list attribute role=textbox

No role

global aria-* attributes and any aria-* attributes applicable to the textbox role.

   
input type=text, with no list attribute role=textbox

No role

global aria-* attributes and any aria-* attributes applicable to the textbox role.

   
input type= text, search, tel, url, or email with a list attribute role=combobox

No role

global aria-* attributes and any aria-* attributes applicable to the combobox role.

   
input type= time No corresponding role

No role

global aria-* attributes

   
input type=url with no list attribute role=textbox

No role

global aria-* attributes and any aria-* attributes applicable to the textbox role.

   
input type=week No corresponding role

No role

global aria-* attributes

   

ins and del

No corresponding role

Any role

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   
keygen No corresponding role

No role

global aria-* attributes

   
label No corresponding role

No role

global aria-* attributes

   
legend No corresponding role

No role

global aria-* attributes

   
li element whose parent is an ol or ul role=listitem

Role: menuitem, menuitemcheckbox, menuitemradio, option, none, presentation, radio - (changed), separator, tab, or treeitem

DPub Roles: doc-biblioentry, doc-endnote - (new)

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   
main role=main

No role

global aria-* attributes and any aria-* attributes applicable to the main role.

   
map No corresponding role No role or aria* attributes    
math role=math

No role

global aria-* attributes and any aria-* attributes applicable to the math role.

   
meta No corresponding role No role or aria* attributes    
meter No corresponding role

No role

global aria-* attributes

   
noscript No corresponding role No role or aria* attributes    
object No corresponding role

Role: application, document, or img

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   
ol role=list

Role: directory, group, listbox, menu, menubar,none, presentation , radiogroup - (changed), tablist, toolbar or tree

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   
optgroup role=group

No role

global aria-* attributes and any aria-* attributes applicable to the group role.

   
option element that is in a list of options or that represents a suggestion in a datalist role=option

No role

global aria-* attributes and any aria-* attributes applicable to the option role.

   
output role=status

Any role

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   
param No corresponding role No role or aria* attributes    
picture No corresponding role No role or aria* attributes    
progress role=progressbar

No role

global aria-* attributes and any aria-* attributes applicable to the progressbar role.

   
script No corresponding role No role or aria* attributes    
section role=region if the section element has an accessible name. Otherwise, no corresponding role.

Roles: alert, alertdialog, application, banner, complementary, contentinfo, dialog, document,feed - (new), log, main, marquee, navigation, none, presentation, search, status or tabpanel - (changed)

DPub Roles: doc-abstract, doc-acknowledgments, doc-afterword, doc-appendix, doc-bibliography, doc-chapter, doc-colophon, doc-conclusion, doc-credit, doc-credits, doc-dedication, doc-endnotes, doc-epilogue, doc-errata, doc-example, doc-foreword, doc-index, doc-introduction, doc-notice, doc-pagelist, doc-part, doc-preface, doc-prologue, doc-pullquote, doc-qna, doc-toc - (new)

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   
select (with NO multiple attribute and NO size attribute having value greater than 1) (changed) role=combobox

Role: menu

global aria-* attributes and any aria-* attributes applicable to the combobox or menu role. - (changed)

   
select (with a multiple attribute or a size attribute having value greater than 1) (new) role=listbox

No role

global aria-* attributes and any aria-* attributes applicable to the listbox role.

   
source No corresponding role No role or aria* attributes    
span No corresponding role

Any role

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   
style No corresponding role No role or aria* attributes    
SVG No corresponding role

Role: application, document, or img

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   
summary role=button

Role: button with aria-expanded="true" if the parent (details) element's open attribute is present, aria-expanded="false" otherwise.

global aria-* attributes and any aria-* attributes applicable to the button role.

   
table role=table - (new)

Any role

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   
template No corresponding role No role or aria* attributes    
textarea role=textbox

No role

global aria-* attributes and any aria-* attributes applicable to the textbox role.

   

tbody, thead, tfoot

role=rowgroup

Any role

global aria-* attributes and any aria-*attributes applicable to the allowed roles and implied role (if any).

   
title No corresponding role No role or aria* attributes    
td

role=cell if a descendant of a table element

Any role

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   

Text level semantic elements not listed elsewhere:

em, strong, small, s, cite, q, dfn, abbr, time, code, var, samp, kbd, sub and sup, i, b, u, mark, ruby, rt, rp, bdi, bdo, br, wbr

No corresponding role Any role

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   
th role=columnheader or rowheader

Any role

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   

tr

role=row, may be explicitly declared when child of a table element with role=grid

Any role

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   
track No corresponding role No role or aria* attributes    
ul role=list

Role: directory, group, listbox, menu, menubar, radiogroup - (changed), tablist, toolbar, tree, presentation

global aria-* attributes and any aria-* attributes applicable to the allowed roles and implied role (if any)

   
video No corresponding role

Role: application

global aria-* attributes and any aria-* attributes applicable to the application role.

   
Element with a disabled attribute aria-disabled="true"

Use the disabled attribute on any element that is allowed the disabled attribute in HTML5.

Only use the aria-disabled attribute for elements that are not allowed to have a disabled attribute in HTML5

   
Element with a placeholder attribute -(new) aria-placeholder=""

Use the placeholder attribute on any element that is allowed the placeholder attribute in HTML5.

Only use the aria-placeholder attribute on elements that are not allowed to have a placeholder attribute in HTML5.

   
Element with a required attribute aria-required="true"

Use the aria-required attribute on any element that is allowed the required attribute in HTML5. MUST NOT be set to false if the required attribute is set. - (changed)

MAY also be used for elements that have an ARIA role which allows the aria-required attribute.

   
Element with a readonly attribute aria-readonly="true"

Use the readonly attribute on any element that is allowed the readonly attribute in HTML5.

Only use the aria-readonly attribute for elements that are not allowed to have a readonly attribute in HTML5

   
Element with a hidden attribute aria-hidden="true"

Use the aria-hidden attribute on any HTML element.

Note: If an element has a hidden attribute, an aria-hidden attribute is not required.

   
Element that is a candidate for constraint validation but that does not satisfy its constraints aria-invalid="true"

The aria-invalid attribute may be used on any HTML5 element that allows global aria-* attributes except for a submittable element that does not satisy its validation constraints. - (changed)

   
Element with contenteditable attribute aria-readonly="false" Do not set aria-readonly="true" on an element that has a contenteditable attribute set. - (new)