Codectionary / Developer documentation / HTML

<fieldset>, <legend>

The <fieldset> element groups related form controls together, typically rendered with a visible border. The <legend> element provides a caption for the group, describing what the enclosed fields are collectively for. This is especially useful for grouping radio buttons, related checkboxes, or sections of a longer form like "Billing Address" versus "Shipping Address".

Syntax

<fieldset>
  <legend>Group Title</legend>
  <!-- form controls -->
</fieldset>

Examples

Grouped Radio Buttons

Using fieldset to group a set of related radio options.

<fieldset>
  <legend>Preferred Contact Method</legend>
  <label><input type="radio" name="contact" value="email"> Email</label>
  <label><input type="radio" name="contact" value="phone"> Phone</label>
</fieldset>

Multi-Section Form

Breaking a longer form into clearly labeled groups.

<form>
  <fieldset>
    <legend>Personal Details</legend>
    <input type="text" placeholder="Full Name">
    <input type="email" placeholder="Email">
  </fieldset>
  <fieldset>
    <legend>Address</legend>
    <input type="text" placeholder="Street">
    <input type="text" placeholder="City">
  </fieldset>
</form>

Disabling a Whole Group

The disabled attribute on fieldset disables every control inside it at once.

<fieldset disabled>
  <legend>Payment Details (complete Step 1 first)</legend>
  <input type="text" placeholder="Card Number">
</fieldset>

Attributes

  • disabled (boolean): Disables every form control nested inside the fieldset
  • name (string): Associates the fieldset with the form for scripting purposes

Best practices

  • Always include a <legend> as the first child of a <fieldset> — it is what gives the group its accessible name
  • Use fieldset to group related radio buttons or checkboxes so screen readers announce the group context
  • Use the disabled attribute on a fieldset to disable a whole section at once instead of each input individually
  • Avoid using fieldset purely for visual styling — use a <div> if there is no genuine grouping of controls

Browser compatibility

Support applies to the named feature, not every attribute or behaviour in this article. Versions refer to browsers, not operating systems.

<fieldset>

Desktop

Chrome
Supported
From 1
Firefox
Supported
From 1
Safari
Supported
By 4 (possibly earlier)
Edge
Supported
From 12
Opera
Supported
By 15 (possibly earlier)

Mobile

Safari on iOS
Supported
By 3.2 (possibly earlier)
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 1 · Before version 86, this element did not support flexbox and grid layouts within this element. See bug 41027853.

Firefox

  • From 1

Safari

  • By 4 (possibly earlier)

Edge

  • From 12 · Before version 86, this element did not support flexbox and grid layouts within this element. See bug 4511145.

Opera

  • By 15 (possibly earlier)

Safari on iOS

  • By 3.2 (possibly earlier)

Chrome for Android

  • From 18 · Before version 86, this element did not support flexbox and grid layouts within this element. See bug 41027853.

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0 · Before version 14.0, this element did not support flexbox and grid layouts within this element. See bug 41027853.
<legend>

Desktop

Chrome
Supported
From 1
Firefox
Supported
From 1
Safari
Supported
From 3
Edge
Supported
From 12
Opera
Supported
By 12.1 (possibly earlier)

Mobile

Safari on iOS
Supported
From 1
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 1

Firefox

  • From 1

Safari

  • From 3

Edge

  • From 12

Opera

  • By 12.1 (possibly earlier)

Safari on iOS

  • From 1

Chrome for Android

  • From 18

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0
<fieldset> disabled

Desktop

Chrome
Supported
From 20
Firefox
Supported
From 4
Safari
Supported
From 6
Edge
Supported
From 79
Opera
Supported
From 12

Mobile

Safari on iOS
Supported
From 6
Chrome for Android
Supported
From 25
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.5

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 20

Firefox

  • From 4

Safari

  • From 6

Edge

  • From 79
  • From 12 · Removed in 79 · Last supported version: 18 · Partial implementation · Does not work with nested fieldsets. For example: <fieldset disabled><fieldset><!--Still enabled--></fieldset></fieldset>

Opera

  • From 12

Safari on iOS

  • From 6

Chrome for Android

  • From 25

Firefox for Android

  • From 4

Samsung Internet

  • From 1.5
<fieldset> name

Desktop

Chrome
Supported
From 19
Firefox
Supported
From 4
Safari
Supported
From 6
Edge
Supported
From 12
Opera
Supported
From 15

Mobile

Safari on iOS
Supported
From 6
Chrome for Android
Supported
From 25
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.5

MDN BCD record for this feature

Support history and limitations

Chrome

  • From 19

Firefox

  • From 4

Safari

  • From 6

Edge

  • From 12

Opera

  • From 15

Safari on iOS

  • From 6

Chrome for Android

  • From 25

Firefox for Android

  • From 4

Samsung Internet

  • From 1.5

MDN BCD 8.1.5 · Dataset built 2026-10-08 · Mapping reviewed 2026-10-21. These dates are not individual browser-test or claim-verification dates. Unknown means the data does not establish support.

HTML Living Standard

Specifications & further reading