# The “group” role is unnecessary for element “fieldset”.

> Canonical HTML version: https://rocketvalidator.com/html-validation/the-group-role-is-unnecessary-for-element-fieldset
> Attribution: Rocket Validator (https://rocketvalidator.com)
> License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

Many HTML elements come with built-in ARIA roles that assistive technologies already recognize. The `<fieldset>` element is one of these — its implicit role is `group`, which tells screen readers that the contained form controls are related. When you add `role="group"` to a `<fieldset>`, you're telling the browser something it already knows.

This redundancy matters for a few reasons:

- **Code cleanliness:** Unnecessary attributes add clutter, making your markup harder to read and maintain.
- **ARIA best practices:** The first rule of ARIA is "If you can use a native HTML element or attribute with the semantics and behavior you require already built in, instead of re-purposing an element and adding an ARIA role, state or property to make it accessible, then do so." Adding `role="group"` to `<fieldset>` violates this principle in spirit — it suggests the developer may not understand the element's native semantics.
- **Potential confusion:** Explicitly setting roles that match the default can mislead other developers into thinking the role is doing something special, or that removing it would change behavior.

This same principle applies to other elements with implicit roles, such as `role="navigation"` on `<nav>`, `role="banner"` on `<header>`, or `role="button"` on `<button>`. If the element already carries the semantic meaning natively, there's no need to duplicate it with an explicit ARIA role.

To fix this, simply remove the `role="group"` attribute from the `<fieldset>` element. No replacement is needed — the browser and assistive technologies will continue to treat the `<fieldset>` as a group automatically.

## Examples

### Incorrect: redundant `role="group"` on `<fieldset>`

```html
<form>
  <fieldset role="group">
    <legend>Shipping Address</legend>
    <label for="street">Street:</label>
    <input type="text" id="street" name="street">
    <label for="city">City:</label>
    <input type="text" id="city" name="city">
  </fieldset>
</form>
```

The validator will report that the `group` role is unnecessary for the `<fieldset>` element.

### Correct: `<fieldset>` without explicit role

```html
<form>
  <fieldset>
    <legend>Shipping Address</legend>
    <label for="street">Street:</label>
    <input type="text" id="street" name="street">
    <label for="city">City:</label>
    <input type="text" id="city" name="city">
  </fieldset>
</form>
```

The `<fieldset>` element inherently communicates the `group` role to assistive technologies, so no ARIA attribute is needed.

### When `role` on `<fieldset>` is appropriate

There are cases where you might legitimately set a *different* role on a `<fieldset>` — for example, `role="radiogroup"` when the fieldset contains a set of related radio buttons and you want to convey more specific semantics:

```html
<form>
  <fieldset role="radiogroup" aria-labelledby="color-legend">
    <legend id="color-legend">Favorite Color</legend>
    <label><input type="radio" name="color" value="red"> Red</label>
    <label><input type="radio" name="color" value="blue"> Blue</label>
    <label><input type="radio" name="color" value="green"> Green</label>
  </fieldset>
</form>
```

This is valid because `radiogroup` is a *different* role that provides more specific meaning than the default `group`. The validator only warns when the explicit role matches the element's implicit role.
