← All criteria

Understandable · Level A · 3.3.7

Redundant Entry

Within a multi-step process, information the user already entered shouldn't have to be typed again — it should either be auto-filled or offered as a selectable option — because retyping the same thing more than once is unnecessary friction, and for some users a genuine barrier.

  • Cognitive
  • Motor
The problem, in practice — select the image to enlarge it
A two-step checkout compared with redundant re-entry versus reused information. 'Redundant entry (bad)' shows a user typing their full name, email, and phone number on step 1, then being asked to 'Enter your details again' and retyping the identical name, email, and phone number on step 2. 'No redundant entry (good)' shows the same two steps where step 2 auto-fills the previously entered name, email, and phone number as read-only fields with a lock icon and an option to 'Use different details' instead of retyping them. Four real-world examples below — online checkout, account registration, travel booking, and an application form — each contrast having to re-enter details on a later step against having those details auto-filled or offered as a selectable option.

How to recognize it

Step through a multi-step form or checkout flow and see whether it ever asks for the same piece of information twice — a shipping address entered on one step, then asked for again as a billing address on a later step with no 'same as shipping' option, no autofill, nothing carrying it forward. This is a real burden for people with cognitive disabilities or memory difficulties, who may not reliably recall exactly what they typed a few steps earlier and now have to either scroll back to check or risk a mismatch; it's also a burden for people using switch control or voice input, where every character of re-entry costs disproportionately more effort than it does for someone typing normally.

How to fix it

Carry previously entered information forward automatically, or offer it as a one-click selectable option ('Same as shipping address') rather than requiring it to be typed again. A few things are legitimately exempt: re-entry that's essential to the task itself (a memory-training exercise where re-entry is the point), a security-sensitive re-entry like confirming a password, or a case where the previously entered value may no longer be valid and genuinely needs to be re-verified.

Example

Avoid

<!-- step 2: billing address form, fully blank, despite matching shipping address entered in step 1 -->
<input name="billing-address">

Prefer

<label><input type="checkbox" onchange="copyShippingToBilling(this.checked)"> Billing address same as shipping</label>
<input name="billing-address" value="">

Resources