Rule library Forms

Form elements must have labels

labelWCAG 2.0 A

Ensure every form element has a label

Who this affects

Form fields rely on placeholder text only. Placeholders disappear on typing and are not announced as labels, so users lose track of what a field is for.

How to fix it

Add a <label for="…"> bound to each input. Keep the placeholder as a hint, not as the label.

Effort Low · ~10 min per field

Before and after

Fails

<input type="email" placeholder="Email address">

Passes

<label for="email">Email address</label>
<input type="email" id="email" name="email"
       autocomplete="email">

Where this sits in the standard

WCAG success criterionLevelEN 301 549 clause
4.1.2 Name, Role, ValueA301-549, 9.4.1.2

EN 301 549 clause 9 applies these criteria to web content. The published version referenced by the European Accessibility Act is V3.2.1, which incorporates WCAG 2.1 level A and AA. More on the standard.

How to check it by hand

Click each field's visible label. If focus does not move into the field, the label is not bound to it. Then tab through the form with a screen reader running and confirm every field announces its own purpose, not just its type.

Automated testing settles roughly a third of the WCAG success criteria. This rule is one an automated tool detects reliably — but a clean automated result is not proof of conformance.

Reference

Deque's technical write-up for this rule: label

See whether your site trips this rule

Paste a URL. We open it in a real browser, dismiss the cookie wall and run the full EN 301 549 rule set. No account, no card.

Run a free scan All rules