Skip to content

Test your website now

Free, no card. We read only public pages.

Run free audit →

Accessibility · WCAG 4.1.2 level A

Select Element Must Have an Accessible Name: Label the Question

Fix an unnamed select with a persistent label. Separate the field name from its selected option, verify naming references, and test keyboard selection.

Published · Updated

What the check tests

Check
a11y.axe.select-name - Select element must have an accessible name
Passes when
Ensure select element has an accessible name
Scope
graded on every page crawled
Conformance
WCAG level A
Fix effort
small - under an hour

In one paragraph

Select element must have an accessible name means a tested native dropdown did not expose the question its options answer. Associate a clear persistent label with the select and keep the selected value separate from that name. A first option saying Choose a country is not, by itself, the control's label. Verify computed naming and actual selection rather than relying on a screenshot.

Why it matters

A value such as United Kingdom does not tell a user whether a dropdown selects billing country, delivery country, or interface language. A proper name supplies that context before and after the value changes.

Visible labels help people who are interrupted or reviewing a completed form as well as those using assistive technology. Native label association also supports a larger meaningful click target. An ARIA name can be appropriate, but should not silently replace visible wording with a different question.

A native select and a custom combobox are not interchangeable implementations. A custom listbox or combobox requires its own complete keyboard, focus, state, and ownership design. Avoid replacing the native control merely to make styling easier if you cannot preserve those functions.

How WebAuditOS evaluates this finding

The supplied select-name rule checks applicable native select elements using supported naming paths such as native labels, aria-label, aria-labelledby, and title fallback. It does not treat the selected option or an invented placeholder attribute as the field's ordinary accessible name.

Critical impact maps to high severity in the supplied integration. Applicability and presentational-role exceptions are not instructions to hide a functional dropdown. A passing name does not validate its accuracy, persistent visible guidance, required-state communication, or custom-combobox behaviour.

How to fix it

  1. Identify the actual question and control in the rendered form. Inspect its computed accessible name independently from its current value and role announcement.
  2. Prefer a persistent visible native label. For example:
<label for="delivery-country">Delivery country</label>
<select id="delivery-country" name="deliveryCountry" autocomplete="shipping country" required>
  <option value="">Choose a country</option>
  <option value="CZ">Czechia</option>
  <option value="SK">Slovakia</option>
</select>

This is an illustrative fragment. Populate real supported destinations and test server validation and error instructions; the sample options are not a complete checkout.

  1. Keep identifiers unique when forms or address groups repeat. Match for to the intended ID and preserve backend field names needed for submission.
  2. Use supplementary descriptions and errors through appropriate relationships, rather than concatenating all instructions into the name. A changing error should not erase the basic question.
  3. If using aria-labelledby, verify references exist and produce the intended text in the active state. Hidden-node naming has defined computation rules, so inspect the actual result rather than assuming every visually hidden reference is invalid.
  4. Do not use the initial option as the only prompt. Once selection changes, the question should remain visible and associated. Native select does not gain a persistent field label from an unsupported placeholder attribute.
  5. Test keyboard focus, option selection, submission, required errors, and restoration of saved values. Prefer the native interaction unless a complete tested custom pattern is genuinely required.
  6. Rescan and inspect translated, compact, and dynamically added form instances. A title-only fallback can clear a name check but still leave users without reliable visible guidance.

What the fix can break

Changing IDs or introducing duplicate labels can affect scripts and submission flows. Keep the association repair separate from unneeded application changes.

A styled replacement can lose native keyboard behaviour, touch support, or high-contrast compatibility. Test its full interaction before treating it as an equivalent fix.

Do not add role="presentation" to an active select to suppress semantics. The goal is a correctly named choice control, not removal of its useful identity.

Questions

Why is Choose a country not enough?

It is an option value, not the persistent question. Changing the selection should not remove the field's only explanation.

Is title a robust visible label?

It can contribute to a naming fallback, but does not reliably provide persistent guidance across input methods. Prefer an associated visible label where practical.

Does the native-select rule cover a custom combobox?

Not as a complete equivalent check. Custom ARIA widgets have additional applicable requirements and tests.

Review form labels, button names, and the automation limits guide.

What severity does this get in the report?

High. An axe finding takes its severity from the impact axe reports for the element that failed, and the report maps critical and serious to high, moderate to medium, minor to low. This rule is declared critical in axe-core, so a failure arrives as high. That is why the panel above states a conformance level rather than a severity - for other axe rules it depends on what failed.

Standards and sources

In the report

Test this on your own site

Every scan runs a11y.axe.select-name on every page it crawls, on every plan. The finding carries this id, so a line in a report can be matched to the explanation above - and the free scan needs no account.