A 'placeholder' is a pre-fill hint, not a 'label'. The moment you type a value, the browser erases it — hand it the label's job and users forget what the field was for the instant they fill it in.
Fine for a single short field, but it breaks down once a form has several fields, someone scrolls back up, or autofill populates values silently. Screen readers also don't treat placeholders as reliably as real labels.
The demo uses two real input elements. Fill in the same value: the ✕ field's hint disappears entirely, while the ✓ field keeps its label above, so context survives.
When to use
A single short search box can get away with a placeholder alone, but any form with 2+ fields needs real labels.