A radio button lets the user choose exactly one of two or more mutually exclusive options. Choosing one clears the others in the group.
Every example on this page is the real component, not a picture. Click, tab and use the arrow keys to try it. Figma: Radio Button.
Choose a breakpoint, size, state and value and the radio and its code update. Hover and focus are forced here so they can be seen. The radio is live: click it.
A radio button lets the user choose exactly one of two or more mutually exclusive options. Choosing one clears the others in the group.
Radio has two sizes (Large, Small), eight states and an optional hint message under the label. It is a native <input type="radio">, so grouping and arrow-key navigation come from the browser.
This documentation has three pages. Examples & Guidelines (this page) shows when and how to use a radio button. Specifications holds the values: tokens, sizes, measurements, states and requirements. Code shows how to add one to a page.
Use radio buttons when the user picks exactly one option from a short list and all options should be visible at once. Use them to:
Preselect a default option in every group unless the user must choose consciously. It removes confusion and gives users a clear suggestion.
A radio group allows only one choice. When several options can be chosen, use eco-checkbox.
Preselect one option in every group unless the user must choose consciously. It removes confusion and gives users a clear suggestion.
Stack options vertically: it is easier to scan. Horizontal only for two short options.
For a setting that applies at once, use eco-switch. To switch between two related views or filters in the same surface, use eco-pill-segment-control. For one value from a long list, use eco-select.
| The user… | Use |
|---|---|
| picks exactly one of two or more options | Radio |
| picks any number of options, saved on submit | eco-checkbox |
| turns one setting on or off, with immediate effect | eco-switch |
| switches between two related views or filters | eco-pill-segment-control |
| picks one value from a long list | eco-select |
label.legend.body-md (Large) or body-sm, 8px from the circle. The whole label is the click target.body-sm, text-tertiary, 4px below the label.Radio buttons are used in groups. The patterns below show the group with a default, the optional hint message and a disabled group. Use the Breakpoint toggle to preview the Large label on desktop (17/24) and mobile (16/22).
Related options sit in a fieldset with a legend, stacked vertically, with one option preselected. A hint message sits under the label of the option it explains.
A disabled group keeps the selection visible.
Large is the default. Small (class .form-radio-item--sm) is for dense layouts. The size does not change with the breakpoint; only the Large label does. Measurements are under Sizes in Specifications.
Stack options vertically: it is easier to scan. Horizontal only for two short options: it hides the link between radio and label for longer lists.
A radio is a 16px circle with a 1px grey border. When it is selected the border turns black and a 6px dot appears. Token names and values are under Design Tokens in Specifications.
A click on the circle or the label selects that option and clears the others in the group.
Hover gives the circle a grey fill and a darker border. The focus ring shows with :focus-visible only. All states are listed under States in Specifications.
Preselect one option in every group unless the user must choose consciously.
A disabled radio is not focusable. It has a grey fill, a light border and a text-disabled label and message.
All requirements are listed under Accessibility Requirements in Specifications.
Tab enters the group once, on the selected radio or on the first one. The arrow keys move to and select the next or previous option. This works when every radio shares one name.
Put the group in a fieldset with a legend, so the question is read together with each option. Wrap the input and the text in one label.