# HTML Forms Checklist

Use this checklist for forms that are understandable, usable and safer to ship.

- The form has a clear purpose.
- `action` and `method` are intentionally chosen.
- Every input has a visible `label`.
- Related fields are grouped with `fieldset` and `legend` when needed.
- Input types match the expected data: `email`, `tel`, `date`, `number`, etc.
- Autocomplete tokens are used where they help the user.
- Required fields are clearly communicated.
- Error messages are specific and linked to the relevant field when possible.
- Placeholder text is not used as the only label.
- Client-side validation improves UX only; backend validation still protects the system.
- Form submissions are protected against spam and abuse in production.
- Success and failure states are both designed.
