HTML Accessibility API Mappings (HTML-AAM) defines how user agents map HTML [[HTML]] elements and attributes to platform accessibility application programming interfaces (APIs). It leverages and extends the [[[core-aam-1.2]]] and the [[[accname-aam-1.1]]] for use with the HTML host language. Documenting these mappings promotes interoperable exposure of roles, states, properties, and events implemented by accessibility APIs and helps to ensure that this information appears in a manner consistent with author intent.

The HTML-AAM is part of the WAI-ARIA suite described in the WAI-ARIA Overview.

This document is subject to change without notice.

This document was initially developed by and with the approval of the HTML Accessibility Taskforce, a joint task force of the Protocols and Formats Working Group and the HTML Working Group. Work continued with the successor groups Accessible Rich Internet Applications Working Group and the Web Applications Working Group. This document is now maintained solely by the Accessible Rich Internet Applications Working Group.

Introduction

This specification defines how HTML user agents respond to and expose [=role=], [=state=] and [=ARIA/property=] information provided for Web content. Unless indicated otherwise, an HTML element or attribute with default [[[WAI-ARIA]]] semantics must be exposed to the platform accessibility APIs according to the relevant WAI-ARIA mappings defined in the [[[core-aam-1.2]]] ([[core-aam-1.2]]) specification.

In some cases, often due to features of the HTML host language or the accessibility API in question, an element or attribute's mapping differs from the corresponding ARIA mappings specified in the [[core-aam-1.2]]. Where an HTML element or attribute does not have any default WAI-ARIA semantics, the applicable mapping for each platform accessibility API is defined by this specification.

This document also adapts the [[[accname-1.2]]] specification for deriving the accessible names and accessible descriptions of [[HTML]] elements, and provides accessible implementation examples for specific HTML elements and features.

Users often access HTML content using assistive technologies that rely on platform accessibility API to obtain and interact with information from the page. This document is part of the following suite of accessibility API mapping specifications for content rendered by user agents:

Accessibility APIs

Accessibility APIs covered by this document are:

If user agent developers need to expose information using other accessibility APIs, it is recommended that they work closely with the developer of the platform where the API runs, and assistive technology developers on that platform.

For more information regarding accessibility APIs, refer to section 1.1 Accessibility APIs of the [[[core-aam-1.2]]].

The classification of a section as normative or non-normative applies to the entire section and all sub-sections of that section.

Normative sections provide requirements that authors, user agents, and assistive technologies MUST follow for an implementation to conform to this specification.

Non-normative sections provide information useful to understanding the specification. Such sections may contain examples of recommended practice, but it is not required to follow such recommendations in order to conform to this specification.

Deprecated

There are currently no deprecated requirements.

Mapping HTML to Accessibility APIs

General Rules for Exposing WAI-ARIA Semantics

WAI-ARIA support was first introduced to HTML in [[HTML5]].

Where an HTML element or attribute has default WAI-ARIA semantics, it MUST be exposed to the platform accessibility APIs in a way that conforms to General rules for exposing WAI-ARIA semantics in the [[[core-aam-1.2]]].

Conflicts Between Native Markup Semantics and WAI-ARIA

Where the host language is [[HTML]], user agents MUST conform to Conflicts between native markup semantics and WAI-ARIA in the [[[core-aam-1.2]]].

Exposing HTML Features That Do Not Directly Map to Accessibility APIs

HTML can include features that are not supported by accessibility APIs at the time of publication. There is not a one to one relationship between all features and platform accessibility APIs. When HTML roles, states and properties do not directly map to an accessibility API, and there is a method in the API to expose a text string, user agents MUST expose the undefined role, states and properties via that method.

For HTML elements or attributes with default WAI-ARIA semantics, user agents MUST conform to Exposing attributes that do not directly map to accessibility API properties in the [[core-aam-1.2]].

HTML Element Role Mappings

Mappings of HTML elements to platform accessibility APIs: ARIA, MSAA + UIA Express, MSAA + IAccessible2, UIA, ATK, and AX
Element [[wai-aria-1.2]] MSAA + IAccessible2 UIA ATK AX Comments
`a` (represents a hyperlink) `link` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`a` (no `href` attribute) `generic` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`abbr` No corresponding role
Roles: `ROLE_SYSTEM_TEXT`; `IA2_ROLE_TEXT_FRAME`
Object attributes: "abbr" attribute on the containing `td` if a single child, text content used as a value
Control Type: `Text`
Role: `ATK_ROLE_STATIC`
Object attributes: "abbr" attribute on the containing `td` if a single child, text content used as a value
AXRole: `AXGroup`
AXSubrole: `(nil)`
AXRoleDescription: `"group"`
`address` `group` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`area` (represents a hyperlink) `link` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`area` (no `href` attribute) `generic` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`article` `article` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`aside` (scoped to the `body` or `main` element) `complementary` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`aside` (scoped to a sectioning content element) `complementary` role if the `aside` element has an accessible name. Otherwise, `generic` role.
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`audio` No corresponding role
Role: `ROLE_SYSTEM_GROUPING`
Control Type: `Group`
Localized Control Type: `"audio"`
Note: If the `controls` attribute is present, UI controls (e.g., play, volume) are exposed as children of the `audio` element in the accessibility tree, and mapped as appropriate for the type of control (e.g., `button` or `slider`).
Text objects associated with loading or error messages, and any UI control not currently displayed, MAY be present in the accessibility tree and marked as hidden or off-screen.
Role: `ATK_ROLE_AUDIO`
AXRole: `AXGroup`
AXSubrole: `AXAudio`
AXRoleDescription: `"audio playback"`
Note: If the `controls` attribute is present, UI controls (e.g., play, volume) are exposed as descendants of an accessible object with a role of `toolbar`, and mapped as appropriate for the type of control (e.g., `button` or `slider`).
autonomous custom element If the author assigned a conforming ARIA role using the `role` attribute, map to that role. Otherwise, the `generic` role.
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`b` `generic` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Exposed by platform specific bold font weight text styles.
`base` No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
`bdi` `generic` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
IA2/ATK: May affect on "writing-mode" text attribute on its text container.
`bdo` `generic` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
IA2/ATK: Exposed as "writing-mode" text attribute on its text container.
`blockquote` `blockquote` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`body` `generic` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`br` No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
May be exposed as '\n' character by the platform interface.
`button` `button` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
A `button`'s mapping will change if the `aria-pressed` or `aria-haspopup` attributes are specified.
`canvas` No corresponding role
Roles: `ROLE_SYSTEM_GRAPHIC`; `IA2_ROLE_CANVAS`
Control Type: `Image`
Descendants of the `canvas` element are mapped separately.
Role: `ATK_ROLE_CANVAS`
AXRole: `AXGroup`
AXSubrole: `(nil)`
AXRoleDescription: `""`
`caption` `caption` role
Use WAI-ARIA mapping
Relations: `IA2_RELATION_LABEL_FOR` with parent `table`
Use WAI-ARIA mapping
Other properties: The `LabeledBy` property for the parent `table` element points to the UIA element for the `caption` element.
Use WAI-ARIA mapping
Relations: `ATK_RELATION_LABEL_FOR` with parent `table`
Use WAI-ARIA mapping
Relations: `ATK_RELATION_LABEL_FOR` with parent `table`
If a descendant of a `table`, the first instance of a `caption` element will provide the `table` its accessible name.
`cite` No corresponding role
No accessible object. Styles used are mapped into text attributes on its text container.
No accessible object. Styles used are exposed by UIA text attributes of the `TextRange` Control Pattern implemented on a parent accessible object.
No accessible object. Styles used are mapped into text attributes on its text container.
AXRole: `AXGroup`
AXSubrole: `(nil)`
AXRoleDescription: `"group"`
`code` `code` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`col` No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
`colgroup` No corresponding role
Role: `ROLE_SYSTEM_GROUPING`
Control Type: `Group`
Localized Control Type: `"colgroup"`
Not mapped
Not mapped
`data` `generic` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`datalist` (represents pre-defined options for `input` element) `listbox` role, with the `aria-multiselectable` property set to "true" if the `datalist`'s selection model allows multiple `option` elements to be selected at a time, and "false" otherwise
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
If `datalist` is not linked to a proper `input` element, then `datalist` element is not mapped to accessibility APIs.
`dd` `definition` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`del` `deletion` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`details` `group` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Localized Control Type: `"details"`
Use WAI-ARIA mapping
Relations: `"ATK_RELATION_DETAILS_FOR"`
Use WAI-ARIA mapping
`dfn` `term` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`dialog` `dialog` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
See also the `dialog` element's `open` attribute.
`div` `generic` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`dl` No corresponding role
Role: `ROLE_SYSTEM_LIST`
States: `STATE_SYSTEM_READONLY`
Control Type: `List`
Role: `ATK_ROLE_DESCRIPTION_LIST`
AXRole: `AXList`
AXSubrole: `AXDefinitionList`
AXRoleDescription: `"definition list"`
`dt` `term` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`em` `emphasis` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`embed` No corresponding role
Roles: `ROLE_SYSTEM_CLIENT`; `IA2_ROLE_EMBEDDED_OBJECT`
States: `STATE_SYSTEM_UNAVAILABLE` for windowless plugin
Control Type: `Pane`
Role: `ATK_ROLE_EMBEDDED`
Depends on format of data file
`fieldset` `group` role
Role: Use WAI-ARIA mapping
Relations: `IA2_RELATION_LABELLED_BY` with child `legend` element
Role: Use WAI-ARIA mapping
Role: Use WAI-ARIA mapping
Relations: `ATK_RELATION_LABELLED_BY` with child `legend` element
Role: Use WAI-ARIA mapping
AXSubrole: `AXFieldset`
AXDescription: value from child `legend` subtree
`figcaption` No corresponding role
Roles: `ROLE_SYSTEM_TEXT`; `IA2_ROLE_CAPTION`
Relations: `IA2_RELATION_LABEL_FOR` with parent `figure` element
Control Type: `Text`
Role: `ATK_ROLE_CAPTION`
Relations: `ATK_RELATION_LABEL_FOR` with parent `figure` element
AXRole: `AXGroup`
AXSubrole: `(nil)`
AXRoleDescription: `"group"`
`figure` `figure` role
Role: Use WAI-ARIA mapping
Relations: `IA2_RELATION_LABELLED_BY` with child `figcaption` element
Role: Use WAI-ARIA mapping
Accessible name derived from `figcaption` according to the `figure` Element Accessible Name Computation
Role: Use WAI-ARIA mapping
Name: related `figcaption` content
Relations: `ATK_RELATION_LABELLED_BY` with child `figcaption` element
AXRole: Use WAI-ARIA mapping
`form` `form` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
If a `form` has no accessible name:
Role: `ATK_ROLE_FORM`
Use WAI-ARIA mapping
If a `form` has no accessible name, do not expose the element as a landmark.
form-associated custom element If the author assigned a conforming ARIA role using the `role` attribute, map to that role. Otherwise, the `generic` role.
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`h1`, `h2`, `h3`, `h4`, `h5`, and `h6` `heading` role, with the `aria-level` property set to the number in the element's tag name.
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`head` No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
`header` (scoped to the `body` element) `banner` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`header` (scoped to the `main` element, or a sectioning content element) `generic` role
Use WAI-ARIA mapping
Control Type: `Group`
Localized Control Type: `"header"`
Role: `ATK_ROLE_HEADER`
Use WAI-ARIA mapping
If a `header` is not scoped to the `body` element, do not expose the element as a `banner` landmark.
`hgroup` `group` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
If an `hgroup` contains multiple heading elements, then the heading element with the highest priority level MAY be treated as the sole heading of the `hgroup`. All other heading elements MAY instead be exposed as if they were `p` elements. See `paragraph` role on Core AAM.
`hr` `separator` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`html` `document` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`i` `generic` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Exposed by platform specific italic text styles.
`iframe` No corresponding role
Role: `IA2_ROLE_INTERNAL_FRAME`
Control Type: `Pane`
Role: `ATK_ROLE_INTERNAL_FRAME`
AXRole: `AXWebArea`
AXSubrole: `(nil)`
AXRoleDescription: `"html content"`
`img` `img` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`img` (`alt` attribute value is an empty string, i.e. `alt=""` or `alt` with no value in the markup)
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`input` (`type` attribute in the Button state) `button` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`input` (`type` attribute in the Checkbox state) `checkbox` role, with the `aria-checked` state set to "mixed" if the element's `indeterminate` IDL attribute is true, or "true" if the element's checkedness is true, or "false" otherwise
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`input` (`type` attribute in the Color state) No corresponding role
If implemented as a textbox:
Roles: `ROLE_SYSTEM_TEXT`
If implemented as a color picker:
Roles: `IA2_ROLE_COLOR_CHOOSER`
If implemented as a textbox:
Control Type: `Edit`
Localized Control Type: "edit"
If implemented as a color picker:
Control Type: `button`
Localized Control Type: "color picker"
If implemented as a button, use WAI-ARIA mapping for `button`.
If implemented as a textbox, use WAI-ARIA mapping for `textbox`.
If implemented as a textbox:
AXRole: `AXTextField`
AXSubrole: `(nil)`
AXRoleDescription: `"text field"`
If implemented as a color picker:
AXRole: `AXColorWell`
AXSubrole: `(nil)`
AXRoleDescription: `"color well"`
If implemented as a color picker, any UI controls presented for selecting a color are exposed in the accessibility tree, associated with the `input` element, and mapped as appropriate for the type of control (e.g. button or slider).
`input` (`type` attribute in the Date state) No corresponding role
If implemented as a textbox:
Role: `ROLE_SYSTEM_TEXT`
Object attributes: `text-input-type:date`
If implemented as a date picker:
Role: `IA2_ROLE_DATE_EDITOR`
Depends on UI design of implementation. The UI in Windows 10 Edge, for example, is a composite of multiple spinners.
Role: `ATK_ROLE_CALENDAR`
AXRole: `AXDateField`
AXSubrole: `(nil)`
AXRoleDescription: `"date field"`
`input` (`type` attribute in the Local Date and Time state) No corresponding role
Role: `IA2_ROLE_DATE_EDITOR`
Depends on UI design of implementation. The UI in Windows 10 Edge, for Example, is a composite of multiple spinners.
Role: `ATK_ROLE_CALENDAR`
AXRole: `AXTextField`
AXSubrole: `(nil)`
AXRoleDescription: `"text field"`
`input` (`type` attribute in the E-mail state with no suggestions source element) `textbox` role
Use WAI-ARIA mapping
Object attributes: `text-input-type:email`
Use WAI-ARIA mapping
Localized Control Type: `"email"`
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`input` (`type` attribute in the File Upload state) No corresponding role
Implementation dependent. If represented by a container with a button a text label inside then:
Roles: `IA2_ROLE_TEXT_FRAME`
Children: `ROLE_SYSTEM_PUSHBUTTON` and `IA2_ROLE_LABEL` for a button and a text label elements.
Can be rendered as a single button control, or as a button control with a text input field.
Button control:
Control Type: `Button`
Text input field:
Control Type: `Edit`
Localized Control Type: `"file"`
Role: `ATK_ROLE_STATIC`
Children: `ATK_ROLE_PUSH_BUTTON` when pressed `ATK_ROLE_FILE_CHOOSER` dialog shown
AXRole: `AXButton`
AXSubrole: `AXFileUploadButton`
AXRoleDescription: `file upload button`
`input` (`type` attribute in the Hidden state) No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
`input` (`type` attribute in the Image Button state) `button` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`input` (`type` attribute in the Month state) No corresponding role
Role: `IA2_ROLE_DATE_EDITOR`
Depends on UI design of implementation. The UI in Windows 10 Edge, for Example, is a composite of multiple spinners.
Role: `ATK_ROLE_DATE_EDITOR`
AXRole: `AXTextField`
AXSubrole: `(nil)`
AXRoleDescription: `"text field"`
`input` (`type` attribute in the Number state) `spinbutton` role
If implemented as a spin button, use WAI-ARIA mapping for `spinbutton`.
If implemented as a text input, use WAI-ARIA mapping for `textbox`.
Object attributes: `text-input-type:number`
If implemented as a spin button, use WAI-ARIA mapping for `spinbutton`.
If implemented as a text input:
Control Type: `Edit`
Localized Control Type: `"number"`
If implemented as a spin button, use WAI-ARIA mapping for `spinbutton`.
If implemented as a text input, use WAI-ARIA mapping for `textbox`.
Object attributes: `text-input-type:number`
Use WAI-ARIA mapping
`input` (`type` attribute in the Password state) No corresponding role
Role: `ROLE_SYSTEM_TEXT`
States: `STATE_SYSTEM_PROTECTED`; `IA2_STATE_SINGLE_LINE`; `STATE_SYSTEM_READONLY` if readonly, otherwise `IA2_STATE_EDITABLE`
Control Type: `Edit`
Localized Control Type: `"password"`
Other properties: Set `isPassword` to `true`
Role: `ATK_ROLE_PASSWORD_TEXT`
States: `ATK_STATE_SINGLE_LINE`; `ATK_STATE_READ_ONLY` if readonly, otherwise `ATK_STATE_EDITABLE`
AXRole: `AXTextField`
AXSubrole: `AXSecureTextField`
AXRoleDescription: `"secure text field"`
`input` (`type` attribute in the Radio Button state) `radio` role, with the `aria-checked` state set to "true" if the element's checkedness is true, or "false" otherwise. With `aria-setsize` value reflecting number of `type=radio input` elements within the radio button group and `aria-posinset` value reflecting the elements position within the radio button group.
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`input` (`type` attribute in the Range state) `slider` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`input` (`type` attribute in the Reset Button state) `button` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`input` (`type` attribute in the Submit Button state) `button` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`input` (`type` attribute in the Telephone state with no suggestions source element) `textbox` role
Use WAI-ARIA mapping
Object attributes: `text-input-type:telephone`
Use WAI-ARIA mapping
Localized Control Type: `"telephone"`
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`input` (`type` attribute in the Text state with no suggestions source element) `textbox` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`input` (`type` attribute in the Text, Search, Telephone, URL, or E-mail states with a suggestions source element) `combobox` role, with the `aria-controls` property set to the same value as the `list` attribute
Use WAI-ARIA mapping
Object attributes: `text-input-type:as per input type`
Use WAI-ARIA mapping
Other properties: `ControllerFor` points to the suggestions source element
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`input` (`type` attribute in the Time state) No corresponding role
Role: `ROLE_SYSTEM_SPINBUTTON` if implemented as a simple widget; `ROLE_SYSTEM_GROUPING` with child controls mapped as appropriate if implemented as a complex widget
Object attributes: `text-input-type:time`
Depends on UI design of implementation. The UI in Windows 10 Edge, for Example, is a composite of multiple spinners.

Role: `ATK_ROLE_SPINBUTTON` if implemented as a simple widget.
If implemented as a complex widget use:
Role: `ROLE_PANEL` and map child controls as appropriate.

AXRole: `AXTimeField`
AXSubrole: `(nil)`
AXRoleDescription: `"time field"`
`input` (`type` attribute in the URL state with no suggestions source element) `textbox` role
Use WAI-ARIA mapping
Object attributes: `text-input-type:url`
Use WAI-ARIA mapping
Localized Control Type: `"url"`
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`input` (`type` attribute in the Week state) No corresponding role
Role: `IA2_ROLE_DATE_EDITOR`
Object attributes: `text-input-type:week`
Depends on UI design of implementation. The UI in Windows 10 Edge, for Example, is a composite of multiple spinners.
Role: `ATK_ROLE_CALENDAR`
AXRole: `AXTextField`
AXSubrole: `(nil)`
AXRoleDescription: `"text field"`
`ins` `insertion` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`kbd` No corresponding role
No accessible object.
Text attributes: `font-family:monospace` on the text container
No accessible object. Styles used are exposed by UIA text attribute identifiers of the `TextRange` Control Pattern implemented on a parent accessible object.
No accessible object. Mapped into "font-family:monospace" text attribute on its text container.
AXRole: `AXGroup`
AXSubrole: `(nil)`
AXRoleDescription: `"group"`
`label` No corresponding role
Roles: `ROLE_SYSTEM_STATICTEXT`; `IA2_ROLE_LABEL`
Relations: `IA2_RELATION_LABEL_FOR` with a labelable element that is child to the `label` or referred to by the `label` element's `for` attribute. The associated labelable element has `IA2_RELATION_LABELLED_BY` pointing to the `label`.
Control Type: `Text`
Relations:
When the `label` element contains a labelable element, the `LabeledBy` property for the element points to the UIA element for the `label` element.
When the `label` element has a `for` attribute referencing a labelable element, the `LabeledBy` property for the referenced element points to the UIA element for the `label` element.
Role: `ATK_ROLE_LABEL`
Relations: `ATK_RELATION_LABEL_FOR` for a child labelable element or labelable element referred by `for` attribute. Note, related labelable element provides `ATK_RELATION_LABELLED_BY` pointing to the `label`.
AXRole: `AXGroup`
AXSubrole: `(nil)`
AXRoleDescription: `"group"`
`legend` No corresponding role
Roles: `ROLE_SYSTEM_STATICTEXT`; `IA2_ROLE_LABEL`
Relations: `IA2_RELATION_LABEL_FOR` with the parent `fieldset`
Control Type: `Text`
Other properties: The `LabeledBy` property for the parent `fieldset` points to the UIA element for the `legend` element.
Role: `ATK_ROLE_LABEL`
Relations: `ATK_RELATION_LABEL_FOR` with parent `fieldset` element
AXRole: `AXGroup`
AXSubrole: `(nil)`
AXRoleDescription: `"group"`
`li` `listitem` role with `aria-setsize` value reflecting number of `li` elements within the parent `ol`, `menu` or `ul` and `aria-posinset` value reflecting the `li` elements position within the set.
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
If `li` element is not a child of `ol` , `menu` or `ul`, or if the containing list element is no longer exposed with a `list` role, then expose the `li` element with a `generic` role.
`main` `main` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`map` No corresponding role
Not mapped if used as an image map. Otherwise,
Role: `IA2_ROLE_TEXT_FRAME`
Not mapped
Not mapped if used as an image map, otherwise:
Role: `ATK_ROLE_STATIC`
Role: `AXImageMap` if used as an image map. Otherwise,
Role: `AXGroup` if associated with an `img` with no `alt`. Otherwise,
not mapped if not associated with an `img`.
`mark` `mark` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`math` See comments See comments See comments See comments See comments Mapping for `math` is defined by MathML AAM 1.0.
`menu` `list` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
The `menu` element is a semantic alternative to the `ul` element. It has no implemented mappings or behavior that reflect the semantics of the ARIA `menu` role.
`meta` No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
`meter` `meter` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`nav` `navigation` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`noscript` No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
`object` No corresponding role
Depends on format of data file. If it contains a plugin then,
Role: `IA2_ROLE_EMBEDDED_OBJECT`
States: `STATE_SYSTEM_UNAVAILABLE` for windowless plugin
Depends on format of data file.
Depends on format of data file. If contains a plugin then
Role: `ATK_ROLE_EMBEDDED`
Depends on format of data file.
`ol` `list` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`optgroup` `group` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`option` (in a list of options or represents a suggestion in a `datalist`) `option` role, with the `aria-selected` state set to "true" if the element's selectedness is true, or "false" otherwise.
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`output` `status` role
Use WAI-ARIA mapping
Relations: `IA2_RELATION_LABELLED_BY` with associated `label` element
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Relations: `ATK_RELATION_LABELLED_BY` with associated `label` element
Use WAI-ARIA mapping
`AXDescription`: value from associated `label` element subtree.
`p` `paragraph` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`param` No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
`param` is obsolete in HTML
`picture` No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
`pre` `generic` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`progress` `progressbar` role, with, if the progress bar is determinate, the `aria-valuemax` property set to the maximum value of the progress bar, the `aria-valuemin` property set to zero, and the `aria-valuenow` property set to the current value of the progress bar
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`q` `generic` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`::before` and `::after` CSS pseudo content is used by platforms to render the element's quotation marks.
`rp` No corresponding role
No accessible object. No child elements are exposed if `ruby` is supported by the browser.
No accessible object.
No accessible object. No child elements are exposed if `ruby` is supported by the browser.
Not mapped
`rt` No corresponding role
No accessible object. No child elements are exposed if `ruby` is supported by the browser.
No accessible object.
No accessible object.
AXRole: `AXGroup`
AXSubrole: `AXRubyText`
AXRoleDescription: `"group"`
`ruby` No corresponding role
Role: `ROLE_SYSTEM_TEXT`; `IA2_ROLE_TEXT_FRAME`
Control Type: `Text`
Localized Control Type: `"ruby"`
Role: `ATK_ROLE_STATIC`
AXRole: `AXGroup`
AXSubrole: `AXRubyInline`
AXRoleDescription: `"group"`
`s` `deletion` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`samp` `generic` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`script` No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
`section` `region` role if the `section` element has an accessible name. Otherwise, the `generic` role.
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`select` (with a `multiple` attribute or `size` attribute having value greater than `1`) `listbox` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`select` (with NO `multiple` attribute and NO `size` attribute having value greater than `1`) `combobox` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`slot` No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
`small` `generic` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Exposed by platform specific font size styles.
`source` No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
`span` `generic` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`strong` `strong` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`style` No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
Note: There are instances where CSS properties can affect what is exposed by accessibility APIs. For instance, `display: none` or `visibility: hidden` will remove an element from the accessibility tree and hide its presence from assistive technologies.
`sub` `subscript` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`summary` No corresponding role
Role: `ROLE_SYSTEM_PUSHBUTTON`
States: `STATE_SYSTEM_EXPANDED` / `STATE_SYSTEM_COLLAPSED`
Actions: `expand` / `collapse`
Control Type: `Button`
Control Pattern: `ExpandCollapse`
Role: `ROLE_TOGGLE_BUTTON`
Relations: `ATK_RELATION_DETAILS`
AXRole: `AXDisclosureTriangle`
AXSubrole: `(nil)`
AXRoleDescription: `"disclosure triangle"`
If a `summary` element is not a child of a `details` element, or it is not the first `summary` element of a parent `details`, then the `summary` element MUST be exposed with a `generic` role.
`sup` `superscript` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`svg` See comments See comments See comments See comments See comments Mapping for `svg` is defined by [[[svg-aam-1.0]]]. See also Graphics Accessibility API Role Mappings
`table` `table` role Use WAI-ARIA mapping Use WAI-ARIA mapping Use WAI-ARIA mapping Use WAI-ARIA mapping
`tbody` `rowgroup` role Use WAI-ARIA mapping Use WAI-ARIA mapping Use WAI-ARIA mapping Use WAI-ARIA mapping
`td` (ancestor `table` element has `table` role) `cell` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`td` (ancestor `table` element has `grid` or `treegrid` role) `gridcell` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`template` No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
`textarea` `textbox` role, with the `aria-multiline` property set to "true"
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`tfoot` `rowgroup` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`th` (is not a column header, row header, column group header or row group header, and ancestor `table` element has `table` role) `cell` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`th` (is not a column header, row header, column group header or row group header, and ancestor `table` element has `grid` or `treegrid` role) `gridcell` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`th` (is a column header or column group header) `columnheader` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`th` (is a row header or row group header) `rowheader` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`thead` `rowgroup` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`time` `time` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`title` No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
A `title` element provides the accessible name for its document.
`tr` `row` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`track` No corresponding role
Not mapped
Not mapped
Not mapped
Not mapped
`u` `generic` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Exposed by platform specific underline text styles.
`ul` `list` role
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`var` No corresponding role
No accessible object. Styles used are mapped to text attributes on its text container.
No accessible object. Styles used are exposed by UIA text attribute identifiers of the `TextRange` Control Pattern implemented on a parent accessible object.
No accessible object. Styles used are mapped to text attributes on its text container.
AXRole: `AXGroup`
AXSubrole: `(nil)`
AXRoleDescription: `"group"`
`video` No corresponding role
Role: `ROLE_SYSTEM_GROUPING`
Control Type: `Group`
Localized Control Type: `"group"`
Note: If the `controls` attribute is present, UI controls (e.g., play, volume) are exposed as children of the `video` element in the accessibility tree, and mapped as appropriate for the type of control (e.g., `button` or `slider`).
Text objects associated with loading or error messages, and any UI control not currently displayed, MAY be present in the accessibility tree and marked as hidden or off-screen.
Role: `ATK_ROLE_VIDEO`
AXRole: `AXGroup`
AXSubrole: `AXVideo`
AXRoleDescription: `"video playback"`
Note: If the `controls` attribute is present, UI controls (e.g., play, volume) are exposed as descendants of an accessible object with a role of `toolbar`, and mapped as appropriate for the type of control (e.g., `button` or `slider`).
`wbr` No corresponding role
If a line break is added, expose it with `IAccessibleText` on the text container
Not mapped
A line break if added is exposed via Text interface on its text container
AXRole: `AXGroup`
AXSubrole: `(nil)`
AXRoleDescription: `"group"`

HTML Attribute State and Property Mappings

Mappings of HTML attributes (excluding event handler content attributes) to platform accessibility APIs: ARIA, MSAA + UIA Express, MSAA + IAccessible2, UIA, ATK, and AX
Attribute Element(s) [[WAI-ARIA-1.2]] MSAA + IAccessible2 UIA ATK AX Comments
`abbr` `th`
Not mapped
Object attributes: "abbr" until child `abbr` element is provided
Not mapped
Object attributes: "abbr" until child `abbr` element is provided
`AXDescription: <value>`
`accept` `input`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`accept-charset` `form`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`accesskey` `HTML elements`
Not mapped
A key binding accessible by `accKeyboardShortcut` and `IAccessibleAction::keyBinding`
Properties: `AccessKey: <value>`
`atk_action_get_keybinding`
`AXAccessKey: <value>`
`action` `form`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`allow` `iframe`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`allowfullscreen` `iframe`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`alt` `area`; `img`; `input`
Not mapped
Used for accessible name, exposed via `accName`
Properties: `Name`
Used for accessible name, exposed via `atk_object_get_name`
`AXDescription: <value>`
`as` `link`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`async` `script`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`autocapitalize` HTML elements
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`autocomplete` `form`

`aria-autocomplete`

Note: the ARIA attribute and the HTML attribute have disparate features.

States: `STATE_SUPPORTS_AUTOCOMPLETION` on text form controls until the value is overridden by control
Not mapped
States: `ATK_STATE_SUPPORTS_AUTOCOMPLETION` on text form controls until the value is overridden by control
Not mapped
If the element includes both `autocomplete` and `aria-autocomplete` attributes with valid values, User Agents MUST expose only the `autocomplete` attribute value.
`autocomplete` `input`, `select` and `textarea`

`aria-autocomplete`

Note: the ARIA attribute and the HTML attribute have disparate features.

States: `STATE_SUPPORTS_AUTOCOMPLETION`
Not mapped
States: `ATK_STATE_SUPPORTS_AUTOCOMPLETION`
Not mapped
If the element includes both `autocomplete` and `aria-autocomplete` attributes with valid values, User Agents MUST expose only the `autocomplete` attribute value.
`autofocus` HTML elements Not mapped
Not mapped
Not mapped
Not mapped
Not mapped

Similar to `aria-flowto`.

`autoplay` `audio` and `video`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`blocking` `link`; `script`; `style`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`charset` `meta`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`checked` (if present) `input` `type=checkbox` or `type=radio` `aria-checked`="true"
Use WAI-ARIA mapping
Property: `Toggle.ToggleState: On (1)`
Use WAI-ARIA mapping
`AXValue: 1` If an `input` element in the `checkbox` or `radio` state includes both the `checked` attribute and the `aria-checked` attribute with a valid value, User Agents MUST expose only the `checked` attribute value.
`checked` (if absent) `input` `type=checkbox` or `type=radio` `aria-checked`="false"
Use WAI-ARIA mapping
Property: `Toggle.ToggleState: Off (0)`
Use WAI-ARIA mapping
`AXValue: 0` An `input` element in the `checkbox` or `radio` state without a `checked` attribute has an implicit "false" state. User Agents MUST ignore an `aria-checked` attribute which conflicts with the native element's implicit checked state.
`cite` `blockquote`; `del` and `ins`; `q`
Not mapped
Not mapped
Not mapped
Not mapped
`AXURL: <value>`
`class` HTML elements
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`color` `link`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`cols` `textarea`
Not mapped
Not mapped
Not mapped
Not mapped
`AXRangeForLine: <value>`
Not mapped
`colspan` `td` and `th` `aria-colspan`
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`content` `meta`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`contenteditable` HTML elements Not mapped

If the element is in the editable state, the following mappings apply to the element and every nested accessible object with the exception of those which have been specified in the `false` state.

States: `IA2_STATE_EDITABLE` and `IA2_STATE_MULTI_LINE`
Interfaces: `IAccessibleEditableText`

If the element is in the `false` state: not mapped.

If the element is in the `inherit` state: match the editable state of its parent element.

If the element is in the editable state, the following mappings apply to the element and every nested accessible object with the exception of those which have been specified in the `false` state.

Control Pattern: `TextEdit`
Property: `AriaProperties.multiline:true`

If the element is in the `false` state: not mapped.

If the element is in the `inherit` state: match the editable state of its parent element.

If the element is in the editable state, the following mappings apply to the element and every nested accessible object with the exception of those which have been specified in the `false` state.

States: `ATK_STATE_EDITABLE` and `ATK_STATE_MULTI_LINE`
Interfaces: `AtkEditableText`

If the element is in the `false` state: not mapped.

If the element is in the `inherit` state: match the editable state of its parent element.

Role: AXTextArea
Use WAI-ARIA mapping
If the element is set to `contenteditable` and `aria-readonly="true"`, User Agents MUST expose only the `contenteditable` state.
`controls` `audio` and `video`
Not mapped
Not mapped
Not mapped
Not mapped
Controls exposed as `AXToolbar`
`coords` `area`
Not mapped
Defines an accessible object's dimensions (`IAccessible::accLocation`)
Defines an accessible object's dimensions (`BoundingRectangle`)
Defines an accessible object's dimensions, exposed via `atk_component_get_position` and `atk_component_get_size`
Defines an accessible object's dimensions, exposed via `Frame` property
`crossorigin` `audio`; `img`; `link`; `script`; `video`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`data` `object`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`datetime` `del` and `ins`
Not mapped
Object attributes: `datetime: <value>`
Not mapped
Object attributes: `datetime: <value>`
`AXDateTimeValue: <value>`
`datetime` `time`
Not mapped
Object attributes: `datetime: <value>`
Properties: `FullDescription: <value>`
Object attributes: `datetime: <value>`
`AXDateTimeValue: <value>`
`decoding` `img`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`default` `track`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`defer` `script`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`dir` HTML elements
Not mapped
Exposed as "writing-mode" text attribute on the text container.
Exposed by `TextFlowDirections` attribute of the `TextRange` Control Pattern implemented on a parent accessible object.
Exposed as "writing-mode" text attribute on the text container.
Not mapped
`dir` `bdo`
Not mapped
Exposed as "writing-mode" text attribute on the text container.
Exposed by `TextFlowDirections` attribute of the `TextRange` Control Pattern implemented on a parent accessible object.
Exposed as "writing-mode" text attribute on the text container.
Not mapped
`dirname` `input` and `textarea`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`disabled` `button`; `input`; `optgroup`; `option`; `select`; `textarea`; form-associated custom element `aria-disabled="true"`
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
If the element has both the `disabled` attribute and the `aria-disabled` attribute with a valid value, User Agents MUST expose only the `disabled` attribute value.
`disabled` `fieldset` `aria-disabled="true"`
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping

Form controls within a valid [^legend^] child element of a `fieldset` with a `disabled` attribute do not become disabled.

If the element has both the `disabled` attribute and the `aria-disabled` attribute with a valid value, User Agents MUST expose only the `disabled` attribute value.

`download` `a` and `area`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`draggable` HTML elements
Not mapped
Object attributes: draggable:true
Not mapped
Object attributes: draggable:true
Not mapped
`enctype` `form`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`enterkeyhint` HTML elements
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
Modifies the action label (or icon) to present for the enter key on virtual keyboards.
`fetchpriority` `img`; `link`; `script`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`for` `label`
Not mapped
Used for accessible name
Relations: `IA2_RELATION_LABEL_FOR` and `IA2_RELATION_LABEL_BY` relations between `label` and referred labelable element
Used for accessible name
When the `label` element has a `for` attribute referencing another labelable element, the `LabeledBy` property for the referenced element points to the UIA element for the `label` element.
Used for accessible name
Relations: `ATK_RELATION_LABEL_FOR` and `ATK_RELATION_LABEL_BY` relations between `label` and referred labelable element
Used for accessible name
`for` `output`
Not mapped
Relations: `IA2_RELATION_CONTROLLED_BY` with an element pointed by the attribute. Paired element exposes `IA2_RELATION_CONTROLLER_FOR` relation.
Not mapped
Relations: `ATK_RELATION_CONTROLLED_BY` with an element pointed by the attribute. Paired element exposes `ATK_RELATION_CONTROLLER_FOR` relation.
Not mapped
`form` `button`; `fieldset`; `input`; `label`; `object`; `output`; `select`; `textarea`; form-associated custom element
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`formaction` `button`; `input`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`formenctype` `button`; `input`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`formmethod` `button`; `input`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`formnovalidate` `button`; `input`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`formtarget` `button`; `input`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`headers` `td`; `th`
Not mapped
Links the cell to its header cells. Exposed via `IAccessibleTableCell::rowHeaderCells` and `IAccessibleTableCell::columnHeaderCells`.
Links the cell to its header cells. Exposed via `Table.ItemColumnHeaderItems` and `Table.ItemRowHeaderItems`.
Links the cell to its row and column header cells (note, only one row and one column header cells can be exposed because of API restrictions). See `atk_table_get_row_header` and `atk_table_get_column_header`.
Expose via `AXColumnHeaderUIElements` and `AXRowHeaderUIElements`
`height` `canvas`; `embed`; `iframe`; `img`; `input`; `object`; `source` (in `picture`); `video`
Not mapped
Defines an accessible object's height (`IAccessible::accLocation`)
Defines an accessible object's height (`BoundingRectangle`)
Defines an accessible object's height (`atk_component_get_size`)
Defines an accessible object's height (`AXSize` property)
`hidden` HTML elements `aria-hidden="true"` if the element retains its user agent default styling of `display: none`. Otherwise, if no other method for hiding the content is used (e.g., `visibility: hidden`) then it is not mapped. Use WAI-ARIA mapping Use WAI-ARIA mapping Use WAI-ARIA mapping Use WAI-ARIA mapping
`high` `meter` Not mapped
Not mapped
`RangeValue.Maximum`
Not mapped
Not mapped
`href` `a`; `area`
Not mapped
Creates a link accessible object. For details, refer to `a` and `area` element mappings.
Creates a link accessible object. For details, refer to `a` and `area` element mappings. The value of the `href` attribute is stored in the `Value.Value` UIA property.
Creates a link accessible object. For details, refer to `a` and `area` element mappings.
`AXURL: <value>`
`hreflang` `a`; `link`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`http-equiv` `meta`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`id` HTML elements
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`inert` HTML elements Not Mapped See comments See comments See comments See comments

Nodes that are inert are not exposed to an accessibility API.

Note: an inert node can have descendants that are not inert. For example, a modal dialog can escape an inert subtree.

`indeterminate [IDL]` HTML elements; `input` `aria-checked` (state)="mixed" Use WAI-ARIA mapping Use WAI-ARIA mapping Use WAI-ARIA mapping Use WAI-ARIA mapping If the element has the `indeterminate [IDL]` set and the `aria-checked` attribute set, User Agents MUST expose only the`indeterminate [IDL]` state.
`ismap` `img`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`itemid` `img`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`itemprop` `img`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`itemref` `img`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`itemscope` `img`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`itemtype` `img`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`kind` `track` Not mapped Not mapped Not mapped Not mapped Not mapped
`label` `optgroup`; `option`; `track`
Not mapped
Associates the accessible name
The target element of the `label` attribute has a `LabeledBy` property pointing to the element with the `label` attribute. Participates in name computation.
Associates the accessible name
`AXTitle`: `<value>` See Also: Accessible Name and Description: Computation and API Mappings 1.1
`lang` HTML elements
Not mapped
Exposed as "language" text attribute on the text container
The value of the `lang` attribute is exposed as a locale identifier by `Culture` property of the UIA element representing the HTML element, and by `Culture` attribute of the `TextRange` Control Pattern implemented on a parent accessible object.
Exposed as "language" text attribute on the text container
`AXLanguage: <value>`
`list` `input` `aria-controls`
`IA2_RELATION_CONTROLLER_FOR` point to the `datalist` element referred to by the IDREF value of the `list` attribute.
`ControllerFor` point to the `datalist` element referred to by the IDREF value of the `list` attribute.
`ATK_RELATION_CONTROLLER_FOR` point to the `datalist` element referred to by the IDREF value of the `list` attribute.
Property: `AXLinkedUIElements`: point to the `datalist` element referred to by the IDREF value of the `list` attribute.
Refer to `datalist` and `input` element mappings.
`loop` `audio`; `video`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`low` `meter` Not mapped
Not mapped
`RangeValue.Minimum`
Not mapped
Not mapped
`max` `input` `aria-valuemax`
Exposed as `IAccessibleValue::maximumValue` if the element implements the interface
`RangeValue.Maximum`
Exposed as `atk_value_get_maximum_value` if the element implements the `AtkValue` interface
`AXMaxValue: <value>`
`max` `meter`; `progress` `aria-valuemax`
Exposed as `IAccessibleValue::maximumValue` if the element implements the interface
`RangeValue.Maximum`
Exposed as `atk_value_get_maximum_value` if the element implements the `AtkValue` interface
`AXMaxValue: <value>`
`maxlength` `input`; `textarea` Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`media` `link`; `meta`; `source` (in `picture`); `style`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`method` `form`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`min` `input` `aria-valuemin`
Exposed as `IAccessibleValue::minimumValue` if the element implements the interface
`RangeValue.Minimum`
Exposed as `atk_value_get_minimum_value` if the element implements the `AtkValue` interface
`AXMinValue: <value>`
`min` `meter` `aria-valuemin`
Exposed as `IAccessibleValue::minimumValue` if the element implements the interface
`RangeValue.Minimum`
Exposed as `atk_value_get_minimum_value` if the element implements the `AtkValue` interface
`AXMinValue: <value>`
`minlength` `input`; `textarea`
Not mapped
States: `IA2_STATE_INVALID_ENTRY` if value doesn't meet the designated minimum length value.
States: `IsDataValidForForm` if value doesn't meet the designated minimum length value.
States: `ATK_STATE_INVALID_ENTRY` if value doesn't meet the designated minimum length value.
Property: `AXInvalid`: `true` if value doesn't meet the designated minimum length value.
`multiple` `input`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`multiple` `select` `aria-multiselectable="true"`
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`muted` `audio`; `video`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`name` `button`; `fieldset`; `input`; `output`; `select`; `textarea`; form-associated custom element
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`name` `form`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`name` `iframe`; `object`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`name` `map`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`name` `meta`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`name` `slot`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`nomodule` `script`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`nonce` HTML elements
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`novalidate` `form`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`open` `details` `aria-expanded`="true | false" `STATE_SYSTEM_EXPANDED`
`STATE_SYSTEM_COLLAPSED`
`ExpandCollapsePattern`
States: `ATK_STATE_COLLAPSED` or `ATK_STATE_EXPANDED` depending on the attribute value
`AXExpanded: YES|NO` Set properties on the `summary` element.
`open` `dialog`
If the `open` attribute is set via the `showModal()` method then `aria-modal="true"` and `aria-hidden="false"`.
Otherwise, if the `open` attribute is set via the `show()` method, or explicitly specified by an author, then `aria-modal="false"` and `aria-hidden="false"`.
Use WAI-ARIA mapping Use WAI-ARIA mapping Use WAI-ARIA mapping Use WAI-ARIA mapping

The `open` attribute's value is irrelevant. When the `open` attribute is not specified the default user agent styling for a `dialog` is `display: none`.

Authors can reveal a `dialog` through the style layer by modifying its `display` property. If revealed this way then the `dialog` is `aria-modal="false"` and `aria-hidden="false"`.

`optimum` `meter`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`pattern` `input`
If the value doesn't match the pattern: `aria-invalid="true"`; Otherwise, `aria-invalid="false"`
Use WAI-ARIA mapping Use WAI-ARIA mapping Use WAI-ARIA mapping Use WAI-ARIA mapping
`ping` `a` and `area`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`placeholder` `input`; `textarea` `aria-placeholder`
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
When the `placeholder` and `aria-placeholder` attributes are both present, and the `placeholder` attribute's value is non-empty, user agents MUST expose the value of the `placeholder` attribute, and ignore `aria-placeholder`. If the `placeholder` attribute's value is empty, then user agents MUST expose the value of the `aria-placeholder` attribute.
`playsinline` `video`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`poster` `video`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`preload` `audio` and `video`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`readonly` `input`; `textarea`; form-associated custom elements `aria-readonly="true"`
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
If the element includes both the `readonly` attribute and the `aria-readonly` attribute with a valid value, User Agents MUST expose only the `readonly` attribute value.
`referrerpolicy` `a`; `area`; `iframe`; `img`; `link`; `script`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`rel` `a`; `area`; `link`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`required` `input`; `select`; `textarea` `aria-required`
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
If the element includes both the `required` attribute and the `aria-required` attribute with a valid value, User Agents MUST expose only the `required` attribute value.
`reversed` `ol`
Not mapped
Reverses the numerical or alphabetical order of the child list item markers.
Reverses the numerical or alphabetical order of the child list item markers.
Reverses the numerical or alphabetical order of the child list item markers.
Reverses the numerical or alphabetical order of the child list item markers.
`rows` `textarea` Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`rowspan` `td`; `th` `aria-rowspan`
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`sandbox` `iframe`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`scope` `th`
If `scope="row"` then map `th` to `rowheader`
If `scope="col"` then map `th` to `columnheader`
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`selected` `option` `aria-selected="true"`
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
If the element includes both the `selected` attribute and the `aria-selected` attribute with a valid value, User Agents MUST expose only the `selected` attribute value.
`shape` `area`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`size` `input`; `select`
Not mapped for `input` elements.
If greater than 1, then creates a listbox accessible object. Refer to `select` element for details.
Not mapped for `input` elements.
For `select` element use WAI-ARIA mapping.
Not mapped for `input` elements.
For `select` element use WAI-ARIA mapping.
Not mapped for `input` elements.
For `select` element use WAI-ARIA mapping.
Not mapped for `input` elements.
For `select` element use WAI-ARIA mapping.
For `input` elements that allow the `size` attribute, the attribute will modify their default width. A width provided by CSS will negate the effects of the `size` attribute on these `input` elements.
`sizes` `link`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`sizes` `img`; `source`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`slot` HTML elements
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`span` `col`; `colgroup` Not mapped
Exposed as `IAccessibleTableCell::columnExtent` on all cells at the column
Exposed as `GridItem.ColumnSpan` on all cells at the column
Exposed via `atk_table_get_column_extent_at`
`AXColumnIndexRange.length: <value>`
`spellcheck` HTML elements `aria-invalid="spelling"` or `grammar`
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`src` `audio`; `embed`; `iframe`; `img`; `input`; `script`; `source` (in `audio` or `video`); `track`; `video`
Not mapped
Object attributes: `src` on `img` only
Not mapped
Object attributes: `src` on `img` only
`AXURL: <value>` on `img` and `input type="image"`
`srcdoc` `iframe`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`srclang` `track`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`srcset` `img`; `source`
Not mapped
Not mapped
Not mapped
Not mapped
Not Mapped
`start` `ol`
Not mapped
Changes the first number of the child list item accessible objects to match the `start` attribute's value.
Changes the first number of the child list item accessible objects to match the `start` attribute's value.
Changes the first number of the child list item accessible objects to match the `start` attribute's value.
Changes the first number of the child list item accessible objects to match the `start` attribute's value.
`step` `input`
Not mapped
Not mapped
If the `input` is in the `Range` state, set both `RangeValue.SmallChange` and `RangeValue.LargeChange` to the value of `step`.
Exposed as `atk_value_get_minimum_increment` if the element implements the `AtkValue` interface.
Not mapped
`style` HTML elements
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`tabindex` HTML elements See Focus States and Events Table
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
`target` `a`; `area`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`target` `base`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`target` `form`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`title` HTML elements
Either the accessible name, or the accessible description, or Not mapped (see Comments).
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
Use WAI-ARIA mapping
The Accessible Name and Description Computation section specifies if the `title` attribute will be mapped and, if so, through what [[WAI-ARIA]] property.
`title` `abbr`; `dfn`
Not mapped
Associates the accessible name
Associates the accessible name
Associates the accessible name
`AXExpandedTextValue: <value>`
`title` `link`; `style`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
Provides the name for the CSS style sheet.
`translate` HTML elements
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`type` `button` Not mapped
`submit` type may be a default button in the form.
`submit` type may be a default button in the form.
`submit` type may be a default button in the form.
`submit` type may be a default button in the form.
`type` `embed`; `object`; `script`; `source`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`type` `input` Refer to WAI-ARIA mappings for input types with defined ARIA roles.
Defines the accessible role, states and other properties, refer to type="`text`", type="`password`", type="`button`", etc
Defines the accessible role, states and other properties, refer to type="`text`", type="`password`", type="`button`", etc
Defines the accessible role, states and other properties, refer to type="`text`", type="`password`", type="`button`", etc
Defines the accessible role, states and other properties, refer to type="`text`", type="`password`", type="`button`", etc
`type` `ol` Not mapped
Defines the list item marker, which has no accessible object, but is exposed as content in the accessible text of the associated list item.
Interfaces: `IAccessibleText2`
Defines the list item marker, which has no accessible object, but is exposed as content in the accessible text of the associated list item.
Control Pattern: `Text`
Defines the list item marker, which has no accessible object, but is exposed as content in the accessible text of the associated list item.
Interfaces: `ATKText`
Defines the list item marker, which is exposed as content in `AXValue`, and rendered as an accessible object:
AXRole: `AXListMarker`
AXSubrole: `(nil)`
AXRoleDescription: `"list marker"`
Some platforms (IAccessible2, ATK, UIA) do not expose an accessible object for the list item marker, whether it was created and then pruned from the accessibility tree, or never created in the first place. Instead, they expose the list item marker as part of the associated list item's accessible text. In these cases, implementors need to consider such things as adjusting the offsets (e.g., for caret-moved events, text-selection events, etc.) for the updated list item text that now also contains the list item marker as content, rather than just taking the offsets unmodified from the list item renderer.
`usemap` `img`
Not mapped
Responsible for image map creation.
Responsible for image map creation.
Responsible for image map creation.
Responsible for image map creation.
Refer to `img` element.
`value` `button`; `option`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`value` `data`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped
`value` `input` Not mapped
Associates the accessible value for entry type input elements and accessible name for button type input elements
Associates the accessible value for entry type input elements and accessible name for button type input elements
Associates the accessible value for entry type input elements and accessible name for button type input elements
`AXValue: <value>`
`value` `li`
Not mapped
Exposed as first text node of `li`'s accessible object.
Expose the value of the `value` attribute as the first text node in the list item. If the value of the `value` attribute is an integer, set the UIA `PositionInSet` property to the integer value.
Exposed as first text node of `li`'s accessible object.
Exposed as `AXValue: <value>` with accessible object:
AXRole: `AXListMarker`
AXSubrole: `(nil)`
AXRoleDescription: `list marker`
`value` `meter`; `progress` `aria-valuenow`
Exposed as `IAccessibleValue::currentValue`
Exposed as `Value.Value`
Exposed as `atk_value_get_current_value`
`AXValue: <value>`
`width` `canvas`; `embed`; `iframe`; `img`; `input`; `object`; `source` (in `picture`); `video`
Not mapped
Defines an accessible object's width (`IAccessible::accLocation`)
Defines an accessible object's width (`BoundingRectangle`)
Defines an accessible object's width (`atk_component_get_size`)
`AXSize: w=n`
`wrap` `textarea`
Not mapped
Not mapped
Not mapped
Not mapped
Not mapped

Accessible Name and Description Computation

The terms accessible name and accessible description are properties provided in all accessibility APIs. The name of the properties may differ across APIs but they serve the same function: as a container for a short (name) or longer (description) string of text.

The text alternative computation is used to generate both the accessible name and accessible description. There are different rules provided for several different types of elements, nodes, and combinations of markup.

Accessible Name Computations By HTML Element

`input type="text"`, `input type="password"`, `input type="number"`, `input type="search"`,` input type="tel"`, `input type="email"`, `input type="url"` and `textarea` Element Accessible Name Computation

  1. If the control has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. Otherwise use the associated `label` element or elements accessible name(s) - if more than one `label` is associated; concatenate by DOM order, delimited by spaces.
  3. If the accessible name is still empty, then: use the control's `title` attribute.
  4. Otherwise use the control's placeholder value.
  5. If none of the above yield a usable text string there is no accessible name.

`input type="button"`, `input type="submit"` and `input type="reset"` Accessible Name Computation

  1. If the control has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. Otherwise use the associated `label` element(s) accessible name(s) - if more than one `label` is associated; concatenate by DOM order, delimited by spaces.
  3. Otherwise use the `value` attribute.
  4. For `input type=submit` and `type=reset`: if the prior steps do not yield a usable text string, and the `value` attribute is unspecified use the implementation defined string respective to the input type.
  5. Otherwise, if the control still has no accessible name use `title` attribute.
  6. If none of the above yield a usable text string there is no accessible name.

`input type="image"` Accessible Name Computation

  1. If the control has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. Otherwise use the associated `label` element(s) accessible name(s) - if more than one `label` is associated; concatenate by DOM order, delimited by spaces.
  3. Otherwise use `alt` attribute.
  4. Otherwise use `title` attribute.
  5. Otherwise if the previous steps do not yield a usable text string, the accessible name is a localized string of the word "Submit Query".
  6. If none of the above yield a usable text string there is no accessible name.

`button` Element Accessible Name Computation

  1. If the `button` element has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. Otherwise use the associated `label` element(s) accessible name(s) - if more than one `label` is associated; concatenate by DOM order, delimited by spaces.
  3. Otherwise use the `button` element subtree.
  4. Otherwise use `title` attribute.
  5. If none of the above yield a usable text string there is no accessible name.

`fieldset` Element Accessible Name Computation

  1. If the `fieldset` element has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. If the accessible name is still empty, then: if the `fieldset` element has a child that is a legend element, then use the subtree of the first such element.
  3. If the accessible name is still empty, then:, if the `fieldset` element has a `title` attribute, then use that attribute.
  4. Otherwise, there is no accessible name.

`output` Element Accessible Name Computation

  1. If the `output` element has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. Otherwise use the associated `label` element or elements accessible name(s) - if more than one `label` is associated; concatenate by DOM order, delimited by spaces.
  3. Otherwise use `title` attribute.
  4. If none of the above yield a usable text string there is no accessible name.

Other Form Elements Accessible Name Computation

  1. If the control has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. Otherwise use `label` element.
  3. Otherwise use `title` attribute.
  4. If none of the above yield a usable text string there is no accessible name.

`summary` Element Accessible Name Computation

  1. If the first `summary` element, which is a direct child of the `details` element, has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. Otherwise use `summary` element subtree.
  3. Otherwise use `title` attribute.
  4. If there is no `summary` element as a direct child of the `details` element, the user agent should provide one with a subtree containing a localized string of the word "details".
  5. If there is a `summary` element as a direct child of the `details` element, but none of the above yield a usable text string, there is no accessible name.

`figure` Element Accessible Name Computation

  1. If the `figure` element has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. If the accessible name is still empty, then: if the `figure` element has a child that is a `figcaption` element, then use the subtree of the first such element.
  3. If the accessible name is still empty, then: if the `figure` element has a `title` attribute, then use that attribute.
  4. Otherwise, there is no accessible name.

`img` Element Accessible Name Computation

  1. If the `img` element has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. Otherwise use `alt` attribute, even if its value is the empty string.
    An `img` with an `alt` attribute whose value is the empty string is mapped to the `presentation` role. It has no accessible name.
  3. Otherwise, if there is no `alt` attribute use the `title` attribute.
  4. Otherwise there is no accessible name.

`table` Element Accessible Name Computation

  1. If the `table` element has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. If the accessible name is still empty, then: if the `table` element has a child that is a caption element, then use the subtree of the first such element.
  3. If the accessible name is still empty, then: if the `table` element has a `title` attribute, then use that attribute.
  4. Otherwise, there is no accessible name.

`tr`, `td`, `th` Elements Accessible Name Computation

  1. If the element has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. Otherwise use the `title` attribute.
  3. If none of the above yield a usable text string there is no accessible name.

`a` Element Accessible Name Computation

  1. If the `a` element has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. Otherwise use `a` element subtree.
  3. Otherwise use the `title` attribute.
  4. If none of the above yield a usable text string there is no accessible name.

`area` Element Accessible Name Computation

  1. If the `area` element has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. Otherwise use `area` element's `alt` attribute.
  3. Otherwise use the `title` attribute.
  4. If none of the above yield a usable text string there is no accessible name.

`iframe` Element Accessible Name Computation

  1. If the element has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. Otherwise use the `title` attribute.
  3. If none of the above yield a usable text string there is no accessible name.

The document referenced by the `src` of the `iframe` element gets its name from that document's `title` element, like any other document. If there is no `title` provided, there is no accessible name.

Section and Grouping Element Accessible Name Computation

  1. If the element has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. Otherwise use the `title` attribute.
  3. If none of the above yield a usable text string there is no accessible name.

Text-level Element Accessible Name Computation

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

  1. If the element has an `aria-label` or an `aria-labelledby` attribute the accessible name is to be calculated using the algorithm defined in Accessible Name and Description: Computation and API Mappings.
  2. Otherwise use the `title` attribute.
  3. If none of the above yield a usable text string there is no accessible name.

Accessible Description Computation

An accessible description MAY be provided to any HTML element that is a valid child of the `body` element. The following list represents the order of precedence for user agents to compute the accessible description of an element. As defined by Accessible Name and Description Computation: Description Computation , user agents MUST use the first applicable description source, even if its use results in an empty description.

  1. If the element has an `aria-describedby` or `aria-description` attribute refer to the computation conditions defined in Accessible Name and Description: Computation and API Mappings.
  2. Otherwise, if the accessible description is still empty, and the element is:
  3. Otherwise, use the flat string of the `title` attribute if it was not used as the accessible name for the element.
  4. If none of the above are applicable, there is no accessible description.

Appendices

Change Log

Review the commit history of this document on GitHub.

Substantive changes since moving to the Accessible Rich Internet Applications Working Group (03-Nov-2019)

  • 28-Mar-2023: Add `inert` attribute mapping. See GitHub PR 410.
  • 24-Mar-2023: Add `search` element and its mappings. See GitHub PR 355.
  • 08-Mar-2023: Update `hgroup` element to be mapped to `role=group`. See GitHub PR 398.
  • 08-Mar-2023: Clarify naming algorithm for `output` element. See GitHub PR 402.
  • 12-Dec-2022: Revise mapping for `s` element to be `role=deletion`. See GitHub PR 442.
  • 28-Nov-2022: Simplify accessible description computation section. See GitHub PR 444.
  • 19-Jul-2022: Update `address` element to be mapped to `role=group`. See GitHub PR 420.
  • 03-Apr-2022: Update `aside` mappings based on its nesting context. See GitHub PR 350.
  • 06-Mar-2022: Update the following elements to map to the `generic` role: `a no href`, `footer` not scoped to `body`, `header` not scoped to `body`, `samp`, `span`. See GitHub PR 364.
  • 06-Feb-2022: Update `mark` to point to Core AAM mapping for the role. See GitHub Issue 316.
  • 02-Nov-2021: Updating `blockquote`, `caption`, `code`, `del`, `em`, `ins`, `meter`, `paragraph`, `strong`, `sub`, `sup` and `time` to ARIA 1.2 mappings in Core AAM. Fix `body` mapping to `generic`, and `html` mapping to `document`. Fix `hgroup` mapping to `generic`. Update `details` to map to `group` with additional information specific to ATK, UIA. See GitHub issue #348
  • 12-May-2021: Add FACES references to attributes table - `readonly`, `name`, `form`, `disabled`. See Issue 257.
  • 12-Dec-2019: Adds `hgroup`, `slot`, autonomous custom element and form associated custom element. See GitHub issue #189.
  • 26-Nov-2019: Updates mappings for `disabled`, `scope`, `spellcheck`, `tabindex` to point to WAI-ARIA. Adds AX `pattern`, `reversed`, `rows`, `size`, `span`, `src`, `start`, `step`, `type` attribute mappings. Adds `min-length`, `ping`, `playsinline`, `referrerpolicy`, `sizes`, `srcset`, `data[value]` attribute mappings. See GitHub pull request #245.

Substantive changes since moving to the Web Application Working Group (formerly Web Platform WG) (01-Oct-2016)

  • 30-Sept-2019: Remove mappings for `rb` and `rtc` elements as they are marked as obsolete in HTML. See GitHub issue #115 and pull request #253.
  • 23-Sept-2019: Update attribute mappings for `high`, `low`, `max`, `min`, and `meter` and `progress`'s `value` attribute. See GitHub pull request #244.
  • 18-Sept-2019: Update `mark` element's UIA `LocalizedControlType` and AX `AXRoleDescription`. See GitHub issue #236.
  • 18-Sept-2019: Update ATK mappings for `summary` and `details` elements. See GitHub issue #142 and GitHub issue #147.
  • 18-Sept-2019: Update MSAA mappings for `sub` and `sup`. See GitHub pull request #252.
  • 11-Sept-2019: Update mapping for [^menu^] to match HTML Living Standard. Remove element and attribute mappings that are not applicable to `menu` and `menuitem`. Update mapping of `menu` to `role="list"`. See GitHub issue #188.
  • 10-July-2019: Further updated mappings for `ins` and `del` elements. See GitHub pull request #219.
  • 13-June-2019: Update mappings for `ins` and `del` elements. See GitHub issue #141.
  • 10-June-2019: Update ATK mappings for `header` and `footer` when not scoped to the `body`. See GitHub issue #129.
  • 21-May-2019: Update AXAPI mappings for `map` element. Add accessible name and description computation for `area`. See GitHub issue #176.
  • 11-Apr-2019: Update UIA mappings for `sub` and `sup` elements. See Pull request #177.
  • 20-Mar-2019: Updated IA2 mappings for `sup` and `sub` elements. See GitHub issue #174.
  • 26-Feb-2019: Updated mappings for the `address` element. See GitHub issue #170.
  • 19-Feb-2019: Added `placeholder` attribute to accessible name computation for various `input` elements. See GitHub issue #167.
  • 07-Feb-2018: Added entries for the `rb` and `rtc` elements, and updated AXAPI mappings for the `rb`, `rt` and `ruby` elements. See GitHub issue #115.
  • 07-Feb-2018: Updated mappings for the `svg` element. See GitHub issue #43.
  • 07-Feb-2018: Updated AXAPI mappings for the `del` and `ins` elements, and the `datetime` attribute.
  • 07-Feb-2018: Aligned mappings with CORE-AAM as appropriate for `header` and `footer` when scoped to `body`, `aside`, and `output`. See GitHub issue #119.
  • 07-Feb-2018: Updated ATK and AX mappings for the `multiple` attribute on `input` element. See GitHub issue #96.
  • 07-Feb-2018: Updated ATK mappings for the `sub` and `sup` elements. See GitHub issue #121.
  • 07-Feb-2018: Updated mappings for the `body` element. See GitHub issue #117.
  • 01-Feb-2018: Updated IA2 mapping for the `meter` element. See GitHub issue #2.
  • 29-Jan-2018: Updated heading mapping to reflect implementations. See GitHub issue #116.
  • 23-Jan-2018: Added note regarding effect of some CSS properties. See GitHub issue #234.
  • 23-Jan-2018: Updated mappings for the `address` element. See GitHub issue #33.
  • 23-Jan-2018: Updated mappings for the `dt` element. See GitHub issue #78.
  • 23-Jan-2018: Updated AXAPI mappings for the `mark` element.
  • 08-Jan-2018: Updated mappings for the `input` element with the `type` attribute in the Color state. See GitHub issue #48.
  • 06-Jan-2018: Updated IA2 mappings for the `pre`, `q`, and `ruby` elements, and the `multiple` attribute for the `input` element. See GitHub issue #94.
  • 18-Dec-2017: Rewrote first paragraph in Introduction to better reflect the relationship between the HTML-AAM and CORE-AAM specifications. See GitHub issue #66.
  • 18-Dec-2017: Updated `readonly` attribute to use `aria-readonly="true"` WAI-ARIA mappings. See GitHub issue #93.
  • 08-Dec-2017: Changed AXAPI mapping for the `canvas` element from `AXImage` to `AXGroup`.
  • 01-Dec-2017: Updated mappings for the `dfn` element. See GitHub issue #6.
  • 30-Nov-2017: Updated mappings for the `meter` element. See GitHub issue #2.
  • 24-Nov-2017: Updated mappings for the `audio` and `video` elements. See GitHub issue #80.
  • 23-Nov-2017: Updated `figure` element mappings to reflect the WAI-ARIA `figure` role mappings.
  • 23-Nov-2017: Updated mappings for the `form` element based on presence of accessible name. See GitHub issue #106.
  • 23-Nov-2017: Removed the accessible name computation requirement to ignore an `img` element's `title` attribute when the element's `alt` attribute is empty. See GitHub issue #99.
  • 23-Nov-2017: Added note to not expose `aria-roledescription` unless element also a conforming `role` attribute value. See GitHub issue #98.
  • 09-Aug-2017: Updated mappings for the `type` attribute on the `ol` element. See GitHub issue #91.
  • 25-July-2017: Updated UIA mappings for multiple elements and attributes. See GitHub issue #95 and GitHub pull request #101.
  • 02-June-2017: Updated AXAPI mappings for `title` attribute on `abbr` element, and `abbr` attribute on `th` element. See GitHub issue #16.
  • 31-May-2017: Updated mappings for `hidden` attribute. See GitHub issue #38.
  • 24-May-2017: Updated mappings for `selected` attribute. See GitHub issue #92.
  • 01-May-2017: Updated AXAPI mapping for `time` element. See GitHub issue #88.
  • 27-Apr-2017: Updated UIA mappings for `lang` and `dir` attributes. See GitHub issue #19.
  • 19-Apr-2017: Updated mapping for `colspan` and `rowspan` attributes. See GitHub issue #56 and issue #57.
  • 03-Apr-2017: Updated mapping for `section` element. See GitHub issue #79.
  • 23-Dec-2016: No mapping for `datalist` element if not linked with `input` element. See GitHub issue #26.
  • 23-Dec-2016: Updated IA2 mapping for `list` attribute. See GitHub issue #21.
  • 22-Dec-2016: Sync mappings for `footer` and `header` elements. See GitHub issue #59.
  • 22-Dec-2016: Updated IA2 mapping for `input@type='date'` attribute. See GitHub issue #61.
  • 22-Dec-2016: Updated IA2 mapping for `input@type='file'` element. See GitHub issue #62.
  • 22-Dec-2016: Updated IA2 mapping for `summary` element. See GitHub issue #64.
  • 14-Dec-2016: Updated wording distinguishing when `header` and `footer` elements are or are not ARIA landmarks. See GitHub issue #65.
  • 07-Dec-2016: Modified `aria-multiselectable` mapping for `datalist` to reflect listbox selection model. See GitHub issue #71.
  • 07-Dec-2016: Mappings for the `multiple` attribute on `input` and `select` elements. See GitHub issue #72.
  • 27-Nov-2016: Added implementation rules for the `checked`, `contenteditable`, `disabled`, and `indeterminate` attributes.
  • 21-Nov-2016: Removed `placeholder` attribute from accessible description computation for various `input` elements.

Acknowledgments

The following people contributed to the development of this document.

Participants active in the HTML Accessibility Task Force active at the time of publication