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)
Summary for decision makers
| Where | Problem | Why it matters | What to do | Effort | How to measure |
|---|---|---|---|---|---|
| Product page, Collection page, Cart, Home page (4 pages) | Images without a text alternative | Blind 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 name | Screen 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 name | Icon 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 type | URL | Status | First byte | HTML | Rules passed / failed |
|---|---|---|---|---|---|
| Home page | https://leinen-und-co.example/ | analysed | — ms | 1 KB | 17 / 8 |
| Product page | https://leinen-und-co.example/products/leinenhemd-blau | analysed | — ms | 1 KB | 18 / 9 |
| Collection page | https://leinen-und-co.example/collections/hemden | analysed | — ms | 1 KB | 15 / 5 |
| Cart | https://leinen-und-co.example/cart | analysed | — ms | 1 KB | 18 / 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.
Images without a text alternative
criticalAutomated WCAG failurefix needs human checkRule 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
Buttons without an accessible name
criticalAutomated WCAG failurefix needs human checkRule 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
Links without an accessible name
seriousAutomated WCAG failurefix needs human checkRule 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
Zoom is disabled on mobile
criticalAutomated WCAG failureRule 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
Form fields without labels
criticalAutomated WCAG failurefix needs human checkRule 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>
Variant selectors without labels
criticalAutomated WCAG failurefix needs human checkRule 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>
Page has no title
seriousAutomated WCAG failurefix needs human checkRule 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
Embedded widgets (iframes) without a title
seriousAutomated WCAG failurefix needs human checkRule 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
Page language not declared
seriousAutomated WCAG failureRule 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
Malformed lists
seriousAutomated WCAG failureRule 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.
Content outside page regions
moderateBest practiceRule 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
Heading levels skipped
moderateBest practiceRule 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
| Criterion | Page | Result | Observed | Type · confidence |
|---|---|---|---|---|
| Mobile viewport and zoom | Home page | Pass | viewport="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" | measured · high |
| HTML weight and third-party scripts | Home page | Pass | 1 KB HTML, 3 script tags (3 third-party). | heuristic · medium |
| Server response time (HTML) | Home page | Not tested | Timing not measured (offline demo fetch). | measured · high |
| Skip-to-content link | Home page | Check Minor | No skip link among the first in-page links. | heuristic · low |
| Mobile viewport and zoom | Product page | Pass | viewport="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" | measured · high |
| HTML weight and third-party scripts | Product page | Pass | 1 KB HTML, 3 script tags (3 third-party). | heuristic · medium |
| Server response time (HTML) | Product page | Not tested | Timing not measured (offline demo fetch). | measured · high |
| Skip-to-content link | Product page | Check Minor | No skip link among the first in-page links. | heuristic · low |
| Product image text alternatives | Product page | Fail Critical | 1 of 3 product-area images have alt text (33%). | measured · high |
| Mobile viewport and zoom | Collection page | Pass | viewport="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" | measured · high |
| HTML weight and third-party scripts | Collection page | Pass | 1 KB HTML, 3 script tags (3 third-party). | heuristic · medium |
| Server response time (HTML) | Collection page | Not tested | Timing not measured (offline demo fetch). | measured · high |
| Skip-to-content link | Collection page | Check Minor | No skip link among the first in-page links. | heuristic · low |
| Mobile viewport and zoom | Cart | Pass | viewport="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" | measured · high |
| HTML weight and third-party scripts | Cart | Pass | 1 KB HTML, 3 script tags (3 third-party). | heuristic · medium |
| Server response time (HTML) | Cart | Not tested | Timing not measured (offline demo fetch). | measured · high |
| Skip-to-content link | Cart | Check Minor | No skip link among the first in-page links. | heuristic · low |
| Accessibility statement published | Whole site | Fail Serious | No link to an accessibility statement found on the home page (searched EN, DE, FR, PT, NL, ES, IT terms). | measured · medium |
| Overlay widget reliance | Whole site | Check Moderate | Overlay 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
| Criterion | Type | Method |
|---|---|---|
| Automated WCAG 2.1 A/AA rules | measured | axe-core rules run on the delivered HTML of each sampled page (jsdom, scripts not executed). |
| Accessibility statement published | measured | Search 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 reliance | measured | Match script sources against known overlay vendors. |
| Mobile viewport and zoom | measured | Read the viewport meta tag. |
| Product image text alternatives | measured | Share of <img> in the product page main area with non-empty alt. |
| Server response time (HTML) | measured | Time to first byte and full HTML download, one request per page from the scanner location, no browser rendering. |
| HTML weight and third-party scripts | heuristic | HTML bytes and count of external script tags; thresholds are rules of thumb. |
| Skip-to-content link | heuristic | Look for an early in-page link to the main content. |
| Colour contrast | partial | Tested 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 checkout | not tested | Requires scripted browser interaction; included in manual review add-on. |
| Checkout steps | not tested | Checkout 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.