Multi-select: when a user can select any number of choices from a set list.
Visibility of options: when users need to see all the available options up front at a glance.
Selecting/deselecting a large quantity of options. If the user needs to select or deselect 5 or more options (for instance, when selecting sites) prefer checkboxes to a multi-select.
List options vertically. Horizontal checkboxes can make it tougher to tell which label relates to which checkbox.
Use positive statements. Negative language in labels can be counterintuitive. For example, use “I want to receive a promotional email” instead of “I don’t want to receive promotional email.”
Make the label selectable. The user should be able to click on either the label or the checkbox to select or deselect an option.
Make the label selectable. The user should be able to click on either the label or the radio to select or deselect an option.
List options vertically. Horizontal radio buttons can make it tougher to tell which label relates to which radio.
Be intentional with defaults. Avoid default values in radios unless you have reason to believe that a meaningful percentage of users typically select a particular value.
Single selection. If the options to choose from are small and not space constrained, consider a Radio. If there is a list of options or the selection is space constrained, consider a Select.
Multi-select: When a user can select any number of choices from a set list consider either Checkbox or a Multi-select input.
List options vertically. Horizontal switches can make it tougher to tell which label relates to which switch.
Use positive statements. Negative language in labels can be counterintuitive. For example, use “I want to receive a promotional email” instead of “I don’t want to receive promotional email.”
Multi-select. If you need to allow users to select more than one option at once, you can consider a Multi-select. Users often don’t understand how to select multiple items from a dropdown, so also consider Checkbox.
Single selection from a small group. If space isn't constrained or if it would be a better experience to surface the options up front, consider Radio buttons.
Avoid dependent options. Avoid making options in one select menu change based on the input to another. Users often don’t understand how selecting an item in one impacts another.
Be intentional with defaults. Avoid default values in selects unless you have reason to believe that a meaningful percentage of users typically select a particular value.
Empty state. The empty state of a select should say "Select…".
Ordering of options. Most of the time alphabetical will make sense, but we have some use cases where alphabetical won't make sense (e.g., a time-based select with 1 minute, 1 hour, 1 day).
Option group headings. If the select has options which can be better understood if divided into groups, consider using headers to organize them.