component · forms
Helper text
also called hint text (govuk), field description, assistive text (material), supporting text (material)
The short line under a field that explains the format or constraint before anything goes wrong.
Helper text is preventative. It sits under the control from the moment the form loads, it says the one thing a person needs in order to fill the field correctly (“8 characters or more”, “we only use this for delivery updates”), and it is still there while they type. Nothing has happened yet, which is what separates it from every other line of small print near a field.
The distinction that gets lost is helper text against an error message. An error is a reaction: it appears after a value has been judged, it names what is wrong, and it should go away when the value is fixed. Helper text is a constant. The tempting shortcut, swapping the hint out for the error and back again, costs the reader the rule at the exact moment they need it, so the two should be able to coexist, with the error taking the emphasis and the hint keeping its place.
It is also not a tooltip. A hint that only appears when a small icon is hovered or pressed is a hint nobody reads on a phone and nobody hears at all unless the control is wired to announce it. If the guidance is short enough to be a hint, print it; if it is long enough to need hiding, it is documentation and belongs somewhere a person can go back to.
Wire it up rather than merely placing it. The field’s control should point at the
line with aria-describedby, so the guidance is read out with the label instead
of being discovered afterwards by a reader moving through the form. Keep it to
one line: helper text that wraps to three has stopped being a hint and started
competing with the label.
Which word?
| If you want | say |
|---|---|
| guidance under a field, not an error | helper text |
| telling one field that its value failed | error message |
| extra detail that should follow the name, not replace it | accessible description |
| naming why a placeholder-only field is broken | placeholder as label |
| deciding how to mark required versus optional fields | required field indicator |
| showing how much of a length limit is used | character counter |
Related
Part of: Text field
See also: Password reveal toggle
Implementations
Specimens illustrate the concept; for production use, start here.
| base-ui | Field.Description |