Overview
Unchecked
Checked
Indeterminate
Disabled
Disabled checked
Installation
Usage
Variants
Basic
Accept terms and conditions
Checked
Subscribe to newsletter
With Description
Enable notifications
Receive email updates about your account activity.
Disabled
Admin access
Super admin
Indeterminate (Select All)
Use the indeterminate state to represent a “select all” parent checkbox when only some children are selected.Select all
Design
Engineering
Product
Checkbox Group Pattern
API Reference
Controlled checked state. Use
"indeterminate" to show a dash/mixed state.Uncontrolled initial checked state.
Callback fired when the checked state changes.
Label text displayed next to the checkbox.
Supporting description shown below the label.
Disables the checkbox and applies the disabled visual style.
HTML
id for associating a custom <label> element via htmlFor.Additional Tailwind classes for custom overrides.
Accessibility
- Checkbox uses a native
<input type="checkbox">element for full keyboard and screen reader support - Label is associated via
htmlFor/id— clicking the label also toggles the checkbox descriptionis linked viaaria-describedbyso screen readers announce it after the labeldisableduses the nativedisabledattribute, removing the element from tab order- Indeterminate state is set via
aria-checked="mixed"— screen readers will announce “mixed” - Focus ring (
0 0 0 4px #CDE4F5) meets WCAG 2.1 AA contrast requirements
Do’s & Don’ts
Do
- Use checkbox for multi-select or toggleable settings
- Always provide a visible label — never a checkbox alone
- Use the indeterminate state for “select all” parent checkboxes
- Group related checkboxes under a clear section heading
Don't
- Don’t use checkbox for exclusive single-selection — use Radio Group instead
- Don’t use checkbox for immediate actions — use Switch instead
- Don’t stack more than 8 checkboxes without grouping or filtering
- Don’t disable without explaining why in nearby helper text