# ARIA Form Role Reference > **Source:** ## Definition and Description The `form` role identifies a group of elements on a page that provide equivalent functionality to an HTML form. It is a **landmark role** that helps users navigate to form sections. A `form` landmark identifies a region of content that contains a collection of items and objects that, as a whole, combine to create a form when no other named landmark is appropriate (e.g., `main` or `search`). **Important:** The form is not exposed as a landmark region unless it has an accessible name. ## Preferred Approach: Use HTML `
` Instead Use an HTML `` element to contain your form controls, rather than the ARIA `form` role, unless you have a very good reason. The HTML `` element is sufficient to tell assistive technologies that there is a form. ```html
``` The `
` element will automatically communicate as a `form` landmark if provided an accessible name. ## When to Use `role="form"` The `form` role should be used to identify a **region of the page** containing form content, not individual form fields. It is appropriate when you are not using a native `` element but still want to convey form semantics to assistive technologies. ### Basic Example ```html
``` ### Full Example with Form Controls ```html
``` ## Accessible Naming (Required for Landmark Exposure) Each `` element and form `role` that needs to be exposed as a landmark **must be given an accessible name** using one of: - `aria-label` - `aria-labelledby` - `title` attribute ### Example with `aria-label` ```html
``` ### Avoid Redundant Descriptions Screen readers announce the role type, so do not repeat it in the label: - **Incorrect:** `aria-label="Contact form"` (announces "contact form form") - **Correct:** `aria-label="Contact information"` (concise and non-redundant) ## Attributes and Interactions ### Associated WAI-ARIA Roles, States, and Properties No role-specific states or properties are defined for the `form` role. ### Keyboard Interactions No role-specific keyboard interactions are defined for the `form` role. ### Required JavaScript Features - **`onsubmit` Event Handler:** Handles events raised when the form is submitted. - Anything that is not a native `` element cannot be submitted using standard form submission. You must use JavaScript to build alternative data submission mechanisms (e.g., with `fetch()` or `XMLHttpRequest`). ## Accessibility Concerns ### 1. Use Sparingly Landmark roles are intended for larger overall sections of the document. Using too many landmark roles creates "noise" in screen readers, making it difficult for users to understand the overall page layout. ### 2. Inputs Are Not Forms Do not declare `role="form"` on individual form elements (inputs, textareas, selects, etc.). Apply the role to the **wrapper element only**. ```html
``` ### 3. Use `search` Role for Search Forms If a form is used for search functionality, use the more specialized `role="search"` instead of `role="form"`. ### 4. Use Native Form Controls Even when using `role="form"`, prefer native HTML form controls: - `