Requires that information already entered in a process is auto-populated or selectable, instead of being typed again, with limited exceptions.
Typing the same address twice in one checkout is a small annoyance for some people and a real barrier for others. People with memory or cognitive disabilities may not recall what they entered. People who type slowly, use switches or voice input, spend extra effort on every re-entry.
This criterion, new in WCAG 2.2, requires that information previously entered by or provided to the user, and required again in the same process, is either auto-populated or available for the user to select, except where re-entering is essential, needed for security, or the earlier information is no longer valid.
People with cognitive disabilities and short-term memory difficulties, who have less stress and fewer mistakes. People who have trouble forming or recalling memories. People with mobility impairments, including those using switch control or voice input, who need less text entry.
The European Accessibility Act (Directive (EU) 2019/882) applies to in-scope products and services placed on the market after 28 June 2025. Recital 47 names four principles for websites and mobile applications: perceivable, operable, understandable and robust. Less re-entry is part of "understandable".
The technical counterpart is the standard EN 301 549, which incorporates WCAG 3.3.7 by reference and turns it into separate clauses for each kind of ICT.
| Clause | Type of ICT | What it requires |
|---|---|---|
| 9.3.3.7 | Web pages | Web content must satisfy WCAG success criterion 3.3.7. |
Because this criterion is new in WCAG 2.2, it is not part of EN 301 549 V3.2.1. Check clauses 10 and 11 of V4.1.1 for the rows that apply to documents and software. Clause numbers follow the "9. + WCAG number" pattern of EN 301 549. In V3.2.1 the software clause is divided into further subclauses for open and closed functionality. Check the exact numbers in the standard when you cite them.
Standard version: Criterion 3.3.7 is new in WCAG 2.2, so it is not part of EN 301 549 V3.2.1, which is based on WCAG 2.1. It appears in EN 301 549 V4.1.1 (September 2026), the first version prepared specifically for the EAA. V4.1.1 has not yet been cited in the Official Journal of the European Union, so for now it is best treated as a voluntary technical route to the EAA's requirements. Once cited, it will give a presumption of conformity.
A note on EAA scope: Article 2(4) of the Directive excludes certain content from the requirements, for example office file formats published before 28 June 2025 and archives that are not updated after that date. Content you publish or change after that date is not covered by these exclusions.
Directive (EU) 2019/882, EUR-Lex, opens in a new tab
Let users reuse the billing address for delivery with one action.
<h2>Delivery address</h2>
<input name="street"> <input name="city"> <!-- asks again --><label><input type="checkbox" id="same"> Delivery address is the same as billing</label>
<script>
same.addEventListener("change", () => { if (same.checked) copyBillingToDelivery(); });
</script>Carry data from an earlier step into the later form.
<!-- Step 2 asks for the company name entered in step 1 -->
<input name="company"><input name="company" value="{{ saved.company }}">Let the user pick previously entered information instead of typing it.
<input name="shipTo" placeholder="Type the address again"><label for="addr">Deliver to</label>
<select id="addr">
<option>12 Example Street, Istanbul (billing)</option>
<option>Enter a new address</option>
</select>Do not lose entries when users move between steps.
nextBtn.addEventListener("click", () => location.href = "/step2"); // step 1 data lostnextBtn.addEventListener("click", () => {
sessionStorage.setItem("checkout", JSON.stringify(readForm()));
location.href = "/step2";
});Asking for the same email address again is redundant entry unless an exception applies. Ask once and show it for correction.
<label>Email <input name="email"></label>
<label>Confirm email <input name="email2"></label><label>Email <input name="email" type="email"></label>
<!-- Ask once. Offer a way to correct it later -->Confirming a newly created password that is not displayed is allowed. A "show password" option can make confirmation unnecessary.
<input type="password" name="pw"> <!-- and no way to check it --><label>New password <input type="password" name="pw" id="pw"></label>
<label>Confirm password <input type="password" name="pw2"></label>
<!-- Re-entry for a hidden new password is allowed -->In an app, carry data between screens of the same flow and let users select it rather than retype it.
import SwiftUI
struct CheckoutView: View {
@State private var billing = "12 Example Street, Istanbul"
@State private var sameAsBilling = true
@State private var delivery = ""
var body: some View {
Form {
TextField("Billing address", text: $billing)
// The user selects "same as billing" instead of typing it again
Toggle("Delivery address is the same as billing", isOn: $sameAsBilling)
if !sameAsBilling {
TextField("Delivery address", text: $delivery)
}
}
}
}import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.material3.*
import androidx.compose.runtime.*
@Composable
fun Checkout() {
var billing by remember { mutableStateOf("12 Example Street, Istanbul") }
var same by remember { mutableStateOf(true) }
var delivery by remember { mutableStateOf("") }
Column {
OutlinedTextField(billing, { billing = it }, label = { Text("Billing address") })
// The user selects "same as billing" instead of typing it again
Row {
Checkbox(checked = same, onCheckedChange = { same = it })
Text("Delivery address is the same as billing")
}
if (!same) {
OutlinedTextField(delivery, { delivery = it }, label = { Text("Delivery address") })
}
}
}