Sample report. This is a real audit we delivered in August 2026, with the client's name and URLs removed. The findings, counts and WCAG mapping are exactly as they were produced by our scanner. Your own report is generated the same way, from your live store. Get your free scan →

Accessibility Audit: examplestore.com

Prepared by Prometheus Accessibility (AccessRadar) · 2026-08-05 · automated WCAG 2.1 A/AA checks (axe-core 4.12.1)

7issue types
96affected elements
61critical
31serious
4moderate

Summary

We scanned 4 key pages of examplestore.com (homepage, collection page, product page, cart page). Shopify stores are template-driven, so an issue found on one product or collection page typically repeats across every page built from the same template and fixing the template fixes them all.

Fix these first (most impact for the least work):

  1. buttons a screen reader can't read (it can't tell what they do): 60 elements (critical)
  2. images with no alt text (a screen reader just says "image"): 1 element (critical)
  3. list items coded outside a real list (screen readers lose the structure): 21 elements (serious)

Homepage 5 issue types · 7 affected elements · 27 automated checks passed

https://examplestore.com/

critical buttons a screen reader can't read (it can't tell what they do) × 3

WCAG: 4.1.2 Name, Role, Value (Level A) (rule: button-name)

How to fix: Give every icon-only button a name a screen reader can announce: visible text, or an aria-label (e.g. aria-label="Open cart"). These are usually in the theme's header/product Liquid snippets.

Where it is on the page (3 elements)
button[type="reset"]
<button type="reset" class="btn btn--clear btn--close"></button>
li:nth-child(1) > .site-header__heart.wishlist-button
<button class="site-header__heart wishlist-button" style="width:14px">
#close-panel-button
<button type="button" id="close-panel-button" class="close-panel">

critical images with no alt text (a screen reader just says "image") × 1

WCAG: 1.1.1 Non-text Content (Level A) (rule: image-alt)

How to fix: Add descriptive alt text to each image. In Shopify: product images have an "alt text" field in the admin (Media); theme images set it in the theme editor or the section's Liquid. For auto-generated video preview images, set the alt in the section's Liquid or mark them decorative with an empty alt="".

Where it is on the page (1 element)
video > img
<img src="//examplestore.com/cdn/shop/files/preview_images/dec348e66edc488891c38d8b8a9ce18b.thumbnail.0000000000_small.jpg?v=1780550869">

serious areas of low-contrast text that are hard to read for low-vision shoppers × 1

WCAG: 1.4.3 Contrast, Minimum (Level AA) (rule: color-contrast)

How to fix: Raise the contrast of the flagged text to at least 4.5:1 against its background (large text: 3:1). Usually a color-setting change in the theme editor.

Where it is on the page (1 element)
#rich-text-01KVTDSM0HQECKJWWA0JDX7F24 > p > span
<span style="color: rgb(184, 184, 184); font-size: 8px; font-family: SurtLightExtended, Arial, 'Helvetica Neue', Helvetica, sans-serif; font-weight: 300; font-style: normal;">Some exclusions may apply.</span>

serious links with no readable text (a screen reader reads them as blank) × 1

WCAG: 2.4.4 Link Purpose, In Context (Level A) · 4.1.2 Name, Role, Value (Level A) (rule: link-name)

How to fix: Give every link readable text. If the link only wraps an image or icon, add an aria-label or ensure the image inside has alt text.

Where it is on the page (1 element)
.empty-title
<a href="/collections/prefall-2026-collection" class="empty-title no-hover" style="color: #fffef8;">
      <h1 class="super"></h1>
      <!--  -->
    </a>

moderate zooming blocked for shoppers who need to magnify (pinch-to-zoom disabled) × 1

WCAG: 1.4.4 Resize Text (Level AA) (rule: meta-viewport)

How to fix: Allow pinch-to-zoom: remove the "maximum-scale" and "user-scalable" restrictions (e.g. user-scalable=0) from the viewport <meta> tag in theme.liquid. Low-vision shoppers rely on zooming.

Where it is on the page (1 element)
meta[name="viewport"]
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">

Collection page 4 issue types · 56 affected elements · 27 automated checks passed

https://examplestore.com/collections/prefall-2026-collection

critical buttons a screen reader can't read (it can't tell what they do) × 51

WCAG: 4.1.2 Name, Role, Value (Level A) (rule: button-name)

How to fix: Give every icon-only button a name a screen reader can announce: visible text, or an aria-label (e.g. aria-label="Open cart"). These are usually in the theme's header/product Liquid snippets.

Where it is on the page (51 elements)
.btn--clear.btn--close[type="reset"]
<button type="reset" class="btn btn--clear btn--close"></button>
li:nth-child(1) > .site-header__heart.wishlist-button
<button class="site-header__heart wishlist-button" style="width:14px">
button[data-product="8183258906698"]
<button type="button" data-product="8183258906698" data-variant="43517215768650" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183259693130"]
<button type="button" data-product="8183259693130" data-variant="43517219536970" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183260807242"]
<button type="button" data-product="8183260807242" data-variant="43517224943690" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183257530442"]
<button type="button" data-product="8183257530442" data-variant="43517206822986" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183265230922"]
<button type="button" data-product="8183265230922" data-variant="43517251158090" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183259594826"]
<button type="button" data-product="8183259594826" data-variant="43517219438666" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183258742858"]
<button type="button" data-product="8183258742858" data-variant="43517214883914" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183259398218"]
<button type="button" data-product="8183259398218" data-variant="43517218750538" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183256744010"]
<button type="button" data-product="8183256744010" data-variant="43517203087434" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183258546250"]
<button type="button" data-product="8183258546250" data-variant="43517213573194" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183261954122"]
<button type="button" data-product="8183261954122" data-variant="43517230022730" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183258972234"]
<button type="button" data-product="8183258972234" data-variant="43517216129098" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183259725898"]
<button type="button" data-product="8183259725898" data-variant="43517219569738" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183258644554"]
<button type="button" data-product="8183258644554" data-variant="43517213671498" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183260119114"]
<button type="button" data-product="8183260119114" data-variant="43517221306442" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183263985738"]
<button type="button" data-product="8183263985738" data-variant="43517242605642" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183262380106"]
<button type="button" data-product="8183262380106" data-variant="43517233135690" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183256055882"]
<button type="button" data-product="8183256055882" data-variant="43517199286346" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183255990346"]
<button type="button" data-product="8183255990346" data-variant="43517198991434" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183260708938"]
<button type="button" data-product="8183260708938" data-variant="43517224058954" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183258447946"]
<button type="button" data-product="8183258447946" data-variant="43517213147210" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183264870474"]
<button type="button" data-product="8183264870474" data-variant="43517248045130" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183256809546"]
<button type="button" data-product="8183256809546" data-variant="43517203316810" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183257071690"]
<button type="button" data-product="8183257071690" data-variant="43517204234314" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183258939466"]
<button type="button" data-product="8183258939466" data-variant="43517215932490" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183264641098"]
<button type="button" data-product="8183264641098" data-variant="43517246406730" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183262412874"]
<button type="button" data-product="8183262412874" data-variant="43517233332298" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183260151882"]
<button type="button" data-product="8183260151882" data-variant="43517221503050" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183262117962"]
<button type="button" data-product="8183262117962" data-variant="43517231104074" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183263101002"]
<button type="button" data-product="8183263101002" data-variant="43517236248650" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183257497674"]
<button type="button" data-product="8183257497674" data-variant="43517206790218" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183264411722"]
<button type="button" data-product="8183264411722" data-variant="43517244342346" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183265067082"]
<button type="button" data-product="8183265067082" data-variant="43517249814602" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183260905546"]
<button type="button" data-product="8183260905546" data-variant="43517225599050" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8192141557834"]
<button type="button" data-product="8192141557834" data-variant="43549835558986" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183261134922"]
<button type="button" data-product="8183261134922" data-variant="43517227139146" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183257595978"]
<button type="button" data-product="8183257595978" data-variant="43517206888522" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183263821898"]
<button type="button" data-product="8183263821898" data-variant="43517242114122" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183265296458"]
<button type="button" data-product="8183265296458" data-variant="43517251715146" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183256285258"]
<button type="button" data-product="8183256285258" data-variant="43517199941706" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183264575562"]
<button type="button" data-product="8183264575562" data-variant="43517245816906" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183258677322"]
<button type="button" data-product="8183258677322" data-variant="43517214163018" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183256678474"]
<button type="button" data-product="8183256678474" data-variant="43517202628682" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183258284106"]
<button type="button" data-product="8183258284106" data-variant="43517212262474" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183262183498"]
<button type="button" data-product="8183262183498" data-variant="43517231464522" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183262871626"]
<button type="button" data-product="8183262871626" data-variant="43517235658826" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8183264936010"]
<button type="button" data-product="8183264936010" data-variant="43517248503882" class="smartwishlist ns-product-wishlist"></button>
button[data-product="8192764739658"]
<button type="button" data-product="8192764739658" data-variant="43551719522378" class="smartwishlist ns-product-wishlist"></button>
#close-panel-button
<button type="button" id="close-panel-button" class="close-panel">

serious areas of low-contrast text that are hard to read for low-vision shoppers × 1

WCAG: 1.4.3 Contrast, Minimum (Level AA) (rule: color-contrast)

How to fix: Raise the contrast of the flagged text to at least 4.5:1 against its background (large text: 3:1). Usually a color-setting change in the theme editor.

Where it is on the page (1 element)
#rich-text-01KVTDSM0HQECKJWWA0JDX7F24 > p > span
<span style="color: rgb(184, 184, 184); font-size: 8px; font-family: SurtLightExtended, Arial, 'Helvetica Neue', Helvetica, sans-serif; font-weight: 300; font-style: normal;">Some exclusions may apply.</span>

serious links with no readable text (a screen reader reads them as blank) × 3

WCAG: 2.4.4 Link Purpose, In Context (Level A) · 4.1.2 Name, Role, Value (Level A) (rule: link-name)

How to fix: Give every link readable text. If the link only wraps an image or icon, add an aria-label or ensure the image inside has alt text.

Where it is on the page (3 elements)
li[data-handle="aira-dress-polka-dot-luwak"] > .ns-product-media.ns-relative.ns-block > .ns-product-link.ns-h-100
<a href="https://examplestore.com/products/aira-dress-polka-dot-luwak" class="ns-product-link ns-block ns-w-100 ns-h-100">
li[aria-label="Product SUZETTE GOWN - TANGELO"] > .ns-product-media.ns-relative.ns-block > .ns-product-link.ns-h-100
<a href="https://examplestore.com/products/suzette-gown-tangelo" class="ns-product-link ns-block ns-w-100 ns-h-100">
.ns-next
<a href="https://examplestore.com/collections/prefall-2026-collection?page=2" class="ns-page-link ns-block ns-relative ns-next ">

moderate zooming blocked for shoppers who need to magnify (pinch-to-zoom disabled) × 1

WCAG: 1.4.4 Resize Text (Level AA) (rule: meta-viewport)

How to fix: Allow pinch-to-zoom: remove the "maximum-scale" and "user-scalable" restrictions (e.g. user-scalable=0) from the viewport <meta> tag in theme.liquid. Low-vision shoppers rely on zooming.

Where it is on the page (1 element)
meta[name="viewport"]
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">

Product page 5 issue types · 28 affected elements · 30 automated checks passed

https://examplestore.com/products/mast-eau-de-parfum

critical buttons a screen reader can't read (it can't tell what they do) × 3

WCAG: 4.1.2 Name, Role, Value (Level A) (rule: button-name)

How to fix: Give every icon-only button a name a screen reader can announce: visible text, or an aria-label (e.g. aria-label="Open cart"). These are usually in the theme's header/product Liquid snippets.

Where it is on the page (3 elements)
button[type="reset"]
<button type="reset" class="btn btn--clear btn--close"></button>
li:nth-child(1) > .site-header__heart.wishlist-button
<button class="site-header__heart wishlist-button" style="width:14px">
#close-panel-button
<button type="button" id="close-panel-button" class="close-panel">

serious areas of low-contrast text that are hard to read for low-vision shoppers × 2

WCAG: 1.4.3 Contrast, Minimum (Level AA) (rule: color-contrast)

How to fix: Raise the contrast of the flagged text to at least 4.5:1 against its background (large text: 3:1). Usually a color-setting change in the theme editor.

Where it is on the page (2 elements)
.pdp-main__selected-variation
<span class="pdp-main__selected-variation">Jade</span>
button[aria-controls="pdptab-nosto-2"]
<button class="tab-button" type="button" role="tab" aria-controls="pdptab-nosto-2" aria-selected="false">
          You May Also Like
        </button>

serious product/menu lists coded so screen readers mis-read them × 1

WCAG: 1.3.1 Info and Relationships (Level A) (rule: list)

How to fix: Keep only <li> elements (and script/template) as direct children of <ul>/<ol>. Slider and menu apps often inject <div>s into product-grid lists, so move them outside the list or convert the wrapper.

Where it is on the page (1 element)
ol
<ol class="breadcrumbs__list">
      <li><a href="/" title="Home">Home</a></li>

      








<span aria-hidden="true">/</span>
        <a href="/collections/all" title="SHOP">SHOP</a>
<span aria-hidden="true">/</span>
        
        <li>MAST EAU DE PARFUM</li>
    </ol>

serious list items coded outside a real list (screen readers lose the structure) × 21

WCAG: 1.3.1 Info and Relationships (Level A) (rule: listitem)

How to fix: Place every <li> inside a <ul> or <ol> parent. If a section renders items standalone, wrap the group in a <ul> in the section's Liquid.

Where it is on the page (21 elements)
.swiper-slide-active[data-handle="erin-earring-brushed-brass"][data-product="7401583444042"]
<li class="swiper-slide ns-product swiper-slide-active" data-product="7401583444042" data-handle="erin-earring-brushed-brass" style="width: 92.5px; margin-right: 10px;">
li[data-handle="tazia-shoulder-luwak"]
<li class="swiper-slide ns-product swiper-slide-active" data-product="8113700274250" data-handle="tazia-shoulder-luwak">
li[data-handle="baby-mimi-ballet-antique-white"]
<li class="swiper-slide ns-product swiper-slide-next" data-product="8113696374858" data-handle="baby-mimi-ballet-antique-white">
li[data-handle="baby-jana-top-off-white"]
<li class="swiper-slide ns-product" data-product="8113696276554" data-handle="baby-jana-top-off-white">
li[data-handle="cg-platform-off-white"]
<li class="swiper-slide ns-product" data-product="8113697161290" data-handle="cg-platform-off-white">
li[data-handle="stella-sandal-antique-white"]
<li class="swiper-slide ns-product" data-product="8140227575882" data-handle="stella-sandal-antique-white">
li[data-handle="claire-mule-pink-multi"]
<li class="swiper-slide ns-product" data-product="8186421215306" data-handle="claire-mule-pink-multi">
.swiper-slide.ns-product[data-product="8193399160906"]
<li class="swiper-slide ns-product" data-product="8193399160906" data-handle="the-caldera-clutch-matte-silver">
li[data-handle="lisse-clutch-silver"]
<li class="swiper-slide ns-product" data-product="8183260610634" data-handle="lisse-clutch-silver">
li[data-handle="neemo-earring-antique-brass"]
<li class="swiper-slide ns-product" data-product="8183261528138" data-handle="neemo-earring-antique-brass">
li[data-handle="eos-metal-clutch-brushed-brass"]
<li class="swiper-slide ns-product" data-product="8183258415178" data-handle="eos-metal-clutch-brushed-brass">
li[data-handle="ren-bag-black"]
<li class="swiper-slide ns-product" data-product="8183262937162" data-handle="ren-bag-black">
li[data-handle="ami-ring-brushed-brass"]
<li class="swiper-slide ns-product" data-product="8183256285258" data-handle="ami-ring-brushed-brass">
li[data-handle="ami-ring-antique-silver"]
<li class="swiper-slide ns-product" data-product="8183256219722" data-handle="ami-ring-antique-silver">
li[data-handle="gili-clutch-brass"]
<li class="swiper-slide ns-product" data-product="8183259398218" data-handle="gili-clutch-brass">
li[data-handle="bolla-clutch-ivory"]
<li class="swiper-slide ns-product" data-product="8183257268298" data-handle="bolla-clutch-ivory">
li[data-handle="eviana-clutch-brass"]
<li class="swiper-slide ns-product" data-product="8183258546250" data-handle="eviana-clutch-brass">
li[data-handle="fico-wristlet-antique-silver"]
<li class="swiper-slide ns-product" data-product="8133461344330" data-handle="fico-wristlet-antique-silver">
li[data-handle="amara-clutch-ivory"]
<li class="swiper-slide ns-product" data-product="8183256121418" data-handle="amara-clutch-ivory">
li[data-handle="amara-clutch-rosemary-multi"]
<li class="swiper-slide ns-product" data-product="8183256154186" data-handle="amara-clutch-rosemary-multi">
li[data-handle="yusra-earring-turquoise-multi"]
<li class="swiper-slide ns-product" data-product="8270875066442" data-handle="yusra-earring-turquoise-multi">

moderate zooming blocked for shoppers who need to magnify (pinch-to-zoom disabled) × 1

WCAG: 1.4.4 Resize Text (Level AA) (rule: meta-viewport)

How to fix: Allow pinch-to-zoom: remove the "maximum-scale" and "user-scalable" restrictions (e.g. user-scalable=0) from the viewport <meta> tag in theme.liquid. Low-vision shoppers rely on zooming.

Where it is on the page (1 element)
meta[name="viewport"]
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">

Cart page 3 issue types · 5 affected elements · 27 automated checks passed

https://examplestore.com/cart

critical buttons a screen reader can't read (it can't tell what they do) × 3

WCAG: 4.1.2 Name, Role, Value (Level A) (rule: button-name)

How to fix: Give every icon-only button a name a screen reader can announce: visible text, or an aria-label (e.g. aria-label="Open cart"). These are usually in the theme's header/product Liquid snippets.

Where it is on the page (3 elements)
button[type="reset"]
<button type="reset" class="btn btn--clear btn--close"></button>
li:nth-child(1) > .site-header__heart.wishlist-button
<button class="site-header__heart wishlist-button" style="width:14px">
#close-panel-button
<button type="button" id="close-panel-button" class="close-panel">

serious areas of low-contrast text that are hard to read for low-vision shoppers × 1

WCAG: 1.4.3 Contrast, Minimum (Level AA) (rule: color-contrast)

How to fix: Raise the contrast of the flagged text to at least 4.5:1 against its background (large text: 3:1). Usually a color-setting change in the theme editor.

Where it is on the page (1 element)
#rich-text-01KVTDSM0HQECKJWWA0JDX7F24 > p > span
<span style="color: rgb(184, 184, 184); font-size: 8px; font-family: SurtLightExtended, Arial, 'Helvetica Neue', Helvetica, sans-serif; font-weight: 300; font-style: normal;">Some exclusions may apply.</span>

moderate zooming blocked for shoppers who need to magnify (pinch-to-zoom disabled) × 1

WCAG: 1.4.4 Resize Text (Level AA) (rule: meta-viewport)

How to fix: Allow pinch-to-zoom: remove the "maximum-scale" and "user-scalable" restrictions (e.g. user-scalable=0) from the viewport <meta> tag in theme.liquid. Low-vision shoppers rely on zooming.

Where it is on the page (1 element)
meta[name="viewport"]
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">

Method & honest limits

Checks were run with axe-core 4.12.1 (the industry-standard accessibility engine) against the WCAG 2.1 Level A and AA rulesets, in a desktop Chromium browser (1280×720), on 2026-08-05. Every finding above comes from that scan, and nothing is estimated. This sample is the report as it was delivered on that date, kept unedited. Reports produced now run the WCAG 2.2 A and AA rulesets, which add criteria such as 2.5.8 Target Size (Minimum) on top of everything shown here.

Automated checks reliably catch code-level issues (the kind cited in demand letters), but they cannot judge everything, for example whether alt text is meaningful, or how the checkout feels with a screen reader end-to-end. A full conformance claim would also need a manual keyboard and screen-reader review. We are upfront about that: this audit is the map of what a scanner can prove today.

Next steps

Every issue above is fixable at the source, in the theme's code, not with an overlay widget. We offer a one-time, fixed-fee remediation for a typical Shopify store: we fix the flagged issues, re-run this same audit as evidence, and hand you a dated accessibility statement. Optional monitoring afterwards catches regressions when your theme or apps update. Reply to this email and we'll take it from there.