| Placeholder text as the only label | Vanishes on focus; fails WCAG and recall | Persistent label above field |
| Validating on first keystroke | "Invalid email" after one typed character | Validate on blur; live-revalidate only after first error |
| Error: "Invalid input" | Describes the machine's problem, not the fix | Problem + fix: "Postcode must be 5 digits" |
| Clearing the form on error | Punishes the user for the rejection | Every value survives every error, including 500s |
| Back button loses wizard data | Forced re-entry; most abandon instead | Persist per-step on every transition |
| Asterisk on every required field | Legend tax, visual noise | Mark optional fields only |
| Two-column field layout | Skipped fields, broken order (Baymard) | Single column; inline-pair only coupled shorts |
| Disabled submit with no explanation | User can't discover what's missing | Enabled submit → validate → error summary |
| "Step 3 of 12," unlabeled dots | Feels endless; no sense of what's left | Fewer, labeled steps + upfront time estimate |
| Dropdown for 2–4 options | Hides options that fit on screen | Radio group / segmented control |
| Rejecting paste in password/OTP fields | Blocks password managers and autofill | Always allow paste |
| Strict input formats ("no spaces") | Rejects values you could normalize | Normalize on your side |
| Asking for data you don't use | Every field costs conversion | Cut it or defer to progressive profiling |
| Reset/Clear button beside Submit | Catastrophic misclick, no legitimate use | Delete it |
| CAPTCHA before any typing | Blocks the user at peak intent | Invisible/risk-based challenge, on suspicion only |
| Auto-jumping focus between split inputs | Backspace breaks; corrections become a fight | Single masked field, or split inputs with back-delete handled |
| Password max length <64 or paste blocked | Defeats password managers, weakens security | Long max, paste always allowed |
| Home-country validation applied globally | Rejects valid foreign postcodes/phones | Validate per selected country, or loosely |
| Critical instructions hidden in tooltips | Mobile users never see them | Visible hint text below the label |
| "Please select" default that submits | Slips through as a value | Validate selection; or pre-select the true common case |
| Unsaved-changes prompt on an unchanged form | Cried-wolf warnings get dismissed | Dirty-check before warning |
| Success page with no next step | Dead end at peak engagement | Confirmation + reference + single next action |