The Radio form control allows for selection of one option from a group.

Anatomy

Anatomy elements
#RequiredElementDescription
1ContainerWraps the input, label, and assistive text.
2RadioA circle that fills with an inner dot when its option is selected.
3LabelNames the option the Radio selects. Can accept rich content.
4Assistive textDisplays description or error text to aid the user.

Guidelines

Radio vs. Checkbox and Toggle

Radios, Checkboxes, and Toggles are all form controls that let a user select options. However, it's important to understand the difference as they are not interchangeable:

  • Radios are limited to only one choice in a group of options that cannot be deselected.
  • Checkboxes allow users to select zero or more options independently and allow deselection.
  • Toggles function similarly to real-world on/off switches. Form submission is not required; the setting takes effect immediately.

Radio vs. Select and SegmentedControl

Radios, Selects, and SegmentedControls all allow a user to pick a single value. Using the correct component depends on how many options there are and the goal of the control:

  • Radios display every option at once in a vertical list. Best suited for a limited list of two to seven options, especially when the options require descriptions.
  • Selects collapse all options behind a trigger and dropdown. Prefer using them for longer lists.
  • SegmentedControls present a few mutually exclusive options as a compact row of buttons. Use them to switch the view of the content beside them, not to fill out a form.

Using Radio groups

When creating many Radio options, place them within a RadioGroup component to tie them together as a set. Radios within a group can use a shared label or have their disabled states collectively toggled.

Best practices

Clearing a selection

Once selected, a Radio cannot be deselected. When "none of these" is a valid answer, give the group an explicit option for it instead of expecting the user to undo their choice.

Workspace role
Do: Add an explicit option for the empty choice.
Workspace role
Don't: Leave the user with no way back to an unselected state.

Default selection

Preselect the safest and most common option. An empty group creates unnecessary extra work for the user in most cases, and it hides the fact that a choice is required until validation fails.

Do you want to track opens and clicks?
Do: Preselect the option most users want.
Do you want to track opens and clicks?
Don't: Leave a required group with nothing selected.

Dependent controls

An option that needs further user input can reveal a control below its label, such as a TextField for a number of days or a Select for a permission level. Keep the dependent control disabled until its option is selected so it never reads as an independent choice, and indent it to align with the label text rather than the Radio.

How long do you want to allow access?
Do: Place the dependent control under the option it belongs to and disable it until that option is selected.

Group size

Keep a group to seven options at most. Beyond that, the group dominates the page and the options become harder to compare than to scroll past. For longer lists, use a Select instead.

Send frequency
Do: Show a short set of options the user can compare at a glance.
Time zone
Don't: Expand a long list into a wall of options.

Layout

Stack options vertically. A single column gives every label the same visual starting point so options can be parsed easier. Limit horizontal groups to one- to two-word labels with no description.

Existing profiles
Do: Stack options in a single column.
Don't: Spread options with descriptions across a row.

Customization

Custom label

The Radio's label accepts rich content as well as plain text. Use it to emphasize the part of the option that distinguishes it, or to add a Badge to denote a recommended choice. Avoid other interactive elements such as links as the label itself is interactive.

Plain text

Plain text is used for the majority of cases.

Rich content

Rich content can be added to the label of emphasis.

Behaviors

States

Base

Unselected and selected Radios show default styles with no user interaction.

Hover

On mouse hover, the border color darkens. A selected Radio darkens its inner dot to match.

Focus

On keyboard focus, the Radio receives the standard 2px focus ring.

Disabled

Disabled Radios cannot be interacted with. A disabled selected Radio displays muted colors to better highlight its state.

Danger

The error message adopts danger styling while the radio input remains the same.

Truncation

Long labels wrap to multiple lines by default. Truncation can be enabled for labels that would otherwise push the layout wider than its container; it prevents wrapping and cuts the label short with an ellipsis. Be mindful when enabling. If text must be truncated, ensure the label is formatted in a way where the most important text is placed closer to the beginning.

Wrapping

By default, a long label wraps and the Radio stays aligned to the first line.

Truncated

When truncation is enabled, the label is clipped to a single line.

Content

Assistive text

Assistive text displays below the Radio and gives the user information about the options they're choosing between. Assistive text comes in different forms including descriptions and error text.

Description

Use description text to provide hints, formatting guidance, or constraints that help users make the right selection. Use complete, but short sentences for description text. Apply consistently—if one option has a description, every option should.

Existing profiles
Do: Describe what additional information the user should know about the option.
Existing profiles
Don't: Describe only some options within the group.

Error

Error messages communicate issues the user must resolve before submission. Frame validation errors as direct instructions, not accusations. Be sure to provide guidance on how to fix the error. Keep messages direct and concise. Never use "Please".

Do: Note the specific problem and how to solve it.
Don't: State that something is wrong without saying what to do.

Labels

Group

Label the group with the question the options intend to answer. The group label carries the shared context so each option label can stay short.

How should we handle duplicate profiles?
Do: Ask the question the options will answer.
Duplicates
Don't: Name the field and repeat the context in every option.

Option

Write option labels in sentence case with no end punctuation. Keep them as grammatically uniform in structure as possible to make them easier for users to scan and read. State what the option does, if possible, rather than how it is implemented.

What should we do with empty values?
Do: Use the same grammatical shape for every option in a group.
What should we do with empty values?
Don't: Mix phrasings, or label options with their stored values.