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.
<input type="text" name="postcode" placeholder="Postcode"><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.