form-control-single-label

Form controls must not have multiple labels

automaticWCAG 3.3.2 (A)confidence: highseverity: moderateunderstandable

Checks that a form control is associated with at most one <label> (by wrapping or by label[for]).

Applies to. Applies to labelable form controls (input, excluding hidden/submit/reset/button/image; select; textarea).

Expectation. At most one <label> that can contribute to the control's accessible name is associated with it, by wrapping it, or by a <label for="..."> on its id (a label that both wraps and self-references via for counts once). Graded by whether the surplus labels actually compete for the name:

  • PASS when an override (aria-labelledby / aria-label) supersedes every native <label>: the labels then contribute nothing to the name, so they cannot be ambiguous. A visible-label-vs-name mismatch is SC 2.5.3 Label in Name's concern, not this rule's.
  • FAIL when two or more non-empty labels compete and there is no override: screen readers announce a non-deterministic subset.
  • CANTTELL when one non-empty label is joined by empty label association(s) and there is no override: the name usually resolves to the real label, but handling of the empty association is not guaranteed across user agents.

All-empty associations with no override are a missing-name case (the sibling rule below), not an ambiguity, so this rule stays silent.

Examples

pass
<label>Name <input type="text"></label>

A single wrapping label; only one labelling mechanism applies.

fail
<label for="address">Address</label>
<label for="address">Mailing address</label>
<input id="address" type="text">

Two separate `label[for]` elements both target the same control.

View source