Comparison
When do I use legend, label or aria-labelledby?
Use <fieldset> with <legend> to name a **group** of controls, such as radio buttons or checkboxes that answer one question. Use <label> to name a **single** field. Use role="group" with aria-labelledby only when you cannot use a fieldset, for example inside a layout that a fieldset breaks.
| Need | Use | Example |
|---|---|---|
| Name one input | <label for> | Email address field |
| Name a radio group | <fieldset> + <legend> | Preferred contact method: Email / Phone / Text |
| Name a checkbox group | <fieldset> + <legend> | Topics you want: News / Offers / Updates |
| Name a group without a fieldset | role="group" + aria-labelledby | A custom grid of toggles |
| Name a custom radio group widget | role="radiogroup" + aria-labelledby | Star rating built from buttons |
Sources: WHATWG HTML Standard: The legend element · W3C WAI: Grouping controls




