Radio buttons
Radio buttons let users choose only one option from a list of mutually exclusive choices. This means that selecting one option automatically deselects any other.
The guideline content on this page is synced with Figma and can be used as a source of truth.
Open in Figma
Anatomy
- Radio input
- Label
Default states
A component’s state defines its appearance and behaviour.
Selected states
These are the different states for the selected state.
Usage
Radio buttons are perfect for forms and surveys when users must choose one option from a list.
Unlike a dropdown, they let users quickly see and compare all choices at a glance.
You should always have at least two options when using radio buttons.
Clickable area
It is crucial for both the label and the radio button to be clickable to ensure usability and accessibility for all users. By making the label also clickable, you provide a much larger and more forgiving target, which reduces user frustration and the chance of accidental errors.
Accessibility
Keyboard interaction
All radio buttons should be reachable via TAB and SHIFT+TAB keys.
Best practices
Content guidelines

Start with capital letters.

Don’t start with small letters.
Usage

Use radio buttons when users need to select only one option from a list.

Don’t use radio buttons when users can select multiple options at once. Use checkboxes instead.
Specs
Design
Radio buttons
The disabled style will be applied for any of these: add .disabled class to your .radio or <fieldset>, or disabled attribute or disabled class on the input.
Disabled as readonly
To present a radio button in a non-interactive state that preserves its current value, apply the disabled attribute to the input. You can optionally use the .disabled class on the wrapper, for example when disabling a group or to reinforce the visual disabled state.
Why not use the readonly attribute?
The HTML readonly attribute has no effect on radio buttons. It is only supported on text-based inputs such as <input type="text"> and <textarea>. Browsers silently ignore readonly on radio buttons, meaning users can still change the value despite the attribute being present.
Use the disabled attribute instead to prevent user interaction. If the value must be submitted with the form, consider adding a hidden <input> that carries the value alongside the disabled control.
Secondary/outline style
For the secondary style of the radio button just add the .radio-outline class to the .radio wrapper.