Use this checklist to audit your Shopify store's accessibility compliance. Click any criterion to expand Shopify-specific implementation guidance. Check items off as you complete them and your progress is tracked automatically.
Perceivable
Information and UI components must be presentable to users in ways they can perceive.
- All product images have descriptive alt text
- Alt text describes what the image shows ("Navy blue t-shirt, front view" not just "t-shirt")
- Decorative images use alt="" (empty alt attribute)
- Icons have text labels or ARIA labels
- Logo has alt text with company name
- Products → Each product → Media → Click image → "Add alt text"
- Theme code: Search for <img tags without alt attributes
- Audio-only content has text transcript
- Video-only content has text description or audio track
- Any audio files uploaded for product demos
- Video content in product descriptions
- Product videos have captions
- Tutorial videos have captions
- Promotional videos have captions
- Upload videos to YouTube with captions, then embed
- Or provide transcript below video
- Videos have audio description or text transcript
- Important visual information is described in audio or text
- Provide transcript for product videos
- Describe what's shown visually
- Proper heading hierarchy (H1 → H2 → H3, no skipping)
- One H1 per page (usually product title or page title)
- Form labels associated with inputs using
forandid - Lists use <ul>, <ol>, or <dl> tags (not just line breaks)
- Tables use proper <th> headers for data tables
- Use WAVE browser extension to check heading structure
- Right-click form fields → Inspect → verify label association
- Theme code: Check heading tags in Liquid templates
- Content reading order makes sense when read linearly
- Tab order follows logical flow
- CSS doesn't visually reorder content in confusing ways
- Press Tab repeatedly and verify focus moves logically
- Use screen reader to hear content order
- Instructions don't rely only on shape ("click the round button")
- Instructions don't rely only on location ("click the button on the right")
- Instructions don't rely only on sound ("listen for the beep")
- Review all instructional text in checkout
- Review product assembly/usage instructions
- Color isn't the only way to convey information
- "In Stock" / "Out of Stock" use text, not just green/red
- Required form fields have asterisk or "required" text, not just red border
- Error messages use text, not just red highlighting
- Check product availability indicators
- Check form validation errors
- Check sale/discount badges
- Auto-playing audio can be paused or stopped
- Auto-playing audio is under 3 seconds OR has controls
- Background music on homepage
- Auto-play product videos
- Normal text has 4.5:1 contrast ratio minimum
- Large text (18pt+ or 14pt+ bold) has 3:1 contrast ratio minimum
- Tested with WebAIM Contrast Checker
- Test body text color vs background
- Test button text vs button background
- Test navigation text vs background
- Common failures: light gray (#999) on white - only 2.85:1, fails
- Text can be resized to 200% without loss of content or functionality
- No horizontal scrolling at 200% zoom
- Layout doesn't break when zoomed
- Zoom browser to 200% (Cmd/Ctrl + plus multiple times)
- Verify all content still readable and accessible
- Check on mobile too
- Text isn't presented as images (unless necessary for logos)
- Actual text used instead of text in images
- If text in images is necessary, alt text matches exactly
- Promotional banners (use HTML text overlay instead)
- Sale badges (use CSS text instead of image badges)
- Content reflows at 320px width without horizontal scrolling
- Mobile-responsive design works properly
- No pinch-zoom required to read content on mobile
- Resize browser to 320px wide
- Test on actual mobile device
- Verify no horizontal scrolling needed
- UI components have 3:1 contrast ratio
- Icons and buttons have sufficient contrast
- Form field borders have 3:1 contrast
- Test button borders
- Test form input borders
- Test icon colors
- Text remains readable when spacing is adjusted
- Line height 1.5x font size
- Paragraph spacing 2x font size
- No loss of content when spacing increases
- Use browser extension to test text spacing
- Verify content doesn't get cut off
- Tooltips can be dismissed without moving pointer/focus
- Tooltips remain visible when pointer hovers over them
- Tooltips persist until user dismisses or removes hover/focus
- Product quick-view tooltips
- Size guide pop-ups
- Hover effects on navigation
Operable
User interface components and navigation must be operable.
- All functionality available via keyboard
- Can add products to cart with keyboard
- Can complete checkout with keyboard only
- Can navigate entire site with Tab, Enter, Space, Arrow keys
- Unplug mouse, navigate entire site with keyboard
- Complete a test purchase using only keyboard
- Common failures: cart drawer can't be closed, dropdowns don't work
- Keyboard focus never gets trapped
- Can escape from all modals/pop-ups with Escape key
- Can tab out of all widgets and components
- Cart drawer doesn't trap focus
- Tab through cart drawer, verify can escape
- Tab through modals, verify Escape key works
- Tab through navigation dropdowns
- Single character shortcuts can be turned off or remapped
- Single key shortcuts only work when component has focus
- Review any keyboard shortcuts implemented
- Typically not an issue for standard Shopify stores
- User can turn off, adjust, or extend time limits
- Session timeouts give 20-second warning
- User can extend timeout before it expires
- Checkout session timeout
- Cart expiration warnings
- Auto-updating content can be paused, stopped, or hidden
- Carousels have pause button
- Auto-scrolling content can be stopped
- Homepage carousel/slideshow
- Auto-playing product video galleries
- Rotating testimonials
- Content doesn't flash more than 3 times per second
- No flashing animations that could trigger seizures
- Animated GIFs in product images
- Loading animations
- Promotional banners with flashing effects
- "Skip to main content" link at top of page
- Skip link appears on keyboard focus
- Skip link jumps to main content area
- Press Tab on homepage (before clicking anything)
- Should see "Skip to main content" link appear
- Pressing Enter should jump past navigation
<a href="#main-content" class="skip-link">Skip to main content</a>
- Every page has unique, descriptive title
- Page title describes page content
- Format: "Page Name – Store Name"
- Check browser tab title on each page type
- Product pages should show product name
- Collection pages should show collection name
- Tab order follows logical reading order
- Focus doesn't jump randomly around page
- Tab order makes sense for completing tasks
- Press Tab repeatedly through entire page
- Verify focus moves in logical order
- Check cart and checkout especially
- Link text describes where link goes
- Avoid generic "Click here" or "Read more" without context
- Use "Learn more about [Product Name]" instead of just "Learn more"
- Review all "Read more", "Click here", "Learn more" links
- Add context to generic link text
- At least two ways to find pages (navigation menu + search)
- Sitemap available
- Related products provide alternative navigation
- Main navigation menu exists
- Search function works
- Sitemap linked in footer (or exists at /sitemap.xml)
- Headings describe topic or purpose
- Form labels describe what input is for
- Headings and labels are clear and descriptive
- Review all headings for clarity
- Review all form labels
- Use "Email address" not just "Email"
- Keyboard focus indicator always visible
- Clear outline on focused elements
- Never use outline: none without replacing with visible alternative
- Press Tab and watch for visible outline/highlight
- Check buttons, links, form fields all have visible focus
- Common failure: theme CSS removes outline
a:focus, button:focus, input:focus {
outline: 2px solid #1a6ef5;
outline-offset: 2px;
}
- All multi-point or path-based gestures have single-pointer alternative
- Pinch zoom can be done with +/- buttons
- Swipe gestures have click/tap alternative
- Image zoom functions
- Carousel/slideshow navigation
- Product image galleries
- Click events trigger on "up" event (mouse release)
- User can abort action by moving away before releasing
- No critical actions triggered on "down" event only
- Test "Add to Cart" button (should trigger on release, not press)
Understandable
Information and the operation of user interface must be understandable.
- HTML lang attribute set on page
- <html lang="en"> for English stores
- View page source, check <html> tag
- Should see lang="en" or appropriate language code
- Focusing on element doesn't trigger unexpected changes
- Tabbing to form field doesn't submit form
- Focus doesn't open pop-ups or navigate away
- Tab through forms without changing anything
- Verify nothing unexpected happens
- Changing input doesn't trigger unexpected changes
- Selecting variant doesn't auto-add to cart
- Changing quantity doesn't auto-update cart
- Change product variants (size, color)
- Change quantity
- Verify requires explicit "Add to Cart" click
- Form errors clearly identified
- Error messages describe what's wrong
- Error messages associated with problem field
- Try submitting forms with errors
- Verify clear error messages appear
- Screen reader announces errors
- All form fields have visible labels
- Instructions provided where needed
- Format requirements stated (e.g., "MM/DD/YYYY")
- Every form input has visible label
- Required fields marked clearly
- No placeholder-only labels
- Content in different language has lang attribute
- Product descriptions in French have lang="fr"
- If you have multilingual content, verify lang attributes
- Navigation menu appears in same location on all pages
- Navigation order stays consistent
- Footer links stay consistent
- Navigation same on all pages
- Footer same on all pages
- Same icons mean same thing throughout site
- Shopping cart icon always means cart
- Search icon always means search
- Icons used consistently
- Buttons with same function have same label
- Error messages suggest how to fix
- "Email format invalid" → "Please enter valid email (example@domain.com)"
- Provide examples of correct format
- Submit forms with various errors
- Verify helpful suggestions provided
Robust
Content must be robust enough to be interpreted by a wide variety of assistive technologies.
- HTML validates without major errors
- No duplicate IDs on same page
- Elements have complete start and end tags
- Use W3C HTML Validator: validator.w3.org
- Fix any parsing errors found
- All UI components have accessible name
- All UI components have role (button, link, etc.)
- Component state communicated (expanded, selected, etc.)
- Custom dropdowns have proper ARIA
- Accordions announce expanded/collapsed state
- Tabs announce selected tab
- Status messages announced to screen readers
- "Item added to cart" announced via ARIA live region
- Form submission success announced
- Loading/processing states announced
- Add product to cart → screen reader should announce
- Submit form → success message announced
- Error occurs → error announced automatically
<div aria-live="polite" aria-atomic="true"
class="sr-only" id="status-messages"></div>
Shopify-Specific Critical Checks
These areas are the most common failure points on Shopify stores - test each one carefully.
Cart Accessibility
- Cart drawer opens and closes with keyboard
- Cart updates announced to screen readers
- Quantity controls keyboard accessible
- Remove item buttons keyboard accessible
Checkout Accessibility
- All form fields labeled properly
- Payment fields keyboard accessible
- Shipping options selectable with keyboard
- Order review clearly presented
Product Pages
- Variant selectors keyboard accessible
- Color swatches have text labels (not color-only)
- Size selectors properly labeled
- Image galleries keyboard navigable
Navigation
- Dropdown menus work with keyboard
- Mobile menu keyboard accessible
- Search function keyboard accessible
Testing Tools
Use a combination of automated and manual testing to catch all violations.
WAVE Extension
Visual accessibility evaluation tool that identifies errors directly on your page.
wave.webaim.org →Axe DevTools
Industry-standard accessibility testing built into Chrome DevTools for developers.
deque.com/axe →Lighthouse
Built into Chrome DevTools. Run an accessibility audit with one click.
Chrome DevTools →Keyboard Navigation
Unplug your mouse and navigate your entire store using only the keyboard.
Our testing process →Screen Readers
NVDA (Windows, free) and VoiceOver (Mac, built-in) for real assistive tech testing.
Download NVDA →Contrast Checker
Test any color combination for WCAG-compliant contrast ratios instantly.
WebAIM Checker →