How to fix: Select menus must have an accessible name
A dropdown needs an associated label, otherwise its purpose is never announced and users cannot tell what they are choosing.
The fix
Give every <select> an associated label or accessible name.
Who this affects
A screen-reader user tabbing through a checkout hears only the role and the current value, so an unnamed country dropdown announces in NVDA as "combo box, Netherlands" with nothing saying what is being chosen. Where a form puts several selects in a row, such as day, month and year of birth, all three sound identical. Speech-input users on Dragon or macOS Voice Control cannot reach it by name either, because "click country" matches an accessible name and there is none to match, leaving them the number overlay or the mouse grid to hit a control everyone else can say out loud.
Before and after
<select name="country">…</select>
<label for="country">Country</label>
<select id="country" name="country">…</select>
Where this usually comes from
- A placeholder option carries the label: <option>Choose a country</option> reads as the select's value, not its name.
- The visible label sits beside the select as plain text or a <div>, with no for and id pair connecting the two.
- A design-system Select component takes a label prop that renders text but never wires it to the generated id.
- The label is hidden with display: none to save space, which axe reports through its hidden-explicit-label check even though the markup looks correct.
- An icon-only control such as a sort order or per-page selector was left without aria-label because the icon seemed self-explanatory.
Checking it yourself
Click the visible label text. If focus does not land in the select, the for and id association is missing, whatever the layout suggests. Then select the element in Chrome DevTools, open the Accessibility pane in the Elements panel, and read the Name value under Computed Properties; an empty name is the failure, and the pane also shows where a present name came from.
A scanner finds this one automatically. What it cannot judge, and how the score is built, is on how we test.
Related fixes
Check your site for this issue
Scan any page free against WCAG 2.2 AA and get every automatically detected issue with its fix.