Last updated 22 March 2026
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 22 March 2026, the features listed in this report have been verified against the current state of the specification. There are no features at risk due to lack of implementations.
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
|
role=generic
|
Any
Naming Prohibited.
Otherwise, global |
a-no-href | yes | yes - issue 17 |
yes |
abbr
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, global |
abbr | yes | yes | yes |
address
|
role=group
|
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 |
area without href
|
role="generic"
|
Roles:
Naming Prohibited.
Otherwise, global |
area | yes | yes | yes |
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 role=generic.
|
If role defined by
Otherwise, any
Naming Prohibited if exposed as |
no declared elementInternals role no test case for custom element with role declared via elementInternals |
yes | yes | yes |
b
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, global |
b | yes | yes | yes |
base
|
No corresponding role |
No role or aria-* attributes
|
base | yes | yes | yes |
bdi
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, global |
bdi | yes | yes | yes |
bdo
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, global |
bdo | yes | yes | yes |
blockquote
|
No corresponding role |
Any
Global |
blockquote | yes | yes | yes |
body
|
role=generic
|
No
Naming Prohibited.
Otherwise, global |
body | yes | yes - issue 30 |
yes |
br
|
No corresponding role |
Roles:
|
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
Naming Prohibited.
Otherwise, global |
caption | yes - issue #640 |
yes | yes |
cite
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, global |
cite | yes | yes | yes |
code
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, 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
Naming Prohibited.
Otherwise, global |
data | yes | yes | yes |
datalist
|
role=listbox
|
No
No |
datalist | yes - issue #653 |
yes | yes |
dd
|
role=definition
|
No
Global |
dd | yes - issue #659 |
yes | yes |
del
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, 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 |
If a direct child of `dl`, only
Naming Prohibited.
Otherwise, 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
Naming Prohibited.
Otherwise, 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:
Naming Prohibited.
Otherwise, global |
figcaption | yes - issue 673 |
yes | yes |
figure
|
role=figure
|
If the
If no DPUB Roles:
|
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:
Naming Prohibited if exposed as |
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:
Naming Prohibited if exposed as |
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:
Naming Prohibited if exposed as |
header | yes | yes | yes |
hgroup
|
role=group |
Any
Global |
hgroup | yes | yes | yes - issue 336 |
hr
|
role=separator
|
Roles:
DPub Role:
Global |
hr | yes | yes | yes |
html
|
role=generic
|
No role other than document or generic, which are not recommended.
|
html | yes | yes - issue 30 |
yes |
i
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, global |
i | yes | yes | yes |
iframe
|
No corresponding role |
Roles:
Global |
iframe | yes | yes | yes |
img with alt="some text"
|
If the |
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=""
|
If the |
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
|
If the |
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 MUST 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 (allowed but not recommended):
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 MUST 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
|
Roles (allowed but not recommended):
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
|
Roles (allowed but not recommended):
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
Naming Prohibited.
Otherwise, global |
ins | yes | yes | yes |
kbd
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, global |
kbd | yes | yes | yes |
label
|
No corresponding role |
If a
Otherwise, if the
Naming Prohibited if exposed as |
label element | yes - issue 1856 |
yes - issue 84 |
not yet implemented - issue 2335 |
legend
|
No corresponding role |
No
Naming Prohibited.
Otherwise, global |
legend | yes | yes | yes |
li
|
If the `li` is a child of a list element
(`ul`, `ol`,
`menu`)
Otherwise, if the `li` is not a child of a list element it is exposed as
a |
No
Otherwise, any See `ul`, `ol`, or `menu` for allowed roles for list elements.
Global
Authors SHOULD NOT use the following deprecated DPub Roles:
|
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
Naming Prohibited.
Otherwise, 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
Naming Prohibited.
Otherwise, global |
p | yes | yes | yes |
param
|
No corresponding role |
No role or aria-* attributes
|
param | yes | yes | yes |
picture
|
No corresponding role |
No Authors MAY specify the |
aria-hidden on picture | yes | yes | yes |
pre
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, 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
Naming Prohibited.
Otherwise, global |
q | yes | yes | yes |
rp
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, global |
rp | yes | yes | yes |
rt
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, global |
rt | yes | yes | yes |
ruby
|
No corresponding role |
Any
Global |
ruby | yes | yes | yes |
s
|
role=deletion
|
Any
Naming Prohibited.
Otherwise, global |
s | yes | yes | yes |
samp
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, global |
samp | yes | yes | yes |
script
|
No corresponding role |
No role or aria-* attributes
|
script | yes | yes | yes |
search
|
role=search
|
Roles:
Global |
search element PR (no dedicated test case yet) | 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 |
selectedcontent
|
role=generic
|
If used as a valid descendant of a
Otherwise, any Naming Prohibited
Otherwise, global |
selectedcontent | yes - issue 1854 |
in progress - issue 82 |
not yet implemented - issue 2333 |
slot
|
No corresponding role | No role or aria-* attributes |
A slot element is not exposed in browsers. |
- | - | - |
small
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, global |
small | yes | yes | yes |
source
|
No corresponding role |
No role or aria-* attributes
|
source | yes | yes | yes |
span
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, global |
span | yes | yes | yes |
strong
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, 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
Naming Prohibited.
Otherwise, global |
sub | yes | yes | yes |
summary
|
No corresponding role |
No
If not summary for its parent details element, global |
summary (legacy test) summary allowances |
yes | yes - issue 32 |
yes |
sup
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, 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
Naming Prohibited.
Otherwise, 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
Naming Prohibited.
Otherwise, global |
u | yes | yes | yes |
ul
|
role=list
|
Roles:
Global |
ul | yes | yes | yes |
var
|
No corresponding role |
Any
Naming Prohibited.
Otherwise, global |
var | yes | yes | yes |
video
|
No corresponding role |
Role:
Global |
video | yes | yes | yes |
wbr
|
No corresponding role |
|
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 MUST NOT use the
Authors MAY use the |
checked (2 tests) | yes - issue 1122 |
yes - issue 28 |
yes - 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-requiredtest 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 |