Back to Blog
·15 min read·A11yScope Team

Shopify Accessibility: How to Make Your Shopify Store WCAG Compliant

ShopifyAccessibilityWCAGE-commerce

# Shopify Accessibility: How to Make Your Shopify Store WCAG Compliant

Shopify makes it remarkably easy to launch an online store, but launching accessible is a different matter. The platform handles hosting, payment processing, and a polished storefront out of the box, yet the accessibility of what your customers actually experience depends on decisions Shopify has made for you, decisions your theme developer made, and decisions you make every time you add a product, install an app, or customize your store. Most Shopify stores fail basic WCAG 2.1 Level AA checks, and the store owners do not realize it until they receive a demand letter or lose a customer who simply could not use their site.

This guide covers where Shopify accessibility problems come from, what you can fix yourself, what requires theme-level changes, and where the platform limits your control entirely.

Shopify's Built-In Accessibility Features and Their Limitations

Shopify deserves credit for building certain accessibility foundations into the platform:

  • Semantic HTML structure. Shopify's Liquid templates use semantic elements like
    ,
  • Mobile-responsive framework. All current Shopify themes support responsive layouts and pinch-to-zoom, meeting WCAG requirements around content reflow.
  • Structured product data. Shopify separates structured fields (title, price, variants, description) from presentation, making it possible for themes to output accessible markup.
  • Alt text field for images. Every product image, collection image, and blog post image has a dedicated alt text field in the admin. The platform gives you the tool  Eit just does not require you to use it.

These foundations are real, but not enough on their own. Here is where the limitations start.

Shopify does not enforce accessibility standards on themes. The Theme Store has no accessibility certification requirement. Themes go through review for performance and code quality, but a theme can pass and still have significant WCAG failures in contrast, focus indicators, mobile menus, and keyboard interaction.

Shopify does not enforce accessibility on apps. Thousands of third-party apps inject their own HTML, CSS, and JavaScript into your storefront with no accessibility review gate. A single poorly coded review widget or popup can introduce violations across every page.

Checkout is partially locked down. On most plans, the checkout is controlled by Shopify and cannot be fully customized. Shopify's hosted checkout is reasonably accessible, but if there are issues, your ability to fix them is limited to the settings Shopify exposes.

Understanding this split is essential. The rest of this guide focuses on the areas where your decisions make the difference.

Common Accessibility Problems in Popular Shopify Themes

Your theme is the single largest factor in your store's accessibility. It controls the HTML structure, visual design, navigation, and interactive components on every page. Even Shopify's own free themes have had accessibility issues that were only fixed after community reports.

Navigation and Mobile Menus

The header navigation is the first interactive element customers encounter and one of the most common failure points:

  • Dropdown menus that only work on hover. Keyboard and touchscreen users cannot access subcategories if menus only reveal on mouse hover. Dropdowns must open with keyboard focus using Enter or Space.
  • Mobile hamburger menus without ARIA attributes. The menu button needs aria-expanded to communicate its open/closed state. Many themes render a correct icon but omit these attributes.
  • Missing focus indicators. Themes often suppress the browser's default focus outline without providing a replacement, leaving keyboard users unable to see where they are on the page.
  • No skip navigation link. A "Skip to content" link should be the first focusable element, letting keyboard users bypass the header. Many Shopify themes omit this.

Color Contrast Failures

Low color contrast is the most frequently detected WCAG violation across the web, and Shopify themes are no exception. The most common problem areas include:

  • Light gray text on white backgrounds, particularly for secondary information like "Compare at" prices, product tags, and footer links.
  • White text overlaid on product photography in hero banners and collection headers, where the contrast depends entirely on the image underneath and is often insufficient.
  • Placeholder text in search bars and form fields that fails the 4.5:1 contrast ratio required by WCAG 1.4.3.
  • Sale and badge colors that look vibrant visually but do not meet contrast minimums when rendered as text on a colored background.

Missing or Broken Focus Management

Beyond navigation, themes frequently fail focus management in interactive components:

  • Quick-view modals that open without moving focus into the modal, leaving keyboard users stranded on the element behind it. When the modal is closed, focus should return to the element that triggered it.
  • Image galleries and carousels that cannot be navigated with arrow keys and have no visible focus state on thumbnails.
  • Accordion and tab components in product descriptions or FAQ sections that lack role="tablist", role="tab", and role="tabpanel" attributes, making them opaque to screen readers.

How to Evaluate Your Theme

Before investing time in individual fixes, assess where your current theme stands:

  • Navigate your entire store using only the keyboard. Use Tab, Shift+Tab, Enter, Escape, and Arrow keys. Can you reach every link, button, menu, and form field? Can you open and close modals and menus? Can you add a product to the cart and reach the checkout?
  • Check focus visibility. As you tab through the site, is every focused element visibly highlighted? If focus disappears at any point, your theme is suppressing focus styles.
  • Test with a screen reader. VoiceOver on macOS or NVDA on Windows will reveal issues that visual testing cannot, such as missing button labels, unnamed form fields, and image links with no alt text.
  • Run an automated scan. A11yScope's free scanner will flag contrast failures, missing alt text, missing form labels, and other detectable WCAG violations across your store in seconds. This gives you a prioritized starting point.
  • Fixing Product Pages: Alt Text, Variant Selectors, and Price Announcements

    Product pages are the core of your store, and they carry several accessibility requirements that are unique to e-commerce.

    Product Image Alt Text

    Shopify gives you an alt text field for every product image, but it does not flag missing alt text or generate it automatically. Most Shopify stores have hundreds of product images with no alt text at all.

    How to write effective product alt text:

    • Describe what the image shows. "Women's ribbed cotton crew neck sweater in forest green, front view" is useful. "Sweater" is not.
    • Include details the image conveys beyond the product title: viewing angle, color shown, or how the product is being used.
    • Do not stuff keywords. Alt text is for users who cannot see the image, not for SEO.
    • For lifestyle images, describe the relevant context.
    • Each image of a product should have unique alt text reflecting what that specific shot shows.

    Bulk-editing alt text: For large catalogs, Shopify's CSV export/import can update alt text in bulk  Eexport your products, fill in the Image Alt Text column, and re-import.

    Variant Selectors

    When a customer selects a different variant, the displayed image, price, and availability may all change. Each update must be communicated to screen reader users, not just displayed visually.

    Common issues:

    • Color swatches that rely on color alone. If your theme shows color options as colored circles with no text label, users who cannot perceive color cannot identify them. Each swatch needs a visible label or aria-label with the color name.
    • Custom select dropdowns built with
      elements instead of native