Accy

The placeholder is doing the label’s job

WCAG 3.3.2 (A) · EN 301 549 9.3.3.2

Some fields get their only accessible name from the placeholder attribute.

Why it matters

Placeholder text vanishes the moment someone starts typing. Anyone who gets distracted halfway through a form can no longer tell what belonged in that field, and anyone with memory or attention difficulties is left with no reference at all. Its contrast is usually very low by design, too.

How to fix it

Add a visible <label>. You can keep the placeholder as a format hint ("e.g. SW1A 1AA"), but never as a substitute for the field name.

As it is
<input type="text" name="postcode" placeholder="Postcode">
As it should be
<label for="postcode">Postcode</label>
<input type="text" id="postcode" name="postcode"
       placeholder="e.g. SW1A 1AA" autocomplete="postal-code">

Related

Does your shop have this failure?

Check for free, along with the other 54 rules. No sign-up.

No sign-up. We scan one public page and store nothing about you.