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 criterion | Level | EN 301 549 clause |
|---|---|---|
| 4.1.2 Name, Role, Value | A | 301-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.