Switch them on
Automated fixes are on the Enterprise plan, including during an Enterprise trial. They are rule-based: each resolver follows fixed rules, with no AI involved.
- In Settings, find Automated Fixes and switch on Enable Automated Fixes.
- If you want low-contrast text fixed too, switch on Auto-fix color contrast. It is off by default because it is the only fix that changes how your page looks.
The change reaches your site within about a minute.
How they run
- Step 1: The page loadsThe widget starts and the fixes run once over the whole page.
- Step 2: Resolvers run in orderEach resolver looks for one kind of problem and fixes what it can. The order matters: roles are cleaned up before landmarks are added, and links are named before buttons.
- Step 3: Each change is markedA fixed element gets a data-acs-fixed-by attribute naming the resolver, so you can find every change.
- Step 4: New content is fixed tooThe widget watches the page. Content added later, such as a cart drawer or the next page of results, gets the same fixes.
Every resolver
There are 22 resolvers. 21 run whenever automated fixes are on. Color contrast runs only when you switch it on.
| Resolver | What it fixes | WCAG |
|---|---|---|
| Page and document | ||
| Document | Adds lang to the html element and a title taken from the h1, og:title or host name when either is missing. | 3.1.1 A, 2.4.2 A |
| Meta viewport | Removes user-scalable=no and low maximum-scale values so people can pinch to zoom. | 1.4.4 AA |
| Duplicate id | Renames repeated ids to id-acs-2 and so on, and updates labels that pointed at them. | 4.1.1 A (WCAG 2.1) |
| Landmarks and structure | ||
| ARIA landmark | Adds main, navigation, banner and contentinfo roles to the likely regions when the page has none. | 1.3.1 A |
| Skip link target | Gives the main content the id that a broken skip link points to. | 2.4.1 A |
| Unique landmark | Gives repeated landmarks distinct names, or drops the role from unnamed duplicates. | 1.3.1 A |
| Heading | Inserts visually hidden placeholder headings where levels are skipped, such as h1 to h3. | 1.3.1 A |
| Empty heading | Takes empty headings out of the outline and adds a hidden h1 when the page has none. | 2.4.6 AA |
| Table | Adds scope to header cells and row and cell roles to div-based tables. | 1.3.1 A |
| List | Restores list semantics for lists styled with list-style: none and stray li elements. | 1.3.1 A |
| Names and labels | ||
| Image | Gives images with no alt, or a file name as alt, the text of their title or aria-label. With neither, it sets an empty alt, which marks the image as decorative. Also marks images that repeat nearby text as decorative. | 1.1.1 A |
| Link | Names links that have no text, from their icon, image or address. | 2.4.4 A |
| Accessible name | Names buttons, tabs and menu items that have no text. | 4.1.2 A |
| Frame title | Adds a title to iframes from their name or address. | 4.1.2 A |
| Form | Connects fields to their visible labels or adds a label, including search and cart forms. | 4.1.2 A |
| Clickable element | Adds a button role and keyboard focus to clickable elements that are not buttons or links. | 2.1.1 A |
| ARIA hygiene | ||
| ARIA allowed role | Removes roles the element is not allowed to have, such as a button with role=listitem. | 4.1.2 A |
| Required ARIA attribute | Adds attributes a role needs, with a safe default such as aria-checked=false. | 4.1.2 A |
| ARIA prohibited attribute | Removes aria-label from generic elements, where screen readers ignore it. | 4.1.2 A |
| ARIA cleanup | Clears aria-hidden on focusable elements and references to ids that do not exist. | 4.1.2 A |
| Autocomplete | Replaces made-up autocomplete values with off and drops tokens the spec does not know. | 1.3.5 AA |
| Opt-in | ||
| Color contrast | Shifts the lightness of low-contrast text until it reaches 4.5:1, or 3:1 for large text. Hue stays the same. Off unless you switch it on. | 1.4.3 AA |
The WCAG column names the success criterion the fix helps with. One fix rarely makes a page pass a criterion on its own. Duplicate ids fall under 4.1.1 Parsing, which WCAG 2.2 removed. It still matters for screen readers and for anyone measuring against WCAG 2.1.
Check what was fixed
Open your site, then the browser console, and run:
// How many fixes ran when the page loaded
window.__accessoraFixesReady
// Every element a resolver changed
document.querySelectorAll("[data-acs-fixed-by-image], [data-acs-fixed-by-link], [data-acs-fixed-by-heading]") Each resolver uses its own attribute, such as data-acs-fixed-by-accessible-name or data-acs-fixed-by-aria-landmark. Inspect any element to see which resolver touched it.
What they don’t do
- They don’t change your files. Your theme, templates, CMS and product data stay as they are. Search engines and tools that read your HTML without running scripts see the original.
- They don’t fix everything. Problems that need judgment stay with you: whether alt text is accurate, whether the reading order makes sense, whether an error message is clear. Run audits to find them.
- Some fixes mostly satisfy scanners. Placeholder headings fill skipped levels without real text, an image with nothing to describe it gets an empty
altthat hides it from screen readers, and a required ARIA attribute gets a safe default that may not match the control’s real state. A cleaner scan after fixes doesn’t mean the page works well with a screen reader. - They hold back where a fix could break the page. Resolvers skip anything inside the widget, avoid visible layout changes, and leave elements alone when they can’t be sure.
Treat the data-acs-fixed-by attributes as a to-do list for your developers.
Each one marks a spot where a fix in your own code would help visitors before
the widget loads, and in browsers that block scripts.