Last updated 19 August 2021
Status of checks against the ARIA in HTML rules in the following implementations:
The following tables provide a breakdown of the implementation of the rules for ARIA attribute usage by HTML element by conformance checkers which actively refer to the ARIA in HTML specification. These conformance checkers have either implemented the rules of ARIA in HTML, or are in process of accepting implementation gaps, and rolling out updates.
As of 06-26-2021 all features have been verified to have at least two implementations. There are no features at risk.
Note: IBM presently does not return errors/warnings when explicit roles are specified on elements which natively expose that role implicitly.
HTML element |
Implicit ARIA semantics (explicitly assigning these in markup is NOT RECOMMENDED) |
ARIA roles, states and properties which MAY be used | Test Case | Implemented in W3C Validator | Implemented in ARC Toolkit | Implemented in IBM Accessibility Checker |
---|---|---|---|---|---|---|
a with href
|
role=link
|
Roles:
DPub Roles:
Global
It is NOT RECOMMENDED to use |
test 1 - a-href test 2 - aria-disabled |
test 1 - yes
test 2 - yes - issue 1112 |
test 1 - yes - issue 16 test 2 - yes - issue 27 |
test 1 - yes
test 2 - not yet implemented - issue 358 |
a without href
|
No corresponding role |
Any
Global |
a-no-href | yes | yes - issue 17 |
yes |
abbr
|
No corresponding role |
Any
Global |
abbr | yes | yes | yes |
address
|
No corresponding role |
Any
Global |
address | yes - issue #637 |
yes | yes |
area
|
role=link (with href ) or no corresponding role (without href )
|
No
Global |
area | yes - note: same expectations for area with or without href |
yes - note: same expectations for area with or without href |
yes - note: same expectations for area with or without href |
article
|
role=article
|
Roles:
Global |
article | yes | yes | yes |
aside
|
role=complementary
|
Roles:
DPub Roles:
Global |
aside | yes | yes | yes |
audio
|
No corresponding role |
Role:
Global |
audio | yes | yes | yes |
autonomous custom element |
Role exposed from author defined ElementInternals .
Otherwise no corresponding role.
|
If role defined by
Otherwise, any
Global |
no declared elementInternals role no test case for custom element with role declared via elementInternals |
yes | yes | yes |
b
|
No corresponding role |
Any
Global |
b | yes | yes | yes |
base
|
No corresponding role |
No role or aria-* attributes
|
base | yes | yes | yes |
bdi
|
No corresponding role |
Any
Global |
bdi | yes | yes | yes |
bdo
|
No corresponding role |
Any
Global |
bdo | yes | yes | yes |
blockquote
|
No corresponding role |
Any
Global |
blockquote | yes | yes | yes |
body
|
No corresponding role |
No
Global |
body | yes | yes - issue 30 |
yes |
br
|
No corresponding role |
Roles:
Global |
br | yes - issue 1097 |
yes - pull request |
yes - issue 334 |
button
|
role=button
|
Roles:
Global |
button | yes - issue #639 |
yes | yes |
canvas
|
No corresponding role |
Any
Global |
canvas | yes | yes | yes |
caption
|
No corresponding role |
No
Global |
caption | yes - issue #640 |
yes | yes |
cite
|
No corresponding role |
Any
Global |
cite | yes | yes | yes |
code
|
No corresponding role |
Any
Global |
code | yes | yes | yes |
col
|
No corresponding role |
No role or aria-* attributes
|
col | yes - issue #646 |
yes | yes |
colgroup
|
No corresponding role |
No role or aria-* attributes
|
colgroup | yes - issue #645 |
yes | yes |
data
|
No corresponding role |
Any
Global |
data | yes | yes | yes |
datalist
|
role=listbox
|
No
Global |
datalist | yes - issue #653 |
yes | yes |
dd
|
role=definition
|
No
Global |
dd | yes - issue #659 |
yes | yes |
del
|
No corresponding role |
Any
Global |
del | yes | yes | yes |
dfn
|
role=term
|
Any role
Global |
dfn | yes - issue 1093 |
yes | yes |
details
|
role=group
|
No
Global |
details | yes | yes | yes |
dialog
|
role=dialog
|
Role:
Global |
dialog | yes | yes | yes |
div
|
No corresponding role |
Any
Global |
div | yes | yes | yes |
dl
|
No corresponding role |
Roles:
Global |
dl | yes - issue 671 |
yes | yes |
dt
|
role=term
|
Role:
Global |
dt | yes - issue 672 |
yes
- issue 18 |
yes |
em
|
No corresponding role |
Any
Global |
em | yes | yes | yes |
embed
|
No corresponding role |
Roles:
Global |
embed | yes | yes | yes |
fieldset
|
role=group
|
Roles:
Global |
fieldset | yes - issue 674 |
yes | yes - issue 333 |
figcaption
|
No corresponding role |
Roles:
Global |
figcaption | yes - issue 673 |
yes | yes |
figure
|
role=figure
|
If the
If the
Global |
test 1 - figure no figcaption
test 2 - figure with figcaption |
yes - issue 1108 |
yes - issue 21 |
yes - issue 335 |
footer
|
If not a descendant of an article , aside , main , nav
or section element, or an element with role=article , complementary ,
main , navigation or region
then role=contentinfo .
Otherwise no corresponding role.
|
Roles:
DPub Roles:
Global |
footer | yes | yes | yes |
form
|
If the form element has an
accessible name:
role=form .
Otherwise, no corresponding role.
|
Roles:
Global |
form | yes | yes | yes |
form-associated custom element |
Role exposed from author defined ElementInternals .
Otherwise no corresponding role.
|
If role defined by Otherwise, form-related roles:
Global |
cannot be tested at this time | cannot be tested at this time | cannot be tested at this time | cannot be tested at this time |
h1 to h6
|
role=heading ,
with the aria-level = positive integer.
|
Roles:
DPub Role:
Global |
yes | yes | yes | |
head
|
No corresponding role |
No role or aria-* attributes
|
head | yes | yes | yes |
header
|
If not a descendant of an article , aside , main ,
nav or section element, or an element with role=article ,
complementary , main , navigation
or region then role=banner .
Otherwise no corresponding role
|
Roles:
Global |
header | yes | yes | yes |
hgroup
|
No corresponding role |
Any
Global |
hgroup | yes | yes | yes - issue 336 |
hr
|
role=separator
|
Roles:
DPub Role:
Global |
hr | yes | yes | yes |
html
|
role=document
|
No role or aria-* attributes
|
html | yes | yes - issue 30 |
yes |
i
|
No corresponding role |
Any
Global |
i | yes | yes | yes |
iframe
|
No corresponding role |
Roles:
Global |
iframe | yes | yes | yes |
img with alt="some text"
|
role=img
|
Roles:
DPub Role:
Global |
img with alt="some text" | yes | yes |
not yet implemented - allows any role except presentation or none
- issue 392 |
img with
alt=""
|
role=presentation
|
No role or aria-* attributes
except aria-hidden="true" .
|
img with
alt=""
|
yes - issue 1137 |
yes - issue 36 |
partial implementation - does not flag role=none , presentation as invalid- issue 391 |
img without alt attribute
|
role=img
|
If no author-defined accessible name is provided by other methods:
No
Otherwise, if the |
img no alt | yes |
yes - issue 36 |
yes |
input type=button
|
role=button
|
Roles:
Global |
type=button | yes | yes | yes |
input type=checkbox
|
|
Roles:
Authors SHOULD NOT use the
Otherwise, any global
Note: the HTML
|
test 1: type=checkbox
test 2: see aria-checked test
|
yes - issue 1109 |
yes - issue 24 |
yes - issue 337 |
input type=color
|
No corresponding role |
No
Global |
type=color | yes | yes | yes |
input type=date
|
No corresponding role |
No
Global |
type=date | yes | yes | yes |
input type=datetime-local
|
No corresponding role |
No
Global |
type=datetime-local | yes | yes | yes - issue 341 |
input type=email
with no
list attribute
|
role=textbox
|
No
Global |
type=email | yes | yes | yes |
input type=file
|
No corresponding role |
No
Global |
type=file | yes | yes | yes |
input type=image
|
role=button
|
Roles:
Global |
type=image | yes | yes | yes |
input type=month
|
No corresponding role |
No
Global |
type=month | yes | yes | yes |
input type=number
|
role=spinbutton
|
No
Global |
type=number | yes | yes | yes |
input type=password
|
No corresponding role |
No
Global |
type=password | yes | yes - issue 22 |
yes |
input type=radio
|
role=radio
|
Role:
Authors SHOULD NOT use the
Otherwise, any global
Note: the HTML |
test 1: type=radio
test 2: see aria-checked test |
yes - issue 1109 |
yes - issue 24 |
yes |
input type=range
|
role=slider
|
No
Authors SHOULD NOT use the
Otherwise, any global |
type=range | yes | yes | yes |
input type=reset
|
role=button
|
No
Global |
type=reset | yes | yes | yes |
input type=search ,
with nolist attribute
|
role=searchbox
|
No
Global |
type=search | yes | yes | yes |
input type=submit
|
role=button
|
No
Global |
type=submit | yes | yes | yes |
input type=tel ,
with no list attribute
|
role=textbox
|
No
Global |
type=tel | yes | yes | yes |
input type=text
or with a missing or invalid type , with no list attribute
|
role=textbox
|
Roles:
Global |
type=text | yes | yes | yes |
input type=text ,
search ,
tel ,
url ,
email ,
or with a missing or invalid type , with a list attribute
|
role=combobox
|
No
Authors SHOULD NOT use the
Otherwise, any global |
yes - issue #1117 | yes - issue #39 | partial implementation (does not warn about aria-haspopup use) issue #357 | |
input type=time
|
No corresponding role |
No
Global |
type=time | yes | yes | yes |
input type=url
with no
list attribute
|
role=textbox
|
No
Global |
type=url | yes | yes | yes |
input type=week
|
No corresponding role |
No
Global |
type=week | yes | yes | yes |
ins
|
No corresponding role |
Any
Global |
ins | yes | yes | yes |
kbd
|
No corresponding role |
Any
Global |
kbd | yes | yes | yes |
label
|
No corresponding role |
No
global |
label | yes | yes | yes |
legend
|
No corresponding role |
No
global |
legend | yes | yes | yes |
li
|
role=listitem
|
Roles:
DPub Roles:
Global |
li | yes | yes | yes |
link
|
No corresponding role |
No role or aria-* attributes
|
link | yes | yes | yes |
main
|
role=main
|
No
Global |
main | yes | yes | yes |
map
|
No corresponding role |
No role or aria-* attributes
|
map | yes | yes | yes |
math
|
role=math
|
No
Global |
math | yes | yes | yes |
mark
|
No corresponding role |
Any
Global |
mark | yes | yes | yes |
menu
|
role=list
|
Roles:
Global |
menu | yes | yes | yes - issue 339 |
meta
|
No corresponding role |
No role or aria-* attributes
|
meta | yes | yes | yes |
meter
|
No corresponding role |
No Authors SHOULD NOT use the `aria-valuemax` or `aria-valuemin` attributes on `meter` elements.
Otherwise, any global |
meter | yes | yes | yes |
nav
|
role=navigation
|
Roles:
DPub Roles:
Global |
nav |
yes - issue 1110 |
yes - issue 25 |
yes - issue 342 |
noscript
|
No corresponding role |
No role or aria-* attributes
|
noscript | yes | yes | yes - issue 340 (results are browser dependent) |
object
|
No corresponding role |
Roles:
Global |
object | yes | yes | yes |
ol
|
role=list
|
Roles:
Global |
ol | yes | yes | yes |
optgroup
|
role=group
|
No
Global |
optgroup | yes | yes | yes |
option element that is in a list of options or that
represents a suggestion in a datalist
|
role=option
|
No
Authors SHOULD NOT use the
Global |
test 1: option test 2: option aria-selected |
test 1: yes test 2: yes - issue 1111 |
test 1: yes test 2: yes - issue 26 |
test 1: yes - issue 343 test 2: not yet implemented - issue 344 |
output
|
role=status
|
Any
Global |
output | yes | yes | yes |
p
|
No corresponding role |
Any
Global |
p | yes | yes | yes |
param
|
No corresponding role |
No role or aria-* attributes
|
param | yes | yes | yes |
picture
|
No corresponding role |
No role or aria-* attributes
|
picture | yes | yes | yes |
pre
|
No corresponding role |
Any
Global |
pre | yes | yes | yes |
progress
|
role=progressbar
|
No Authors SHOULD NOT use the `aria-valuemax` attribute on `progress` elements.
Global |
progress | yes | yes | yes |
q
|
No corresponding role |
Any
Global |
q | yes | yes | yes |
rp
|
No corresponding role |
Any
Global |
rp | yes | yes | yes |
rt
|
No corresponding role |
Any
Global |
rt | yes | yes | yes |
ruby
|
No corresponding role |
Any
Global |
ruby | yes | yes | yes |
s
|
No corresponding role |
Any
Global |
s | yes | yes | yes |
samp
|
No corresponding role |
Any
Global |
samp | yes | yes | yes |
script
|
No corresponding role |
No role or aria-* attributes
|
script | yes | yes | yes |
section
|
role=region if the
section element has an accessible name. Otherwise, no corresponding role.
|
Roles:
DPub Roles:
Global |
section | yes | yes | yes |
select (with NO multiple attribute and NO size
attribute having value greater than 1 )
|
role=combobox
|
Role: Authors SHOULD NOT use the
Otherwise, any global |
test 1 - select w/out multiple test 2 - aria-multiselectable |
test 1 - yes test 2 - not yet implemented - issue 1094 |
test 1 - yes test 2 - yes |
test 1 - yes test 2 - yes |
select (with a multiple attribute or a size attribute
having value greater than 1 )
|
role=listbox
|
No Authors SHOULD NOT use the
Otherwise, any global |
test 1 - select w/multiple
test 2 - aria-multiselectable |
test 1 - yes
test 2 - yes - issue 1094 |
test 1 - yes - issue 31
test 2 - yes |
test 1 - yes
test 2 - not yet implemented - issue 345 |
slot
|
No corresponding role | No role or aria-* attributes |
A slot element is not exposed in browsers. |
- | - | - |
small
|
No corresponding role |
Any
Global |
small | yes | yes | yes |
source
|
No corresponding role |
No role or aria-* attributes
|
source | yes | yes | yes |
span
|
No corresponding role |
Any
Global |
span | yes | yes | yes |
strong
|
No corresponding role |
Any
Global |
strong | yes | yes | yes |
style
|
No corresponding role |
No role or aria-* attributes
|
style | yes | yes | yes |
SVG
|
role=graphics-document as defined by
SVG AAM
|
Any Role
Global |
svg | yes - issue 1096 |
yes - pull request |
yes - issue 346 |
sub
|
No corresponding role |
Any
Global |
sub | yes | yes | yes |
summary
|
role=button
|
No
Global |
summary | yes | yes - issue 32 |
yes |
sup
|
No corresponding role |
Any
Global |
sup | yes | yes | yes |
table
|
role=table
|
Any
Global |
table | yes | yes | yes |
tbody
|
role=rowgroup
|
Any
Global |
tbody | yes | yes | yes |
template
|
No corresponding role |
No role or aria-* attributes
|
template | yes | yes | yes |
textarea
|
role=textbox
|
No
Global |
textarea | yes | yes | yes |
tfoot
|
role=rowgroup
|
Any
Global |
tfoot | yes | yes | yes |
thead
|
role=rowgroup
|
Any
Global |
thead | yes | yes | yes |
time
|
No corresponding role |
Any
Global |
time | yes | yes | yes |
title
|
No corresponding role |
No role or aria-* attributes
|
title | yes | yes | yes |
td
|
No corresponding role if the ancestor |
No
Global |
yes - issue 1125 |
|
||
th
|
No corresponding role if the ancestor |
No
Global |
|
|
||
tr
|
role=row
|
No
Global |
|
|
||
track
|
No corresponding role |
No role or aria-* attributes
|
track | yes | yes | yes |
u
|
No corresponding role |
Any
Global |
u | yes | yes | yes |
ul
|
role=list
|
Roles:
Global |
ul | yes | yes | yes |
var
|
No corresponding role |
Any
Global |
var | yes | yes | yes |
video
|
No corresponding role |
Role:
Global |
video | yes | yes | yes |
wbr
|
No corresponding role |
Any
Global
NOTE: these rules will be updated in the next version of ARIA in HTML
|
wbr | yes | yes | yes |
HTML feature |
Implicit ARIA semantics |
HTML feature and aria-* attribute author guidance
|
Test Case | Implemented in W3C Validator | Implemented in ARC Toolkit | Implemented in IBM Accessibility Checker |
---|---|---|---|---|---|---|
Any element where the checked
attribute is allowed
|
aria-checked="true"
|
Use the
Authors SHOULD NOT use the
Authors MAY use the |
checked (2 tests) | yes - issue 1122 |
yes - issue 28 |
not yet implemented - issue 347 |
Any element where the disabled attribute is allowed, including option disabled and optgroup disabled
|
aria-disabled="true"
|
Use the
Authors MAY use the
Authors SHOULD NOT use
Authors MUST NOT use |
disabled (3 tests) | yes - issue 1106 |
yes - issue 20 |
partial implementation: passes tests 1 & 3 (of 3) - issue 348 |
Any element where the placeholder attribute is allowed
|
aria-placeholder="..."
|
Use the
Authors MAY use the
Authors MUST NOT use the |
placeholder (2 tests) | yes - issue 1098 |
yes - issue 12 |
partial implementation test 1 - throws errors for 4 of 8 inputs with aria-placeholder - issue 351.test 2 - properly throws errors for all 8 inputs. |
Any element where the max attribute is allowed: meter, progress, and input.
|
aria-valuemax="..."
|
Use the
Authors MAY use the
Authors SHOULD NOT use
Authors MUST NOT use |
aria-valuemax (2 tests) | yes - issue 1119 | yes - issue 34 |
yes with 3 exceptions - flags error for all but type=number , type=range and progress
- issue 359 |
Any element where the min attribute is allowed: meter, and input.
|
aria-valuemin="..."
|
Use the
Authors MAY use the
Authors SHOULD NOT use
Authors MUST NOT use |
aria-valuemin (2 tests) | yes - issue 1120 |
yes - issue 35 |
yes with 2 exceptions - flags error for all but type=number, and type=range - issue 360 |
Any input element which allows the readonly attribute, or form-associated custom element which allows the readonly attribute.
|
aria-readonly="true"
|
Use the
Authors MAY use the
Authors SHOULD NOT use the
Authors MUST NOT use |
input[readonly] (2 tests) Note: no test for faces readonly. |
yes sufficiently implemented - marks all use of aria-readonly on tested inputs as not allowed. |
yes - issue 13 |
partially implemented test 1 - flags input type=password, date, month, week, time as invalid use of aria-readonly - issue 352test 2 - yes |
Element with
Note: this is equivalent to the |
aria-readonly="false"
|
Authors MUST NOT set aria-readonly="true" on an element that has isContentEditable="true" .
|
aria-readonly test | yes - issue 1105 |
yes - issue 19 |
not yet implemented - issue 353 |
Any element where the required attribute is allowed: input , textarea , and select
|
aria-required="true"
|
Use the
Authors MAY use the
Authors SHOULD NOT use the
Authors MUST NOT use |
required (3 tests) |
yes - issue 1118 |
yes - issue 33 |
test 1 - partial implementation - states 7 inputs that allow for required do not allow for aria-required test 2 - no warning surfaced test 3 - yes - issue 361 |
Any element where the colspan
attribute is allowed: td and th
|
aria-colspan="..."
|
Use the
Authors SHOULD NOT use the
Authors MUST NOT use |
colspan (2 tests) | yes - issue 1107 |
yes - issue 14 |
Not yet implemented: - issue 354 |
Any element where the rowspan
attribute is allowed: td and th
|
aria-rowspan="..."
|
Use the
Authors SHOULD NOT use the
Authors MUST NOT use |
rowspan (2 tests) | yes - issue 1107 |
yes - issue 15 |
Not yet implemented: - issue 354 |
Scenario | Test Case | Expectation | Implemented in W3C Validator | Implemented in ARC Toolkit | Implemented in IBM Accessibility Checker |
---|---|---|---|---|---|
Non-lowercase role | role casing test | Error or warn that role value is not lowercased | yes | yes | not implemented |
Non-lowercase attribute token value | attribute casing test | Error or warn that attribute token value is not lowercased | yes | yes - issue 40 | yes |