WCAGdesk
axe-core: label · WCAG 4.1.2 Name, Role, Value · Level A

How to fix the “label” accessibility issue

The axe-core label rule fails when a form <input>, <select> or <textarea> has no associated label. Screen-reader users then reach a field they cannot identify. WCAG 2.2 (4.1.2 / 3.3.2, Level A) requires every control to have a name.

What axe-core checks

axe-core fails any form control with no <label> linked via for/id, no wrapping label, and no aria-label/aria-labelledby. A placeholder alone is not a label.

Which standard this maps to

WCAG 2.24.1.2 Name, Role, Value (Level A)
EN 301 5499.4.1.2
BFSG / EAABFSG § 12 via EN 301 549 · EAA Annex I
CategoryForms & Labels

Why it matters

A checkout with unlabelled fields — email, address, card — is the highest-stakes accessibility failure on a shop: the user literally cannot complete the purchase. It is Level A and trivially demonstrable, which is exactly what a BFSG complaint targets.

Common causes

  • Inputs using only placeholder as the label
  • Custom-styled fields where the visible label is a plain <div>
  • Search boxes with an icon button but no field label
  • Labels present but not linked via for/id

How to fix it

Associate a <label> with the control via matching for and id, or wrap the input in the label. Use aria-label only when a visible label is not feasible.

<!-- Fails: placeholder is not a label -->
<input type="email" placeholder="Email">

<!-- Passes -->
<label for="email">Email</label>
<input id="email" type="email">

FAQ

Is a placeholder a valid label?

No. Placeholders disappear on input and are not exposed as the accessible name. Use a real label.

Can I hide the label visually?

Yes — keep it in the DOM and hide with a visually-hidden class, or use aria-label. Do not use display:none.

Find every issue like this on your site

Run a free WCAG 2.2 AA scan — real axe-core engine, no signup. Or get a timestamped evidence report for €29.