Avoid Requiring Redundant Entry of Information
Information previously entered by or provided to the user that is required to be entered again in the same process must be either:
- Auto-populated, or
- Available for the user to select.
- Exception: Re-entering information is essential (e.g., security checks like re-entering password), information is no longer valid, or previously entered information should not be persisted (e.g., credit card details after transaction).
Why It Matters
Requiring users to re-enter the same information multiple times within a single process (like typing their address on both shipping and billing forms) increases cognitive load and the chance of errors, and is burdensome for users with motor impairments. Auto-populating or allowing selection streamlines the process.
Fixing the Issue
Identify steps in a process where the same information might be requested again.
- Auto-populate: If the user entered information earlier in the same session/process (e.g., shipping address), automatically fill in the corresponding fields later (e.g., billing address) if appropriate.
- Allow Selection: Provide a mechanism, like a checkbox (“Billing address same as shipping”), that allows the user to select previously entered information instead of retyping it.
- Use autocomplete attributes (see WCAG 1.3.5) correctly to help browsers auto-fill common information.
Good Code Example
Using a checkbox to copy shipping address to billing address:
-
<form> <fieldset id="shipping-address"> <legend>Shipping Address</legend> <label for="ship-street">Street:</label> <input type="text" id="ship-street" name="ship_street" autocomplete="shipping street-address"><br> <label for="ship-city">City:</label> <input type="text" id="ship-city" name="ship_city" autocomplete="shipping locality"><br> </fieldset> <fieldset id="billing-address"> <legend>Billing Address</legend> <label> <input type="checkbox" id="same-as-shipping" onchange="copyAddress()"> Same as Shipping Address </label><br> <label for="bill-street">Street:</label> <input type="text" id="bill-street" name="bill_street" autocomplete="billing street-address"><br> <label for="bill-city">City:</label> <input type="text" id="bill-city" name="bill_city" autocomplete="billing locality"><br> </fieldset> </form> <script> function copyAddress() { const same = document.getElementById('same-as-shipping').checked; const shipStreet = document.getElementById('ship-street').value; const shipCity = document.getElementById('ship-city').value; // ... get other shipping values ... document.getElementById('bill-street').value = same ? shipStreet : ''; document.getElementById('bill-city').value = same ? shipCity : ''; // ... set other billing values ... // Optionally disable billing fields when checked document.getElementById('bill-street').disabled = same; document.getElementById('bill-city').disabled = same; } </script>
-
Bad Code Example
Requiring address entry twice without assistance:
-
<form> <fieldset id="shipping-address"> <legend>Shipping Address</legend> <label>Street:</label> <input type="text" name="ship_street"><br> <label>City:</label> <input type="text" name="ship_city"><br> </fieldset> <fieldset id="billing-address"> <legend>Billing Address</legend> <label>Street:</label> <input type="text" name="bill_street"><br> <label>City:</label> <input type="text" name="bill_city"><br> </fieldset> </form>
Search Ultimate Guide

Free eBook
Integrating Accessibility Compliance Into Your Budget
A Practical Guide for Healthcare Leaders Navigating the New HHS Ruling
Need Help with Compliance?
Our team is here to guide you through the process of meeting accessibility standards. Contact us today to get started.