Inputs

Checkbox

Boolean option row with label and helper copy — standalone or inside CheckboxGroup.

Base UI


Checkbox is a single on/off option with label and helper copy beside the control. Standalone rows need an external Field.Root from @base-ui/react for naming and validation; Checkbox does not own a field root the way Textfield does.

Related options share a selection model through CheckboxGroup. Add Fieldset with render={<CheckboxGroup />} only when the group needs a legend or shared description; otherwise CheckboxGroup may sit directly in Field.Root. Checked, indeterminate, disabled, and change handlers pass through Base UI; size scales the control and label.


When to use

  • A boolean that ships with a larger form submit (terms, save-as-default)
  • Several independent options that can stay on at once (alert channels, plan tiers)
  • A select-all row that needs an indeterminate state when only some children are checked

When not to use

  • The change should apply immediately as a setting → Switch
  • Exactly one choice is allowed → Radio
  • A long closed list in a popup → Select

  • Fieldset — legend and group helper for CheckboxGroup
  • Switch — immediate on/off settings
  • Radio — mutually exclusive options

Common examples

Labeled group

A Fieldset-backed CheckboxGroup with labeled preference rows is the default multi-select pattern. Each option keeps its own label / description; the group owns value and onValueChange.

Standalone checkbox

Standalone booleans under other fields wrap in their own Field.Root — no Fieldset without a shared legend.

Surface card

hPadding / vPadding let the control fill a bordered Surface. Drive Surface color from checked state when the whole card should read as selected.

Select all

Lists of independent options stay one Field.Root + Checkbox per row. Drive a select-all row with Base UI indeterminate when some — but not all — children are checked.

Ask your agent

Build notification preferences under the heading "Email alerts" with three checkboxes: product updates, security, and marketing. Keep each label short and add a one-line description per option.

Last updated on

On this page