Skip to content

Illustrative example: this report was produced by the real scan engine on a fictitious demo store. It is not a customer.

Kerbcut Baseline Report · 2026-10-22

Leinen & Co (fictitious)

Reference: WCAG 2.2 level A and AA (automatable rules) · also reported: WCAG 2.1 AA, as referenced by EN 301 549 V3.2.1

Scan KC-SAMPLE · https://leinen-und-co.example/ · methodology 2026.10-3 · axe-core 4.10.2 · platform shopify · complete scan

Summary for decision makers

10automated WCAG failure types
40failing elements (WCAG)
5critical WCAG failure types
2best-practice / other types
0checks needing a person
4pages analysed
68rule checks passed
WhereProblemWhy it mattersWhat to doEffortHow to measure
Product page, Collection page, Cart, Home page (4 pages)Images without a text alternativeBlind and low-vision shoppers using screen readers hear the file name or nothing.Add alt text that describes the product (Shopify: Products → Media → Add alt text). Use alt="" only for decorative images.S (≈2 h, estimate)Rescan shows 0 failing elements on the affected pages; a person confirms the new text is meaningful.
Product page, Cart, Collection page, Home page (4 pages)Buttons without an accessible nameScreen reader users hear "button" with no purpose, often on cart, menu or wishlist icons.Add aria-label to icon-only buttons, e.g. aria-label="Add to cart".S (≈2 h, estimate)Rescan shows 0 failing elements on the affected pages; a person confirms the new text is meaningful.
Cart, Product page, Collection page, Home page (4 pages)Links without an accessible nameIcon links (cart, account, social) are announced as "link" only.Add visible text or aria-label to icon links; hide the icon with aria-hidden="true".S (≈2 h, estimate)Rescan shows 0 failing elements on the affected pages; a person confirms the new text is meaningful.

No single score is given: a number cannot show legal conformance or usability for everyone. Automated tools detect only part of WCAG; keyboard, screen reader, meaningful text and flows need human testing.

Estimated effort to fix every automated finding: 25.5 hours of theme work (rule-of-thumb estimate per issue type, see Methodology).

What was analysed

Page typeURLStatusFirst byteHTMLRules passed / failed
Home pagehttps://leinen-und-co.example/analysed— ms1 KB17 / 8
Product pagehttps://leinen-und-co.example/products/leinenhemd-blauanalysed— ms1 KB18 / 9
Collection pagehttps://leinen-und-co.example/collections/hemdenanalysed— ms1 KB15 / 5
Carthttps://leinen-und-co.example/cartanalysed— ms1 KB18 / 6

Robots: robots.txt read and respected. Templates found: product yes, collection yes, cart yes. Store detected: yes.

Prioritised findings: automated WCAG failures

Order = impact × importance of the user flow (checkout 3, cart 2.5, product 2, account and forms 1.8, search and contact 1.6, listings 1.5, home 1.4) × log₂(1 + pages) × log₂(1 + elements) × detection confidence. Each finding shows its own calculation. This is technical priority, not legal risk.

1

Images without a text alternative

criticalAutomated WCAG failurefix needs human check

Rule image-alt · WCAG 2.1/2.2 level A – SC 1.1.1 · EN 301 549 9.1.1.1 · 10 element(s) on 4 page(s): product, collection, cart, home · effort S (estimate)

Who is affected: Blind and low-vision shoppers using screen readers hear the file name or nothing.

Fix: Add alt text that describes the product (Shopify: Products → Media → Add alt text). Use alt="" only for decorative images.

How to verify: run "Verify fixes" on the affected pages (or a rescan); the rule must no longer fail there, and a person checks that the new text actually describes the element. Rule reference: image-alt.

Why it is at position 1: critical = 10 · most important flow 2.5 · 4 page(s) → 2.32 · 10 element(s) → 3.46 · Automated WCAG failure × 1 → 200.8

Evidence by URL (7)

https://leinen-und-co.example/products/leinenhemd-blau
Element: img[src$="logo.png"]

<img src="/logo.png">

Element does not have an alt attribute aria-label attribute does not exist or is empty

https://leinen-und-co.example/products/leinenhemd-blau
Element: img[src$="p1.jpg"]

<img src="/p1.jpg">

Element does not have an alt attribute aria-label attribute does not exist or is empty

https://leinen-und-co.example/collections/hemden
Element: img[src$="logo.png"]

<img src="/logo.png">

Element does not have an alt attribute aria-label attribute does not exist or is empty

https://leinen-und-co.example/collections/hemden
Element: img[src$="p1.jpg"]

<img src="/p1.jpg">

Element does not have an alt attribute aria-label attribute does not exist or is empty

https://leinen-und-co.example/cart
Element: img

<img src="/logo.png">

Element does not have an alt attribute aria-label attribute does not exist or is empty

https://leinen-und-co.example/
Element: img[src$="logo.png"]

<img src="/logo.png">

Element does not have an alt attribute aria-label attribute does not exist or is empty

https://leinen-und-co.example/
Element: img[src$="hero.jpg"]

<img src="/hero.jpg">

Element does not have an alt attribute aria-label attribute does not exist or is empty

2

Buttons without an accessible name

criticalAutomated WCAG failurefix needs human check

Rule button-name · WCAG 2.1/2.2 level A – SC 4.1.2 · EN 301 549 9.4.1.2 · 5 element(s) on 4 page(s): product, cart, collection, home · effort S (estimate)

Who is affected: Screen reader users hear "button" with no purpose, often on cart, menu or wishlist icons.

Fix: Add aria-label to icon-only buttons, e.g. aria-label="Add to cart".

How to verify: run "Verify fixes" on the affected pages (or a rescan); the rule must no longer fail there, and a person checks that the new text actually describes the element. Rule reference: button-name.

Why it is at position 2: critical = 10 · most important flow 2.5 · 4 page(s) → 2.32 · 5 element(s) → 2.58 · Automated WCAG failure × 1 → 150.1

Evidence by URL (5)

https://leinen-und-co.example/products/leinenhemd-blau
Element: .menu

<button class="menu"><svg width="16" height="16"><path d="M0 0h16"></path></svg></button>

Element does not have inner text that is visible to screen readers aria-label attribute does not exist or is empty

https://leinen-und-co.example/products/leinenhemd-blau
Element: .wish

<button class="wish"><svg width="16" height="16"><path d="M8 14z"></path></svg></button>

Element does not have inner text that is visible to screen readers aria-label attribute does not exist or is empty

https://leinen-und-co.example/cart
Element: .menu

<button class="menu"><svg width="16" height="16"><path d="M0 0h16"></path></svg></button>

Element does not have inner text that is visible to screen readers aria-label attribute does not exist or is empty

https://leinen-und-co.example/collections/hemden
Element: button

<button class="menu"><svg width="16" height="16"><path d="M0 0h16"></path></svg></button>

Element does not have inner text that is visible to screen readers aria-label attribute does not exist or is empty

https://leinen-und-co.example/
Element: .menu

<button class="menu"><svg width="16" height="16"><path d="M0 0h16"></path></svg></button>

Element does not have inner text that is visible to screen readers aria-label attribute does not exist or is empty

3

Links without an accessible name

seriousAutomated WCAG failurefix needs human check

Rule link-name · WCAG 2.1/2.2 level A – SC 2.4.4, 4.1.2 · EN 301 549 9.2.4.4, 9.4.1.2 · 15 element(s) on 4 page(s): cart, product, collection, home · effort S (estimate)

Who is affected: Icon links (cart, account, social) are announced as "link" only.

Fix: Add visible text or aria-label to icon links; hide the icon with aria-hidden="true".

How to verify: run "Verify fixes" on the affected pages (or a rescan); the rule must no longer fail there, and a person checks that the new text actually describes the element. Rule reference: link-name.

Why it is at position 3: serious = 6 · most important flow 2.5 · 4 page(s) → 2.32 · 15 element(s) → 4.00 · Automated WCAG failure × 1 → 139.3

Evidence by URL (8)

https://leinen-und-co.example/cart
Element: a[href="/"]

<a href="/"><img src="/logo.png"></a>

Element is in tab order and does not have accessible text

https://leinen-und-co.example/cart
Element: a[href$="search"]

<a href="/search"><svg width="18" height="18"><circle cx="8" cy="8" r="6"></circle></svg></a>

Element is in tab order and does not have accessible text

https://leinen-und-co.example/products/leinenhemd-blau
Element: a[href="/"]

<a href="/"><img src="/logo.png"></a>

Element is in tab order and does not have accessible text

https://leinen-und-co.example/products/leinenhemd-blau
Element: a[href$="search"]

<a href="/search"><svg width="18" height="18"><circle cx="8" cy="8" r="6"></circle></svg></a>

Element is in tab order and does not have accessible text

https://leinen-und-co.example/collections/hemden
Element: a[href="/"]

<a href="/"><img src="/logo.png"></a>

Element is in tab order and does not have accessible text

https://leinen-und-co.example/collections/hemden
Element: a[href$="search"]

<a href="/search"><svg width="18" height="18"><circle cx="8" cy="8" r="6"></circle></svg></a>

Element is in tab order and does not have accessible text

https://leinen-und-co.example/
Element: a[href="/"]

<a href="/"><img src="/logo.png"></a>

Element is in tab order and does not have accessible text

https://leinen-und-co.example/
Element: a[href$="search"]

<a href="/search"><svg width="18" height="18"><circle cx="8" cy="8" r="6"></circle></svg></a>

Element is in tab order and does not have accessible text

4

Zoom is disabled on mobile

criticalAutomated WCAG failure

Rule meta-viewport · WCAG 2.1/2.2 level AA – SC 1.4.4 · EN 301 549 9.1.4.4 · 4 element(s) on 4 page(s): cart, product, collection, home · effort XS (estimate)

Who is affected: Low-vision shoppers cannot pinch-zoom product details or prices.

Fix: Remove user-scalable=no and maximum-scale=1 from the viewport meta tag.

How to verify: run "Verify fixes" on the affected pages (or a rescan); the rule must no longer fail there. Rule reference: meta-viewport.

Why it is at position 4: critical = 10 · most important flow 2.5 · 4 page(s) → 2.32 · 4 element(s) → 2.32 · Automated WCAG failure × 1 → 134.8

Evidence by URL (4)

https://leinen-und-co.example/cart
Element: meta[name="viewport"]

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

user-scalable=no on <meta> tag disables zooming on mobile devices

https://leinen-und-co.example/products/leinenhemd-blau
Element: meta[name="viewport"]

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

user-scalable=no on <meta> tag disables zooming on mobile devices

https://leinen-und-co.example/collections/hemden
Element: meta[name="viewport"]

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

user-scalable=no on <meta> tag disables zooming on mobile devices

https://leinen-und-co.example/
Element: meta[name="viewport"]

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

user-scalable=no on <meta> tag disables zooming on mobile devices

5

Form fields without labels

criticalAutomated WCAG failurefix needs human check

Rule label · WCAG 2.1/2.2 level A – SC 4.1.2 · EN 301 549 9.4.1.2 · 1 element(s) on 1 page(s): cart · effort S (estimate)

Who is affected: Shoppers cannot tell what to type in search, newsletter or address fields.

Fix: Connect a visible <label for="id"> to every input; placeholders are not labels.

How to verify: run "Verify fixes" on the affected pages (or a rescan); the rule must no longer fail there, and a person checks that the new text actually describes the element. Rule reference: label.

Why it is at position 5: critical = 10 · most important flow 2.5 · 1 page(s) → 1.00 · 1 element(s) → 1.00 · Automated WCAG failure × 1 → 25

Evidence by URL (1)

https://leinen-und-co.example/cart
Element: input

<input type="number" value="1">

Element does not have an implicit (wrapped) <label> Element does not have an explicit <label>

6

Variant selectors without labels

criticalAutomated WCAG failurefix needs human check

Rule select-name · WCAG 2.1/2.2 level A – SC 4.1.2 · EN 301 549 9.4.1.2 · 1 element(s) on 1 page(s): product · effort S (estimate)

Who is affected: Size and colour dropdowns are announced without a name, so the shopper cannot pick a variant.

Fix: Label every <select> (e.g. <label for="size">Size</label>).

How to verify: run "Verify fixes" on the affected pages (or a rescan); the rule must no longer fail there, and a person checks that the new text actually describes the element. Rule reference: select-name.

Why it is at position 6: critical = 10 · most important flow 2 · 1 page(s) → 1.00 · 1 element(s) → 1.00 · Automated WCAG failure × 1 → 20

Evidence by URL (1)

https://leinen-und-co.example/products/leinenhemd-blau
Element: select

<select name="size"><option>S</option><option>M</option></select>

Element does not have an implicit (wrapped) <label> Element does not have an explicit <label>

7

Page has no title

seriousAutomated WCAG failurefix needs human check

Rule document-title · WCAG 2.1/2.2 level A – SC 2.4.2 · EN 301 549 9.2.4.2 · 1 element(s) on 1 page(s): product · effort XS (estimate)

Who is affected: Users cannot tell tabs apart; also hurts search results.

Fix: Give every template a unique <title>.

How to verify: run "Verify fixes" on the affected pages (or a rescan); the rule must no longer fail there, and a person checks that the new text actually describes the element. Rule reference: document-title.

Why it is at position 7: serious = 6 · most important flow 2 · 1 page(s) → 1.00 · 1 element(s) → 1.00 · Automated WCAG failure × 1 → 12

Evidence by URL (1)

https://leinen-und-co.example/products/leinenhemd-blau
Element: html

<html lang="de">

Document does not have a non-empty <title> element

8

Embedded widgets (iframes) without a title

seriousAutomated WCAG failurefix needs human check

Rule frame-title · WCAG 2.1/2.2 level A – SC 4.1.2 · EN 301 549 9.4.1.2 · 1 element(s) on 1 page(s): product · effort S (estimate)

Who is affected: Review, chat and video widgets are announced as "frame" only.

Fix: Add title="Customer reviews" etc.; ask the app vendor if you cannot edit it.

How to verify: run "Verify fixes" on the affected pages (or a rescan); the rule must no longer fail there, and a person checks that the new text actually describes the element. Rule reference: frame-title.

Why it is at position 8: serious = 6 · most important flow 2 · 1 page(s) → 1.00 · 1 element(s) → 1.00 · Automated WCAG failure × 1 → 12

Evidence by URL (1)

https://leinen-und-co.example/products/leinenhemd-blau
Element: iframe

<iframe src="https://reviews.example-app.com/embed"></iframe>

Element has no title attribute aria-label attribute does not exist or is empty

9

Page language not declared

seriousAutomated WCAG failure

Rule html-has-lang · WCAG 2.1/2.2 level A – SC 3.1.1 · EN 301 549 9.3.1.1 · 1 element(s) on 1 page(s): home · effort XS (estimate)

Who is affected: Screen readers may read German text with an English voice.

Fix: Set <html lang="de"> (or the page language) in the theme layout.

How to verify: run "Verify fixes" on the affected pages (or a rescan); the rule must no longer fail there. Rule reference: html-has-lang.

Why it is at position 9: serious = 6 · most important flow 1.4 · 1 page(s) → 1.00 · 1 element(s) → 1.00 · Automated WCAG failure × 1 → 8.4

Evidence by URL (1)

https://leinen-und-co.example/
Element: html

<html>

The <html> element does not have a lang attribute

10

Malformed lists

seriousAutomated WCAG failure

Rule list · WCAG 2.1/2.2 level A – SC 1.3.1 · EN 301 549 9.1.3.1 · 1 element(s) on 1 page(s): home · effort S (estimate)

Who is affected: Menus and filters are announced incorrectly.

Fix: Only <li> elements directly inside <ul>/<ol>.

How to verify: run "Verify fixes" on the affected pages (or a rescan); the rule must no longer fail there. Rule reference: list.

Why it is at position 10: serious = 6 · most important flow 1.4 · 1 page(s) → 1.00 · 1 element(s) → 1.00 · Automated WCAG failure × 1 → 8.4

Evidence by URL (1)

https://leinen-und-co.example/
Element: ul

<ul class="grid"><div><a href="/products/leinenhemd-blau"><img src="/p1.jpg"></a></div></ul>

List element has direct children that are not allowed: div

Best practices and criteria beyond the AA target

Not WCAG A/AA failures, so they are not counted as failures above. They still make pages harder to use with assistive technology (landmarks, heading order) and are cheap to fix.

1

Content outside page regions

moderateBest practice

Rule region · Best practice (not a WCAG requirement) · 16 element(s) on 4 page(s): cart, product, home, collection · effort M (estimate)

Who is affected: Content is hard to reach with landmark navigation.

Fix: Place content inside header, nav, main and footer.

How to verify: run "Verify fixes" on the affected pages (or a rescan); the rule must no longer fail there. Rule reference: region.

Why it is at position 1: moderate = 3 · most important flow 2.5 · 4 page(s) → 2.32 · 16 element(s) → 4.09 · Best practice (not a WCAG requirement) × 0.5 → 35.6

Evidence by URL (8)

https://leinen-und-co.example/cart
Element: a[href="/"]

<a href="/"><img src="/logo.png"></a>

Some page content is not contained by landmarks

https://leinen-und-co.example/cart
Element: a[href$="hemden"]

<a href="/collections/hemden">Hemden</a>

Some page content is not contained by landmarks

https://leinen-und-co.example/products/leinenhemd-blau
Element: a[href="/"]

<a href="/"><img src="/logo.png"></a>

Some page content is not contained by landmarks

https://leinen-und-co.example/products/leinenhemd-blau
Element: a[href$="hemden"]

<a href="/collections/hemden">Hemden</a>

Some page content is not contained by landmarks

https://leinen-und-co.example/
Element: a[href="/"]

<a href="/"><img src="/logo.png"></a>

Some page content is not contained by landmarks

https://leinen-und-co.example/
Element: a[href$="hemden"]

<a href="/collections/hemden">Hemden</a>

Some page content is not contained by landmarks

https://leinen-und-co.example/collections/hemden
Element: a[href="/"]

<a href="/"><img src="/logo.png"></a>

Some page content is not contained by landmarks

https://leinen-und-co.example/collections/hemden
Element: a[href$="hemden"]

<a href="/collections/hemden">Hemden</a>

Some page content is not contained by landmarks

2

Heading levels skipped

moderateBest practice

Rule heading-order · Best practice (not a WCAG requirement) · 2 element(s) on 2 page(s): product, home · effort S (estimate)

Who is affected: Screen reader users navigate by headings and miss content.

Fix: Use h1→h2→h3 in order; style headings with CSS, not by level.

How to verify: run "Verify fixes" on the affected pages (or a rescan); the rule must no longer fail there. Rule reference: heading-order.

Why it is at position 2: moderate = 3 · most important flow 2 · 2 page(s) → 1.58 · 2 element(s) → 1.58 · Best practice (not a WCAG requirement) × 0.5 → 7.5

Evidence by URL (2)

https://leinen-und-co.example/products/leinenhemd-blau
Element: h4

<h4>Größe</h4>

Heading order invalid

https://leinen-und-co.example/
Element: h3

<h3>Bestseller</h3>

Heading order invalid

Site checks

CriterionPageResultObservedType · confidence
Mobile viewport and zoomHome pagePass viewport="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"measured · high
HTML weight and third-party scriptsHome pagePass 1 KB HTML, 3 script tags (3 third-party).heuristic · medium
Server response time (HTML)Home pageNot tested Timing not measured (offline demo fetch).measured · high
Skip-to-content linkHome pageCheck MinorNo skip link among the first in-page links.heuristic · low
Mobile viewport and zoomProduct pagePass viewport="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"measured · high
HTML weight and third-party scriptsProduct pagePass 1 KB HTML, 3 script tags (3 third-party).heuristic · medium
Server response time (HTML)Product pageNot tested Timing not measured (offline demo fetch).measured · high
Skip-to-content linkProduct pageCheck MinorNo skip link among the first in-page links.heuristic · low
Product image text alternativesProduct pageFail Critical1 of 3 product-area images have alt text (33%).measured · high
Mobile viewport and zoomCollection pagePass viewport="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"measured · high
HTML weight and third-party scriptsCollection pagePass 1 KB HTML, 3 script tags (3 third-party).heuristic · medium
Server response time (HTML)Collection pageNot tested Timing not measured (offline demo fetch).measured · high
Skip-to-content linkCollection pageCheck MinorNo skip link among the first in-page links.heuristic · low
Mobile viewport and zoomCartPass viewport="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"measured · high
HTML weight and third-party scriptsCartPass 1 KB HTML, 3 script tags (3 third-party).heuristic · medium
Server response time (HTML)CartNot tested Timing not measured (offline demo fetch).measured · high
Skip-to-content linkCartCheck MinorNo skip link among the first in-page links.heuristic · low
Accessibility statement publishedWhole siteFail SeriousNo link to an accessibility statement found on the home page (searched EN, DE, FR, PT, NL, ES, IT terms).measured · medium
Overlay widget relianceWhole siteCheck ModerateOverlay widget detected: accessiBe. Overlays change the page in the browser; they do not fix the source and are not a defence in court.measured · high

Measurement plan for the top recommendations

Images without a text alternative
Current metric
10 failing element(s) on Product page, Collection page, Cart, Home page (scan KC-SAMPLE).
Change
Add alt text that describes the product (Shopify: Products → Media → Add alt text). Use alt="" only for decorative images.
Monitored
Failing elements on the next analysis of the site (a rescan, or the scheduled run if monitoring is on); with analytics access: add-to-cart rate and conversion of the affected template.
Period
4 weeks after release.
Comparison
Technical: rescan before/after (deterministic). Commercial: A/B test where the platform allows; otherwise same template, 4 weeks before vs after, with the same weeks of the previous year as a seasonality check.
Other factors
Campaigns, price changes, stock-outs, seasonality, theme or app updates released in the same period.
Success
Rescan shows 0 failing elements for this rule; no increase in support contacts about the template.
Revert
Keep the accessibility fix itself. Revert only an accompanying visual change if an A/B test shows a statistically significant drop in conversion.
Buttons without an accessible name
Current metric
5 failing element(s) on Product page, Cart, Collection page, Home page (scan KC-SAMPLE).
Change
Add aria-label to icon-only buttons, e.g. aria-label="Add to cart".
Monitored
Failing elements on the next analysis of the site (a rescan, or the scheduled run if monitoring is on); with analytics access: add-to-cart rate and conversion of the affected template.
Period
4 weeks after release.
Comparison
Technical: rescan before/after (deterministic). Commercial: A/B test where the platform allows; otherwise same template, 4 weeks before vs after, with the same weeks of the previous year as a seasonality check.
Other factors
Campaigns, price changes, stock-outs, seasonality, theme or app updates released in the same period.
Success
Rescan shows 0 failing elements for this rule; no increase in support contacts about the template.
Revert
Keep the accessibility fix itself. Revert only an accompanying visual change if an A/B test shows a statistically significant drop in conversion.
Links without an accessible name
Current metric
15 failing element(s) on Cart, Product page, Collection page, Home page (scan KC-SAMPLE).
Change
Add visible text or aria-label to icon links; hide the icon with aria-hidden="true".
Monitored
Failing elements on the next analysis of the site (a rescan, or the scheduled run if monitoring is on); with analytics access: add-to-cart rate and conversion of the affected template.
Period
4 weeks after release.
Comparison
Technical: rescan before/after (deterministic). Commercial: A/B test where the platform allows; otherwise same template, 4 weeks before vs after, with the same weeks of the previous year as a seasonality check.
Other factors
Campaigns, price changes, stock-outs, seasonality, theme or app updates released in the same period.
Success
Rescan shows 0 failing elements for this rule; no increase in support contacts about the template.
Revert
Keep the accessibility fix itself. Revert only an accompanying visual change if an A/B test shows a statistically significant drop in conversion.
Zoom is disabled on mobile
Current metric
4 failing element(s) on Cart, Product page, Collection page, Home page (scan KC-SAMPLE).
Change
Remove user-scalable=no and maximum-scale=1 from the viewport meta tag.
Monitored
Failing elements on the next analysis of the site (a rescan, or the scheduled run if monitoring is on); with analytics access: add-to-cart rate and conversion of the affected template.
Period
4 weeks after release.
Comparison
Technical: rescan before/after (deterministic). Commercial: A/B test where the platform allows; otherwise same template, 4 weeks before vs after, with the same weeks of the previous year as a seasonality check.
Other factors
Campaigns, price changes, stock-outs, seasonality, theme or app updates released in the same period.
Success
Rescan shows 0 failing elements for this rule; no increase in support contacts about the template.
Revert
Keep the accessibility fix itself. Revert only an accompanying visual change if an A/B test shows a statistically significant drop in conversion.
Form fields without labels
Current metric
1 failing element(s) on Cart (scan KC-SAMPLE).
Change
Connect a visible <label for="id"> to every input; placeholders are not labels.
Monitored
Failing elements on the next analysis of the site (a rescan, or the scheduled run if monitoring is on); with analytics access: add-to-cart rate and conversion of the affected template.
Period
4 weeks after release.
Comparison
Technical: rescan before/after (deterministic). Commercial: A/B test where the platform allows; otherwise same template, 4 weeks before vs after, with the same weeks of the previous year as a seasonality check.
Other factors
Campaigns, price changes, stock-outs, seasonality, theme or app updates released in the same period.
Success
Rescan shows 0 failing elements for this rule; no increase in support contacts about the template.
Revert
Keep the accessibility fix itself. Revert only an accompanying visual change if an A/B test shows a statistically significant drop in conversion.

Commercial impact

We did not have access to this store's analytics, so we do not state a revenue figure. To estimate impact we need: monthly sessions, conversion rate, average order value and contribution margin. With those, the impact calculator shows conservative, intermediate and optimistic scenarios based on uplift assumptions you set. They are scenarios, not forecasts.

Legal exposure depends on the law that applies to this business, which this report does not determine. In Portugal, Decreto-Lei n.º 82/2022 (transposing the European Accessibility Act) covers e-commerce services to consumers from 28 June 2025, excludes microenterprises providing services, and sets fines in art. 29.º (serious offences for companies: €12,000–€24,000). Ask a lawyer whether and how it applies to you.

Draft accessibility statement (EN)

Generated from this scan. Review before publishing: it lists the open issues and does not claim full conformance.

# Accessibility statement — Leinen & Co (fictitious)

Leinen & Co (fictitious) is committed to making its online store accessible in line with WCAG 2.1 level AA / EN 301 549.

Status: partially conformant. Our latest automated check found 12 open issue types, listed below with planned fixes.

- Images without text alternative
- Buttons with no accessible name
- Links with no accessible name
- meta-viewport
- Content outside landmarks
- Form fields without labels
- Variant selectors without labels
- Missing page title
- Iframes without title
- Page language not declared
- Malformed lists
- Heading levels skipped

Feedback and alternative access: write to accessibility@Leinen & Co (fictitious). We reply within 5 working days.

If you are not satisfied with our response, you may contact the national market surveillance authority.

Prepared on 2026-10-22

Methodology and limitations

CriterionTypeMethod
Automated WCAG 2.1 A/AA rulesmeasuredaxe-core rules run on the delivered HTML of each sampled page (jsdom, scripts not executed).
Accessibility statement publishedmeasuredSearch all links on the home page for statement terms in EN/DE/FR/PT/NL/ES/IT; fetch the target to confirm it loads.
Overlay widget reliancemeasuredMatch script sources against known overlay vendors.
Mobile viewport and zoommeasuredRead the viewport meta tag.
Product image text alternativesmeasuredShare of <img> in the product page main area with non-empty alt.
Server response time (HTML)measuredTime to first byte and full HTML download, one request per page from the scanner location, no browser rendering.
HTML weight and third-party scriptsheuristicHTML bytes and count of external script tags; thresholds are rules of thumb.
Skip-to-content linkheuristicLook for an early in-page link to the main content.
Colour contrastpartialTested by axe-core only on pages rendered in headless Chromium; pages analysed from delivered HTML are not contrast-tested. The report states how many pages were contrast-tested.
Keyboard operation of menu, cart and checkoutnot testedRequires scripted browser interaction; included in manual review add-on.
Checkout stepsnot testedCheckout needs a cart session and is often hosted by the platform; not crawled to avoid creating orders.
  • Automated testing finds a little over half of accessibility issues by volume. This report is not a certificate of conformance and not legal advice.
  • Pages are analysed as delivered HTML; content injected later by scripts is not seen and colour contrast is not tested.
  • Keyboard operation, checkout and pages behind a login are not tested.
  • Screenshots are not included in this version; each finding cites the URL, the CSS selector and the HTML of the element so it can be reproduced.
  • Response times are a single measurement from our scanner location and vary with network and load.

Next step

You can fix everything in this report yourself or with your agency; it contains every detail needed. If you want us to do it: implementation of all automated findings, estimated at 25.5 hours, is offered at a fixed price of €2300 (proposal; final quote after reviewing your theme), including a rescan and an updated statement.