Select
Updated in October 2026
Use select to let users choose an option from a long list, but only use it as a last resort.
Important: Consider an alternative first
Use selects with caution. Hiding options can make them harder to understand and compare, so consider whether another component like radios would better meet users’ needs.
<div class="nhsw-form-group">
<label class="nhsw-label nhsw-label--regular" for="region">Choose region</label>
<select id="region" name="region" class="nhsw-select">
<option value="" selected>Choose region</option>
<option value="north-wales">North Wales</option>
<option value="mid-wales">Mid Wales</option>
<option value="west-wales">West Wales</option>
<option value="south-wales">South Wales</option>
</select>
</div>
{% from "select/macro.njk" import nhswSelect %}
{{ nhswSelect({
id: "region",
name: "region",
label: { text: "Choose region", classes: "nhsw-label--regular" },
items: [
{ value: "", text: "Choose region", selected: true },
{ value: "north-wales", text: "North Wales" },
{ value: "mid-wales", text: "Mid Wales" },
{ value: "west-wales", text: "West Wales" },
{ value: "south-wales", text: "South Wales" }
]
}) }}
When to use select
Use select to let users choose an option from a long list. The select component should only be used as a last resort in public-facing services because research shows that some users find selects very difficult to use.
When not to use select
Before using the select component, try asking users other questions which will allow you to present them with fewer options. Consider using a different solution, such as radios.
How to use select
If you use the component for settings, you can make an option pre-selected by default when users first see it.
If you use the component for questions, do not pre-select any of the options in case it influences users' answers.
Error messages
Display an error message if the user has not selected an option.
<div class="nhsw-form-group nhsw-form-group--error">
<label class="nhsw-label nhsw-label--regular" for="region">Choose region</label>
<div class="nhsw-hint" id="region-hint">This can be different to what you selected before</div>
<p class="nhsw-error-message" id="region-error"><span class="nhsw-visually-hidden">Error: </span>Choose region</p>
<select id="region" name="region" class="nhsw-select nhsw-is-invalid" aria-invalid="true" aria-describedby="region-hint region-error">
<option value="">Choose region</option>
<option value="north-wales">North Wales</option>
<option value="mid-wales">Mid Wales</option>
<option value="west-wales">West Wales</option>
<option value="south-wales">South Wales</option>
</select>
</div>
{% from "select/macro.njk" import nhswSelect %}
{{ nhswSelect({
id: "region",
label: { text: "Choose region", classes: "nhsw-label--regular" },
hint: { text: "This can be different to what you selected before" },
errorMessage: { text: "Choose region" },
items: [
{ value: "", text: "Choose region" },
{ value: "north-wales", text: "North Wales" },
{ value: "mid-wales", text: "Mid Wales" },
{ value: "west-wales", text: "West Wales" },
{ value: "south-wales", text: "South Wales" }
]
}) }}
Avoid adding functionality to allow selecting multiple options
The select component does not support selecting multiple options, as there's a history of poor usability and assistive technology support for <select multiple>. If you need to ask the user to pick more than 1 item from a list, it's almost always better to use another method, such as a list of checkboxes.
Read Select your poison (24 Accessibility).
Accessibility
Any input that's designed to let a user select multiple options must offer a way to do so without relying on click and drag movements or keyboard and mouse combination actions. This supports WCAG 2.2 Success Criterion 2.5.7 Dragging Movements, level AA.
Source
Learn more about Select in the GOV.UK Design System.
Select variants
Select with hint
<div class="nhsw-form-group">
<label class="nhsw-label nhsw-label--regular" for="region">Choose region</label>
<div class="nhsw-hint" id="region-hint">This can be different to what you selected before</div>
<select id="region" name="region" class="nhsw-select" aria-describedby="region-hint">
<option value="">Choose region</option>
<option value="north-wales">North Wales</option>
<option value="mid-wales">Mid Wales</option>
<option value="west-wales">West Wales</option>
<option value="south-wales">South Wales</option>
</select>
</div>
{% from "select/macro.njk" import nhswSelect %}
{{ nhswSelect({
id: "region",
label: { text: "Choose region", classes: "nhsw-label--regular" },
hint: { text: "This can be different to what you selected before" },
items: [
{ value: "", text: "Choose region" },
{ value: "north-wales", text: "North Wales" },
{ value: "mid-wales", text: "Mid Wales" },
{ value: "west-wales", text: "West Wales" },
{ value: "south-wales", text: "South Wales" }
]
}) }}
Add hint text when users need help understanding the options or choosing the right one.
Examples
This component is available for use, but we do not have any published examples yet.
Email the DHCW Design System team if you use the component so that we can help others learn from your design decisions.