Helper text vs. placeholder
Helper text sits under a field and stays; placeholder sits inside and vanishes when you type. Instructions belong in helper text.
See it
What it is
Two different slots that people keep confusing. Placeholder is the grey text living inside the field, and it disappears the instant someone types. Helper text (also called hint text) sits under the label or the field and stays there the whole time, wired to the input with aria-describedby so screen readers announce it.
The rule: anything the person needs while typing goes in helper text. Format rules ('use 8 or more characters'), examples ('like 2026-07-28'), and why you are asking ('we only use this for delivery updates') all belong under the field. Placeholder is for a throwaway nudge at most, and plenty of teams skip it entirely. GOV.UK dropped placeholders from its design system, and Material's guidance is the same shape: never put the label or the instructions in there.
Gotcha: placeholder is a triple accessibility trap. It vanishes exactly when you need it (mid-typing), it is usually too low contrast to pass WCAG, and grey text in a box reads as an already-filled value, so people skip the field. Using it as the label is the worst version: focus the input, start typing, and the only clue about what the field wants is gone. Also watch the collision where an error message replaces helper text, taking the format rule away right when the user got the format wrong.
Ask AI for it
Rewrite the guidance copy for this form. Move every instruction, format rule, example, and reason-for-asking out of the placeholder attribute and into persistent helper text rendered under the label, linked with aria-describedby. Keep a visible <label> on every field. Helper text: one line, under 12 words, plain language, states the requirement up front, no 'please'. Leave placeholder empty unless a short format example genuinely helps, and never repeat the label there. Make sure error messages appear alongside the helper text rather than replacing it. Output a table: field, label, helper text, placeholder (or none), error message.