Accessible forms and checkout: labels, errors and autocomplete
An accessible form has a visible label tied to every field in the code, tells people before they start what format and which fields are required, explains each error in words next to the field, and lets the browser fill in personal details through the autocomplete attribute (WCAG 1.3.5). Checkout adds three more needs: do not make people type the same address twice, let them review before paying, and announce changes such as an updated total.4
Forms are where accessibility problems cost sales directly. WebAIM's 2026 scan of the top million home pages found missing form input labels on 51% of them.9 A customer who cannot tell which field is which, or cannot find out why a payment form was rejected, leaves.
The WCAG criteria that apply to forms
| Criterion | Level | What it means for a form |
|---|---|---|
| 1.3.1 Info and Relationships | A | Labels and groups are connected to their fields in the code, not only placed near them. |
| 1.3.5 Identify Input Purpose | AA | Fields that ask about the customer declare their purpose, such as name, email or postal code. |
| 3.3.1 Error Identification | A | The field in error is identified and the error is described in text. |
| 3.3.2 Labels or Instructions | A | Labels or instructions are provided where input is needed. |
| 3.3.3 Error Suggestion | AA | Where you know how to fix an error, say so. |
| 3.3.4 Error Prevention (Legal, Financial, Data) | AA | Orders are reversible, checked, or confirmed before they are final. |
| 3.3.7 Redundant Entry | A | Information already given in the same process is filled in or available to select. |
| 3.3.8 Accessible Authentication (Minimum) | AA | Logging in does not depend on remembering or transcribing, without help such as password managers and paste. |
| 4.1.3 Status Messages | AA | Messages such as "Added to cart" are announced without moving focus. |
The levels and wording are from WCAG 2.2.4
Labels: visible, and connected in the code
W3C's forms tutorial says to identify each control with a label element, and that the label's for attribute must exactly match the field's id.2 That connection is what makes a screen reader announce "Email" when focus lands in the field, and it makes the label clickable, which helps anyone with limited dexterity.1
- Placeholder text is not a label. It disappears as soon as someone types and is often too faint to read. Keep a visible label above the field.
- Hidden labels must stay in the code. If a design really has no room for a visible label, such as a search box next to a search button, hide the label with a visually hidden CSS class. W3C warns that
display: noneorvisibility: hiddenhides it from screen readers too.2 - Avoid the title attribute as a label. W3C calls it less reliable and not recommended.2
- Group related choices. Radio buttons for delivery options or a set of checkboxes belong in a
fieldsetwith alegend, so a screen reader announces "Delivery method" before "Standard" and "Express".1
Autocomplete: WCAG 1.3.5 in practice
Criterion 1.3.5 asks that the purpose of each field collecting information about the user can be programmatically determined. The sufficient technique in HTML is the autocomplete attribute with the standard values.5 W3C explains why: browsers can fill in details for people with memory or language difficulties, people with motor impairments type less, and assistive technology can add familiar icons to fields.5
The values come from the HTML standard. The ones a checkout needs most are:6
name, orgiven-nameandfamily-nameemailandtelstreet-address, oraddress-line1andaddress-line2address-level2(town or city),address-level1(state or county),postal-code,countrycc-name,cc-number,cc-exp,cc-cscfor card fieldsusername,current-password,new-passwordandone-time-codefor accounts
Put shipping or billing in front to tell the two addresses apart, for example autocomplete="shipping postal-code".6 W3C names incorrect autocomplete values as a failure of 1.3.5, so a wrong value is worse than leaving it out.5 The criterion only covers information about the customer; a gift message or a coupon code field does not need a value.5
Errors: say what is wrong, where, and how to fix it
W3C's guidance on form notifications combines several techniques:3
- An error summary above the form after a failed submit, with a heading, the number of errors, and a link to each field in error.
- A message next to each field, connected to it with
aria-describedbyso a screen reader reads it with the label. - Focus moved to the summary or the first field with an error, so a keyboard or screen reader user is not left at the submit button wondering what happened.
- The page title updated with the error count where the page reloads, because it is the first thing a screen reader announces.
Write the message as an instruction: "Enter a postcode in the format SW1A 1AA" is useful; "Invalid input" is not, and 3.3.3 asks for the suggestion where you know it.4 Do not show errors only with a red border. W3C lists marking required or error fields by colour alone as a failure of 1.4.1; add text or an icon.7
Checkout-specific checks
- "Same as delivery address." Offer it, checked by default where that makes sense. That is the everyday way to meet 3.3.7 Redundant Entry.4
- A review step or a clear order summary before payment, so an order is checked or confirmed (3.3.4).4
- Announce changes. When a discount code is applied, shipping is recalculated, or an item is added to the cart, the message should reach screen reader users without moving focus. W3C's examples for 4.1.3 include a cart count updating after adding an item.8
- Allow paste and password managers in login, password and one-time code fields (3.3.8).4
- No time limit you cannot extend. W3C's forms tutorial says that if a time limit is needed, people should be able to turn it off or extend it.1
Shopify: what you control and what you do not
Shopify's checkout is built and maintained by Shopify. Its March 2026 accessibility conformance report covers checkout against WCAG 2.0, 2.1 and 2.2 A and AA, notes that remediation of some issues is ongoing, and states that merchants are responsible for assessing their own online store.10 What you control in checkout is mainly style: colours for accents, buttons, backgrounds and errors. Shopify's guidance there is to choose high-contrast colours and to keep field text readable, especially with transparent fields.11
Everything before checkout is your theme: newsletter sign-ups, contact forms, product option pickers, gift card fields, the cart and the search box. Shopify's theme guidance asks for a label linked with for on every field, the required and autocomplete attributes, errors linked with aria-describedby, and focus moved to feedback.13 Check any app that adds a form, such as reviews, back-in-stock alerts or a wholesale order form, because each brings its own markup.
WooCommerce: watch the theme and checkout plugins
WooCommerce says its checkout labels each field, marks required fields, shows errors visually and in code next to their fields, and announces updates such as cart totals through live regions. It also warns that theme styles can override these defaults, and that themes and plugins that change checkout can break accessibility, so check labels, required indicators and errors after any change.12 Checkout field editor plugins are the usual suspect: test a checkout after installing one.
Test it in five minutes
- Click each label. Focus should jump into its field.
- Fill the form with your browser's autofill. Every personal field should fill correctly.
- Submit it empty. Read the errors: do they say which field and how to fix it, in text?
- Do the whole thing by keyboard, then with a screen reader, listening to what each field announces.
- Run an automated check. axe-core, the engine Jralo uses, has rules for fields without a label and for invalid autocomplete values.14 Jralo's free check runs them on the pages it opens and also tells you which countries' accessibility laws are likely relevant to your store. It never signs in, adds to a cart or places an order, so the steps above still matter; see why automated testing finds some problems but not all.
Questions people ask
Is placeholder text enough as a label?
No. Placeholder text disappears when someone starts typing, so they lose the instruction, and it is often too pale to read. Use a visible label element connected to the field with for and id. Placeholder text can add an example format, and WCAG contrast rules still apply to it.
Can I make Shopify's checkout more accessible myself?
Mostly no, because Shopify builds and maintains checkout and publishes its own accessibility conformance report for it. You control its colours, so choose high-contrast ones. You do control your theme's cart, contact, newsletter and product option forms, and any forms added by apps.
Do I need autocomplete on every field?
Only on fields that collect information about the customer and match a purpose in WCAG's list, such as name, email, telephone, address and card details. Fields like a coupon code or a gift message are out of scope. A wrong value is a failure, so use the exact names from the HTML standard.
Check your site now
Jralo's free check tests your homepage and up to five pages for accessibility (WCAG 2.2 A and AA) and website QA problems, and tells you which countries' accessibility laws are likely relevant to you. No sign-up.
Run the free checkSources
Every number and legal statement in this post links to one of these sources, read on 13 October 2026.
- W3C WAI: Forms Tutorial
- W3C WAI: Forms Tutorial, Labeling Controls
- W3C WAI: Forms Tutorial, User Notifications
- W3C: Web Content Accessibility Guidelines (WCAG) 2.2
- W3C WAI: Understanding Success Criterion 1.3.5 Identify Input Purpose
- WHATWG HTML Standard: Autofill
- W3C WAI: Understanding Success Criterion 1.4.1 Use of Color
- W3C WAI: Understanding Success Criterion 4.1.3 Status Messages
- WebAIM: The WebAIM Million, 2026 report
- Shopify: Accessibility Conformance Report, Shopify Checkout (March 2026)
- Shopify Help Center: Customizing the style of your checkout
- WooCommerce: Accessibility features in the WooCommerce plugin
- Shopify: Accessibility best practices for Shopify themes
- Deque: axe-core rule descriptions
More questions
- Why does heading structure matter for screen reader users?
- Visible focus: why removing outlines hurts, and what WCAG 2.2 asks
- Accessible navigation and mega menus
- Accessible product image galleries, sliders and carousels
- How to make a Shopify cart drawer accessible
- Accessible Shopify variant pickers and colour swatches
- The European Accessibility Act: a step-by-step plan for small online sellers
- ADA Title III and websites in plain English
- What to put in an accessibility statement
- How to make a WooCommerce store accessible
- How to fix accessibility issues without breaking your theme
- How to make a Shopify theme accessible: settings, apps and what to check
- Captions, transcripts and audio description for product and marketing video
- What a screen reader user hears on your product page, and how to fix it
- How to test your website with only a keyboard in 10 minutes
- Colour contrast explained: what WCAG asks and how to fix brand colours
- Why automated accessibility testing finds some problems but not all
- How do I write alt text that actually helps?
- What did WCAG 2.2 add to WCAG 2.1?
- How can I prove my website is monitored for accessibility?
- Does the European Accessibility Act apply to my online store?
- Do accessibility widgets make a website ADA compliant?
- Got an ADA website demand letter? What to do first
- How do I check if my website is accessible? A 15-minute method
- Website accessibility laws by country (2026)