Fyzn Access · Shopify accessibility

We measure accessibility in your Shopify theme, fix it in the code, and document the result

WCAG 2.2 Level AA. No widget, no script, no overlay — the fixes live in your theme’s source. Your five-route scan takes about ten minutes and it is yours to keep, with nothing to buy in return.

Request the free scan

The scan is automated, and on its own it is not an audit. What it does not cover is set out line by line below rather than in a footnote.

What we measure, and what we do not

The uncomfortable part of this trade goes first, because everything else on the page depends on you believing it.

Automated testing catches roughly 57% of accessibility issues by volume, and fully automates only around 30% of the WCAG success criteria1. Those two figures pull in opposite directions and the gap between them is where most accessibility reporting goes wrong: contrast, page language and the name/role/value family are so common that catching them clears a large share of the total count, which makes an automated report feel far more complete than it is.

So we run both halves. The automated pass gives us volume and a baseline that can be re-run identically months later. The manual pass — 28 points — covers what a machine cannot decide:

  • keyboard traps, and whether focus ever gets stuck somewhere it cannot leave;
  • focus order, and focus return after a drawer or modal closes;
  • whether closed drawers are actually removed from the tab order;
  • live-region announcements — cart updates, filter results, form errors;
  • whether alt text describes the image or merely exists;
  • and the one that decides everything: whether the critical purchase path — home, product, variant, add to cart, cart — can be completed with a keyboard alone, and again with VoiceOver and NVDA.

The routes we test

Scope is a named list, not an adjective. These are the routes, at 1440×900 and 390×844. The free scan runs the mobile viewport only, because that is where both the traffic and the risk concentrate.

The same list appears in the statement of work, and anything outside it is out of scope in writing.
RouteFree scanAudit
HomeYesYes
A collection pageYesYes
A product page with variantsYesYes
CartYesYes
Search resultsYesYes
Account loginYes
A blog articleYes
ContactYes
The 404 pageYes

How it runs

Six steps. Each one produces a file that stays with you, and each stage of the ladder can be bought on its own.

  1. Scan. Five routes, mobile viewport, an automated WCAG 2.2 AA pass. You get the count, the rules behind it, the routes affected and which findings are site-wide rather than local.
  2. Detect. Nine routes at two viewports, plus the 28-point manual pass and the screen reader run. Automated findings that come back incomplete are reviewed by a person rather than dropped.
  3. Map. Every finding is tied to its WCAG success criterion, given a severity class — P0 blocking, P1 serious, P2 moderate, P3 low — and located in a specific theme file. Findings are grouped by component, because fifty violations frequently come from one footer.
  4. Fix. Your theme is duplicated; the live theme is never edited. Fixes are made in the clone and every diff is read by a person. No bulk automated rewrite is published.
  5. Verify. The same engine, the same routes, a second date. Plus mobile Lighthouse accessibility on every route, the keyboard run, the VoiceOver and NVDA run, the manual checklist, and a visual regression check.
  6. Prove. A dated evidence pack: what was measured, what was fixed, what is still open and when each of those happened. Publishing to your live theme happens on your approval, with a rollback point recorded.

Where a Sprint is finished is a measurement, not an opinion. Zero P0 and P1 violations on the routes in scope; mobile Lighthouse accessibility of 95 or better on each of them; the critical purchase path completed with the keyboard alone and again with a screen reader; all 28 manual points checked, with anything that did not pass written into the roadmap rather than quietly dropped; and no visual regression. If a point does not pass, it is listed as not passing.

Why a runtime layer does not close these

An overlay widget runs after your page has been built in the browser. The only thing it has to work with is the final DOM: it can attach a label to a button, it can apply a contrast filter. The thing it does not have is snippets/product-card.liquid, the file that produced the button in the first place.

That is an architectural difference rather than a claim about any particular product, and it produces a set of consequences you can check yourself:

A comparison of two approaches, not of two vendors. We do not name products, and we do not make performance claims about anyone else’s.
AspectA runtime overlayFyzn Access
Where the fix livesIn a third-party script, at runtimeIn your theme’s source code
If the script is removedThe issue returnsThe fix stays — it is your file
Assistive technologyAn added layer between the user and the pageSemantic HTML, nothing in between
Page weightAdditional JavaScript on every pageNo added runtime
What you can show laterA subscription invoiceDated before-and-after scans and a manual test record
Cost shapeMonthly, indefinitelyOne-off remediation; monitoring optional

We do not build, recommend or integrate overlay widgets. That is a written rule in how this service is run, not a positioning choice we could trade away in a negotiation. We also will not ask you to remove one: if you keep yours, the audit and the fixes remain valid either way.

One piece of public record belongs here, because it is the reason this page is written the way it is. In January 2025 the US Federal Trade Commission ordered a $1,000,000 payment from a vendor in this category over claims that its automated product could make any website conform to accessibility guidelines2. The penalty was not for building the product. It was for what was said about it.

Why WCAG 2.2, and not 2.0 or 2.1

We audit against WCAG 2.2 Level AA. Version 2.2 added nine success criteria, six of them at Level A or AA and therefore in scope here3. Four of the six decide real outcomes on a storefront:

  • 2.5.8 Target Size (Minimum), AA — icon buttons, quantity steppers, filter chips, swatches. Most of them live on mobile, which is where most of your traffic is.
  • 2.4.11 Focus Not Obscured (Minimum), AA — sticky headers and announcement bars that cover the element a keyboard user has just moved to.
  • 2.5.7 Dragging Movements, AA — comparison sliders, carousels and reorderable lists that offer no alternative to a drag.
  • 3.3.7 Redundant Entry, A — asking for the same information twice in one flow.

An audit written against 2.0 or 2.1 will pass a store over all four without mentioning them. Auditing against the older version is easier to pass and worth less to you.

Packages and prices

Published, in USD, because a number you can act on is worth more to you than a number we protect.

The Sprint band is set by the theme, not by your catalogue. Which band you are in is written down after the Audit, as a fixed price.
PackageScopeTimePrice
Access Scan5 routes, mobile viewport, automated~10 minutesFree
Access Audit9 routes × 2 viewports, plus a 28-point manual test3 days$750 — credited in full against a Sprint
Access Sprint SAudit, fixes in the theme code, verification, evidence pack10–14 days$1,900
Access Sprint MThe same, on a theme with more custom surface to work through10–14 days$2,900
Access Sprint LThe same again, on a heavily customised or app-dense theme10–14 days$4,500
Access GuardMonthly re-scan, regression report, 2 hours of fixes a monthOngoing$199 / $299 / $499 per month
Theme PassPre-submission review and fixes for a theme going to the Theme Store5 days$800 – $1,500

What moves a Sprint between bands is theme complexity: how many custom sections there are, how the variant picker is built, whether there is a mega menu, how many drawers and modals exist, and how app-dense the storefront is. None of that is visible from the outside, which is why we measure before we quote. After the Audit you get a fixed price in writing — no hourly billing and no scope surprise.

Payment is 50% to start and 50% on delivery. Access is taken by Shopify collaborator invite only; we do not accept a shared admin password, even when it is offered. Neither the Scan nor the Audit needs any access at all — both run against the public storefront. Access is only required once there is something to fix, which is after you have already seen our work.

A Sprint includes the first three months of Guard. After that it continues only if you want it to, and ends on written notice.

Request the free scan

What you actually receive

A Sprint delivers six things, and all six are files rather than assurances:

  • the findings report — criterion, severity, theme file location, suggested fix;
  • the remediated theme;
  • a before-and-after verification report — same engine, same routes, two different dates;
  • the text of an accessibility statement you can publish, written to say honestly what has been done and what is still open;
  • a dated evidence record;
  • the remaining roadmap, including anything that did not pass.

We have no published case study yet, and we are not going to invent one. This service line is new. There is no client wall, no logo strip and no “before 42, after 0” graphic on this page, because we do not yet have one we are permitted to show. What we can point at is our own work: Darkroom, the Shopify theme we build and maintain ourselves, where the accessibility and performance constraints are properties of the package you can verify by reading the code. Case studies get published here when a client gives written permission and the numbers are anonymised — not before.

One thing you can check right now, on this page. We run the same engine against our own pages. This one, measured on 25 August 2026 with axe-core against the WCAG 2.2 AA rule set, at 390px and 1440px: zero violations in both viewports, with one element on mobile the scanner could not decide on its own. That is the automated half only — the same limit we state in every report, and the reason the 28 manual checks exist. It proves nothing about your store. It does mean the people selling you an audit passed their own.

Who this is for

Three groups, and we are direct about it because a bad fit wastes your week and ours.

US direct-to-consumer Shopify brands, roughly $1M to $25M

Large enough that a broken purchase path costs real orders, small enough that the work is still one focused engagement rather than a programme. If you have received a demand letter already, talk to your lawyer first — we do the measurement and the remediation, and we do not give legal advice at any point.

Brands selling into the EU

The European Accessibility Act applies to services provided to consumers in the Union, and being established elsewhere is not in itself an exemption. Whether you are in scope is a legal assessment; whether your storefront can be used with a keyboard is not, and that is the half we can answer this week.

Theme studios shipping to the Shopify Theme Store

Theme Pass is a pre-submission pass: five days, $800 to $1,500, before review rather than after a rejection.

Who this is not for

Anyone looking for a badge to put in the footer, because no such thing legitimately exists. Anyone who wants the appearance of remediation rather than the work. And any store whose scope, once measured, runs past roughly forty hours — there we split the engagement or decline it, rather than quoting a number we would have to earn back by cutting the verification.

What is not included

The most important section on this page. Everything written here is also written in your contract, in the same words.

This is not legal advice. We are not lawyers, we are not a substitute for one, and we do not produce an opinion that any regulation has been met.

There is no such thing as an accessibility certificate. Neither the ADA nor the EAA defines one and no body issues one. What we produce is measurement, remediation, verification and a dated record.

No site is permanently “fully accessible”. The next content update, app install or campaign page can introduce new violations. That is why a Sprint is sold as a baseline rather than an ending.

An automated scan is not an audit. The 57% and 30% figures at the top of this page are the reason the manual pass exists — and your free scan report says so inside the report itself, not only here.

Out of scope, listed explicitly in the contract: third-party app iframes · user-generated content, including reviews and customer photography · PDFs and other documents · Shopify checkout, which is controlled by the platform and cannot be reached from theme code · email templates · native mobile apps · any route not named in the scope list.

We do not offer an indemnity.

We do not invent alt text. If it can be derived from the image or your product data, we derive it. If it cannot, we ask you. Empty is better than wrong.

We do not change your appearance unilaterally. Contrast is a palette decision; no fix affecting the brand’s look ships without design approval.

So what is it you are buying

Position, not protection. The defensible version of the argument is this: documented, good-faith remediation improves a settlement position, and evidence dated before a demand letter arrives carries more weight than a record assembled after one. We are not going to put a percentage on that, because we cannot show you where the percentage came from, and a number without a source would undo the only real advantage we have. What you are buying is a timely, measured, dated record — and behind it, a theme that has genuinely been fixed.

Questions

We already run an accessibility widget. Does that change anything?

No, and that is usually why the findings are worth reading: a scan run while the widget is live still returns them. An overlay runs after the page has rendered, so what it can reach is the final DOM — it can attach a label to a button, it can apply a contrast filter. What it cannot reach is the .liquid file that produced the button. We do not ask you to remove anything. We fix the source and leave; whether you keep paying a subscription after that is your call to make with the report in front of you.

Does this mean we will not be sued?

No. Be wary of anyone who tells you otherwise — no product prevents a demand letter or a lawsuit, and ours does not either. What we do is measurable: we remove real barriers and we document the work with dates attached. Documented, good-faith remediation improves your settlement position, and evidence dated before a demand letter arrives carries more weight than evidence produced after one. We are not going to attach a percentage to that, because we cannot show you where the percentage came from. What we sell is position, not protection, and we say so on the page rather than in the small print.

Our theme came from the Shopify Theme Store. Is it not already accessible?

Partly. Theme Store review sets a floor rather than a finish line, and the floor covers a fraction of the WCAG success criteria. The bigger issue is that most of what we find did not ship with the theme: it arrived afterwards, in custom sections, installed apps, campaign pages and rewritten variant pickers. A store generates accessibility debt as it is merchandised. That is also why the free scan is worth ten minutes even if you are confident about the theme itself.

A widget costs $49 a month. You are asking for thousands.

That is the wrong comparison, because the two things do not do the same job. A subscription is an indefinite rent — around $3,000 over five years, and the day you stop paying you are back where you started, because nothing changed in your theme. Our work is a one-off change that stays in your code: no script to remove, no runtime cost, no licence to renew, plus a dated record a subscription invoice cannot give you. If the budget is genuinely tight, the right entry point is not the Sprint but the $750 Audit — you get the full findings and your own developer does the work. If you come back to us, that $750 is credited in full. The scan costs nothing at all.

Could our own developer do this?

Yes, and we mean that. The report is written so they can: every finding carries its WCAG criterion, a severity class, the theme file it lives in and a suggested fix. It is yours whether or not you work with us. The difference is speed and the part automation does not reach. Automated testing catches roughly 57% of accessibility issues by volume and fully automates about 30% of the success criteria; the rest is a manual pass — keyboard traps, focus order, focus return from a drawer, live-region announcements, form error handling — and the critical purchase path actually completed with VoiceOver and NVDA. If your developer has done this before, you are in good hands. If they have not, the first one is usually learned at a price higher than ours.

We are a micro business, or we are not in the EU. Does the European Accessibility Act apply to us?

That is a legal question and you should put it to a lawyer — we do the measurement side, not the assessment. Two technical details get skipped often enough to be worth stating. First, the micro-enterprise exemption requires fewer than 10 people and a turnover or balance sheet total not above €2 million; headcount on its own is not enough. Second, being established outside the EU is not itself an exemption — the Act is written around services provided to consumers in the Union, so where you ship to matters as much as where you are. If you conclude you are out of scope, this page closes for you, and that is a perfectly reasonable outcome.

We are redesigning soon. Should we wait?

It is a reason to move it forward rather than back, and that is engineering rather than sales. During a redesign, accessibility is a decision: semantic structure, focus order and a contrast-safe palette are born inside the design. After launch it becomes a repair, and you get the same result by taking finished components apart. The second is always more expensive. Theme Pass exists for exactly this moment — five days, $800 to $1,500, before the new theme goes live. If you would still rather wait, take the free scan now; it costs you nothing and gives you a list to put in the redesign brief.

Will this change how our store looks?

Almost none of it will. The overwhelming majority of fixes are invisible: missing labels, button names, closed drawers that never received inert, focus order, form associations, a language attribute. None of those have a pixel consequence. The one visible category is contrast — and there we do not act unilaterally, because contrast is a palette decision. We show you options that pass, you choose, and no fix that affects how the brand looks ships without design approval. That is our internal rule, not a concession we make when asked.

Will anything break? How long does it take, and what do you need from us?

We never touch your live theme. We duplicate it, work on the clone, verify on staging, show you, publish with your approval and record a rollback point. Your store trades normally throughout. Timings: the scan takes about ten minutes and needs nothing but your store URL; the Audit is three days and needs a collaborator invite; the Sprint is 10 to 14 working days and needs the invite, answers to a few content questions, and palette approval. Your own time is usually under an hour in total. Those content questions exist because we do not invent alt text — if it cannot be derived from the image or the product data, we ask you.

Do you issue a certificate, or a badge we can put on the site?

No — and that is not a gap in what we offer. No such document exists. Neither the ADA nor the EAA defines an accessibility certificate and no body issues one; the badges being sold are self-awarded. What you get instead is less decorative and more useful: a before-and-after verification report run on the same engine and the same routes on two different dates, a dated record of what was measured, what was fixed and what is still open, and the text of an accessibility statement you can publish — one that says honestly what you have done and what is still outstanding. If a demand letter ever arrives, those three are what your lawyer will ask for. A badge is not.

Why is the price a range? Give me a number.

The variable is not how many products you sell, it is how much theme there is to work through: custom sections, how the variant picker is built, a mega menu, how many drawers and modals exist, how app-dense the storefront is. None of that is knowable from the URL. So the order is: free scan, then the $750 Audit, then a fixed price in writing once we have measured. No hourly billing, no scope surprise. If you take the Audit and stop there, you keep the full findings report. Quoting before measuring either favours you or favours us, and both are a bad way to start.

What happens after the Sprint?

The first three months of Access Guard are included. After that, continuing is optional and ends on written notice — there is no lock-in, and if you stop, nothing is taken back: the fixes are in your theme and the evidence record is in your hands. The only thing you lose is the monitoring. The reason to keep it is that accessibility is a maintenance item rather than a state. A new section, a new app, a campaign page or a theme update can each produce new violations. Guard re-scans monthly, catches the regression, closes it inside a two-hour monthly allowance, and keeps the dated record running. One dated report is a snapshot; an unbroken series is a practice.

Sources

Every figure on this page is either a price we set or a number with a source you can open. Where we do not have a source, the number is not here — which is why this page carries no litigation statistics, no share-of-lawsuits figure and no violations-per-theme range. Those exist in our internal notes with the denominators unverified, and they stay there until the reports behind them can be linked from this list.

  1. Deque Systems, The Automated Accessibility Coverage Report — the source of the ~57% by volume and ~30% of success criteria figures. deque.com/automated-accessibility-coverage-report
  2. US Federal Trade Commission, press release, January 2025 — a $1,000,000 order over deceptive claims that an AI product could make websites conform to accessibility guidelines. ftc.gov press release
  3. W3C Web Accessibility Initiative, What’s New in WCAG 2.2 — the nine added success criteria and their conformance levels. w3.org/WAI — new in WCAG 2.2
  4. Directive (EU) 2019/882, the European Accessibility Act — the micro-enterprise definition and the scope of services covered. eur-lex.europa.eu — Directive 2019/882

Send us your store URL and we will send you the measurement

Five routes, mobile viewport, WCAG 2.2 Level AA. About ten minutes later you have the count, the number of distinct rules behind it, which routes are affected, and which findings close site-wide with a single fix.

The report is yours. If you never speak to us again you can hand it to your developer — that is what it is written for.

The public storefront, e.g. yourstore.com — no password-protected previews.

Prefer email? Send hello@fyzn.studio the store URL and nothing else — that is genuinely all we need to start.

Everything runs in writing. No call, no deck, no waiting for a calendar slot — measurement, a fixed written scope, and a recorded walkthrough when the work is done.