What we check, and what we do about it
Every scan runs automated WCAG 2.1 AA checks in a browser, plus our own detectors for the things a rule engine misses. Each finding is fixed in the theme or the catalog, or routed to whoever owns it.
By family
Alt text lives in two places. When the theme code drops it, one patch to the Liquid covers every image through that template. When the image record itself is blank, the fix is written to the product, collection or file in Shopify, so it follows the image into every theme and channel.
- An image has no text descriptionThe alt attribute is written into the Liquid that renders it. For catalog images, AI drafts a description from the photo and saves it to the product record after you approve.WCAG 1.1.1
- A theme image with no product record behind itA description is drafted from the image file itself and written into the Liquid with the words you approve. When the image is the only thing inside a link or button, the description is required.WCAG 1.1.1
- An image inside a hidden pop-up has no descriptionSame fix, found by our own detector, because rule engines skip hidden content.WCAG 1.1.1
- Alt text just repeats the product titleRebinds the alt to the image’s own description instead of the name of the thing.WCAG 1.1.1
- An image file is missing or brokenReported with the file and the template that asks for it, for you to replace.WCAG 1.1.1
The icon-only cart, search, close and menu controls every theme ships, and the form fields behind them.
- A button or link has nothing to announceAn accessible name is added in the theme, with guards against doubling a name that already exists.WCAG 4.1.2
- Social icons with nothing to announceEvery icon in the block is named for the network it links to, in one patch.WCAG 4.1.2
- A form field has no labelA label is associated with the input, or a visually hidden one is added.WCAG 3.3.2
- A select menu or search box has no nameNamed from the surrounding text or the field’s purpose.WCAG 4.1.2
- Controls inside hidden modals with no nameSame fixes, through the modal detector.WCAG 4.1.2
Color is a brand decision, so the fix starts from yours. We suggest the closest shade of your own color that passes, you keep it or pick another, and that color is written into the theme.
- Text is hard to read against its backgroundShown with the measured and required ratios and a suggested shade. The color you choose goes on the stylesheet class when one class sets both colors, otherwise on the element. Always waits for you.WCAG 1.4.3
- Links told apart by color aloneAn underline or a change of weight is drafted in the theme for your approval.WCAG 1.4.1
Pages written in the Shopify editor carry their own structure in the page body. The first fix of this kind asks for permission to edit pages.
- A list nested in the wrong place inside a pageThe stray list is moved inside the item before it and the page body is saved back to Shopify. The previous body is kept, so it reverts in one click.WCAG 1.3.1
- An empty heading inside a pageRemoved from the page body, with the same record and revert.WCAG 1.3.1
The three lines at the top of every page that screen readers depend on.
- The page language is missing or wrongSet on the html element from your store locale by a deterministic fixer.WCAG 3.1.1
- The page has no titleA title is added from the page or product name.WCAG 2.4.2
- Pinch-to-zoom is blockedThe viewport tag is corrected.WCAG 1.4.4
The outline a screen reader user navigates by.
- A page with no main headingThe visible title is promoted to the main heading, or a hidden one is added for screen readers, template by template.WCAG 1.3.1
- Headings skip levelsCorrected in the template. Structural, so it waits for your OK.WCAG 1.3.1
- Empty or duplicated headingsRemoved or given their real text.WCAG 1.3.1
- A labeled section without a headingA heading is added that matches the section’s label.WCAG 1.3.1
Regions, roles and the skip link that let keyboard users move through a page instead of across it.
- Main, navigation and footer regions are missingWrapped in semantic regions by a deterministic fixer.WCAG 1.3.1
- No skip-to-content linkInserted before the header, pointed at your main landmark.WCAG 2.4.1
- Several landmarks of the same kind with no distinguishing nameEach one is named so they can be told apart.WCAG 1.3.1
- Invalid roles or unnamed ARIA widgetsThe role is corrected or the widget is named.WCAG 4.1.2
- Focusable elements hidden from assistive techTaken out of the tab order or made visible to it.WCAG 4.1.2
What a link says when it is read on its own.
- Link text like “click here”Descriptive text or a label pulled from the destination.WCAG 2.4.4
- An empty link that only wraps an icon or imageNamed from the image or the destination.WCAG 2.4.4
Things that are broken before accessibility even comes up.
- Liquid error output printed on the pageRepaired for the common paginate-filter mistake, and an image tag fed an empty setting is wrapped in a guard. A missing asset is reported with the file that asks for it.
Found in the rendered page and attributed to whoever put it there.
- An app widget with issues of its ownAttributed to the app and routed to its settings, with the finding attached.WCAG various
- Video or audio without captions or a transcriptFlagged with the file. Captions and transcripts stay yours to supply.WCAG 1.2.x
The rest of the axe-core ruleset, around ninety checks, runs on every scanned page in the real browser.
- Any other failing ruleFindings outside the families above get a generic AI patch when the source is a theme file, or are routed to the right place when it is content or an app.WCAG AA
What comes next
The criteria at the top of our list, in the order we expect to ship them. The full roadmap covers the rest of WCAG 2.1 AA, including the checks where a person makes the call, like whether a heading says what its section is about.
- Names for icon-only controls, bound to existing dataCart, search, menu and close buttons take their names from the theme's own labels, and product card links from the product title. A template that omits the name and a content field left empty are reported as two separate items, the way alt text is today.WCAG 4.1.2
- Heading levels corrected by arithmeticSkipped levels and empty headings are fixed by rewriting the level in the section file and keeping the text.WCAG 1.3.1
- Repeated link text given the name of its targetShop now and Read more links are named after the product or post they lead to, in the Liquid, so a list of links reads as a list of things.WCAG 2.4.4
- Cart and filter updates announcedAdded to cart, quantity and filter changes are announced through a live region in the theme's cart and collection sections.WCAG 4.1.3
- Autocomplete on address, email and phone fieldsThe right autocomplete tokens are added to contact, newsletter and account forms so browsers and assistive tools can fill them.WCAG 1.3.5
- Spoken names that match the words on the controlA button whose accessible name differs from its visible label is renamed to include the visible words, so voice control works.WCAG 2.5.3
- Menus that submit the moment they changeCountry, currency and sort menus that reload the page on change get a button, or an announcement of what happened.WCAG 3.2.2