3.3.7 Redundant Entry
WCAG 2.2 · 3.3.7 A Understandable
What it requires
Within a single process — a multi-step form, a checkout, a wizard — any information the user has already entered or has already been supplied to them must not be asked for again. The information must either be auto-populated or made available for the user to select rather than re-type.
There are three exceptions where re-entry is allowed: when re-entering the information is essential (for example, a password confirmation or a memory test), when it is needed for security of the content, or when the previously entered information is no longer valid. "Same process" means one continuous activity, not data carried across separate, unrelated sessions.
- People with cognitive disabilities — short-term and working-memory limits make recalling and re-typing earlier answers difficult and error-prone.
- People with motor disabilities — every redundant field is extra, tiring keystrokes or switch actions.
- Screen reader and screen magnifier users — re-entering data already given adds significant navigation and time cost.
- Everyone — redundant entry increases abandonment and transcription errors across the board.
How to detect it
| Check | What to look for |
|---|---|
| Manual walkthrough | Complete a multi-step process. Is any field asking for data you already supplied earlier in the same flow (e.g. "billing address" then "shipping address")? |
| Auto-populate / select | Where repeated data is genuinely needed, is it pre-filled or offered as a "same as above" checkbox or selectable option? |
| Keyboard & screen reader | Confirm any "copy from previous" control is reachable and operable by keyboard and exposes its state to assistive technology. |
| Exceptions | If re-entry exists, verify it is justified (essential, security, or stale data) — password confirmation is fine; re-typing your email is not. |
| Automated tools | Tools such as axe cannot detect this — it requires human review of the process flow and intent. |
How to fix it
- Map the whole process and list every field; flag any value requested more than once.
- Carry forward earlier answers automatically, pre-filling later fields.
- Where a value might repeat, offer a "same as…" control or a selectable list instead of a blank field.
- Keep any genuinely required re-entry only where an exception applies, and make it clear why (e.g. confirm password).
- Ensure the copy/select control is keyboard operable and its state is announced.
<fieldset>
<legend>Shipping address</legend>
<label>
<input type="checkbox" name="same-as-billing" checked>
Same as billing address
</label>
<!-- when checked, shipping fields are auto-populated from billing -->
</fieldset>
Copy-paste tests
Automated coverage
There is no fully automated axe-core rule that can confirm WCAG 2.2 3.3.7 Redundant Entry, because tools cannot know whether two fields ask for the same information. This criterion needs manual review using the console check and steps below.
Run this in the browser console
// Read-only: surfaces fields whose labels repeat, so you can check for redundant entry.
const fields = [...document.querySelectorAll('input, select, textarea')];
const seen = {};
fields.forEach(el => {
const label = (el.labels?.[0]?.textContent || el.getAttribute('aria-label') || el.name || '').trim().toLowerCase();
if (!label) return;
(seen[label] ||= []).push(el);
});
const dupes = Object.entries(seen).filter(([, els]) => els.length > 1);
console.table(dupes.map(([label, els]) => ({ label, count: els.length })));
dupes.forEach(([, els]) => els.forEach(el => (el.style.outline = '2px solid orange')));
What to check manually: for any field the user already supplied earlier in the same process, confirm it is auto-populated or selectable rather than re-typed; and verify that fields with similar labels genuinely ask for different information (e.g. billing vs shipping that legitimately differ).
Related
- All WCAG 2.2 success criteria
- Learn catalog
- Accessible forms — labels, errors, input purpose, and avoiding redundant entry.