01 — Foundation

MFA should feel routine, not hostile

Second-factor checks protect accounts — the UI should explain steps clearly and recover calmly from mistakes.

Multi-factor verification — authenticator apps, SMS where still used, security keys, backup codes — sits on the critical path to access. Confusing copy, missing recovery options, and inaccessible code fields block legitimate users and fuel support load.

02 — Input

Code entry and labels

One clear field or segmented inputs — both need labels and error handling.

  • label the field — “Authentication code”, not six mystery boxes
  • allow paste — users copy from authenticator apps
  • specific errors — “Code expired” vs “Incorrect code”
  • autocomplete attributes where standards support them — see Accessible Forms
<label for="mfa-code">Authentication code</label>
<input id="mfa-code" name="otp" inputmode="numeric" autocomplete="one-time-code" />

03 — Recovery

Backup codes and alternatives

When the primary factor fails, users need a documented path — not a dead end.

  • link to backup codes, another device, or support — proportionate to risk
  • rate-limit messaging that does not blame the user for typos
  • enrollment flow explains what MFA is and how to store backup codes

04 — Review

Before you approve

A short checklist for MFA UI in code review.

  • labelled inputs; paste works; errors are specific
  • recovery options visible; pairs with Account Recovery where relevant
  • keyboard and screen reader paths tested on real devices