In each form, are fields of the same nature grouped together, where necessary?

A screen reader announces "Mrs", then "Mr". Without a semantic container, the user does not know that these two radio buttons concern the title. Grouping provides this missing context.

This criterion applies whenever multiple fields share a common logic: a series of checkboxes on the same topic, a date broken down into day/month/year, a block of postal address fields with street, postal code and city. If individual labels do not allow understanding the role of each field without seeing the page, a semantic container is mandatory.

Three solutions are valid: the <fieldset> element associated with a <legend> (native HTML solution, the most robust), an element bearing role="group" (ARIA, useful for composite fields such as a date or a social security number), and role="radiogroup" for groups of radio buttons implemented in ARIA. In all cases, the group must carry a relevant label — this is the object of criterion 11.6.

Un test to verify the logical grouping of related fields

Grouping of fields of same nature in <fieldset> or role=group

  1. Identify all groups of fields of the same nature in the form: radio buttons on the same topic, related checkboxes, date broken down into several fields, address block with street/postal code/city, identity block with surname/first name.
  2. For each identified group, verify that one of the following containers is used:
    • <fieldset> (native HTML)
    • An element with role="group" (ARIA)
    • An element with role="radiogroup" or role="group" if the group contains <input type="radio"> or elements with role="radio"
  3. If each group of the same nature is properly encapsulated in one of these containers, the test is validated.

Examples

❌ Non-compliant : Radio buttons without semantic grouping

<form>
  <p>Title</p>
  <input type="radio" id="mme" name="civilite" value="mme">
  <label for="mme">Mrs</label>
  <input type="radio" id="m" name="civilite" value="m">
  <label for="m">Mr</label>
</form>

The <p>Title</p> is visual text, not a semantic container. A screen reader navigating field by field announces "Mrs, radio button" without ever mentioning "Title". The user completely loses the context of the question being asked.

✅ Compliant : Radio buttons in a fieldset with legend

<fieldset>
  <legend>Title</legend>
  <input type="radio" id="mme" name="civilite" value="mme">
  <label for="mme">Mrs</label>
  <input type="radio" id="m" name="civilite" value="m">
  <label for="m">Mr</label>
</fieldset>

The <fieldset> creates a semantic group. A screen reader announces "Title, group" when entering the group, then "Mrs, radio button, 1 of 2". The context is complete. This is the recommended implementation for all radio button groups.

✅ Compliant : Composite date field with role="group"

<div role="group" aria-labelledby="label-naissance">
  <span id="label-naissance">Date of birth</span>
  <label for="jour">Day</label>
  <input type="text" id="jour" name="jour" size="2" maxlength="2">
  <label for="mois">Month</label>
  <input type="text" id="mois" name="mois" size="2" maxlength="2">
  <label for="annee">Year</label>
  <input type="text" id="annee" name="annee" size="4" maxlength="4">
</div>

A date in three text fields is not a group of radio buttons: role="group" with aria-labelledby is the appropriate ARIA solution here. The screen reader announces "Date of birth, group" when entering the container, then each field with its individual label.

Tips and pitfalls

⚠️ The visual container is not a semantic container

Surrounding fields with a <div> or a <section> — even styled with a border and a visible title — creates no accessible grouping. Screen readers ignore these elements as form containers. Only <fieldset>, role="group" and role="radiogroup" are recognized. This is the most frequent error in audits.

⚠️ The common name attribute does not create a semantic group

Radio buttons sharing the same name attribute form a functional group (only one choice possible), but this link is not reported by screen readers. The name attribute is invisible to accessibility. A <fieldset> or role="radiogroup" remains mandatory.

💡 Prefer <fieldset> to role="group" when possible

<fieldset> is a native HTML element with better support than role="group" in older browser/screen reader combinations. Reserve role="group" for cases where native HTML markup is not applicable, such as JavaScript components designed with non-<input> elements.

⚠️ Nested fieldsets for complex forms

A registration form can legitimately nest <fieldset> elements: one for "Personal information" containing a sub-<fieldset> for "Date of birth". This is valid in HTML5 and relevant whenever the nesting levels are semantically distinct.

⚠️ Do not confuse 11.5 (grouping) and 11.6 (group label)

Criterion 11.5 verifies the existence of the semantic container. Criterion 11.6 verifies that it carries a relevant label (<legend>, aria-label or aria-labelledby). A <fieldset> without a <legend> may validate criterion 11.5 while failing criterion 11.6. Both criteria are related but distinct.

Frequently asked questions

How do you decide whether form fields should be grouped according to RGAA?

Ask yourself this question: if someone hears only the field labels without seeing the page, do they understand the context? "Day", "Month", "Year" without context: impossible to know whether this is a birth date or an expiration date. "Mrs", "Mr" without context: no visible question. As soon as there is this doubt, group them.

When should you use role="radiogroup" rather than <fieldset> to group checkboxes?

Never. role="radiogroup" is reserved for radio buttons (<input type="radio"> or role="radio"). For checkboxes, use <fieldset> + <legend> or an element with role="group". Applying role="radiogroup" to checkboxes introduces incorrect semantics that some screen readers may restitute incorrectly.

How do you test the grouping of form fields during an RGAA 11.5 audit?

Inspect the DOM: identify <input type="radio">, <input type="checkbox"> and composite fields (date, phone in multiple parts). Verify that they are encapsulated in a <fieldset>, [role="group"] or [role="radiogroup"]. Complete by navigating with a screen reader: the group name must be announced when entering the container.

When does RGAA criterion 11.5 on grouping apply to single-field forms?

Never. Criterion 11.5 is conditional: "if necessary". A search form with one text field and a button does not need a <fieldset>. Grouping is required only when there are multiple fields of the same nature forming a logical set.

How do you use <fieldset> to structure sections of a long form in RGAA?

Only if the fields in the section are of the same nature and their individual labels are insufficient without context. Fields "Surname" and "First name" are self-explanatory: a <fieldset> is not mandatory. Fields "Street", "Postal code", "City" represent an address: a <fieldset> with the legend "Delivery address" is relevant.

References