Checkbox vs Radio Group
The difference is how many answers can be true at once, and the markup enforces it rather than your validation. Radios sharing a name make a second selection impossible, so “exactly one” is structural. Checkboxes let every combination exist, including the invalid ones, which then have to be caught and explained. The keyboard follows the same logic: a radio group is one tab stop with the arrows moving inside it, while every checkbox is its own stop, because each is a separate question.
One answer out of several means radios. Any number of independent yes/no answers means checkboxes.
Checkbox
A form control holding a boolean value, optionally indeterminate, submitted with the rest of the form.
Reach for it when
- The value is collected now and applied on submit — terms accepted, options ticked, rows selected.
- Several independent options can all be on at once. A group of checkboxes says “any of these”.
- You need a parent that reflects its children: all, none, or some.
Avoid it when
- The change applies immediately. That is a switch, and dressing it as a checkbox hides when it takes effect.
- Exactly one option must be chosen. That is a radio group — checkboxes let someone tick two and then argue with your validation.
- There is one option and it is a setting rather than a form value. A lone checkbox in a settings panel is usually a switch in disguise.
Radio Group
A set of mutually exclusive options sharing one name, of which exactly one can be selected.
Reach for it when
- Exactly one option must be chosen and the options are few enough to show at once — roughly two to seven.
- The options need comparing before deciding: shipping speeds with prices, plans with limits.
- Choosing one must visibly un-choose the others. That relationship is the point.
Avoid it when
- More than one answer can be true. That is a checkbox group, and using radios means throwing away answers.
- The list is long. Fifteen radios is a wall; that is a select, or a combobox if longer still.
- There are two options and one is plainly the default state of a setting that applies immediately — that reads better as a switch.