Skip to content
StoreA11y

Shopify · 2.4.1 Bypass Blocks (Level A)

Embedded frames with no title on Shopify

Some <iframe> elements have no title attribute. A screen-reader user navigating by frame hears only "frame" and has to enter it to find out what it is. On a store these are usually embedded videos, review widgets, maps, or a chat bubble.

Frequently litigated

Unlabelled iframes typically hold video or reviews, and are pleaded as inaccessible content.

Which WCAG criterion this fails

  • Does not meet 2.4.1 Bypass Blocks (Level A)
  • Does not meet 4.1.2 Name, Role, Value (Level A)

How to fix it on Shopify

Everything below is done from Online Store > Themes > Edit code. Take a copy of the theme before editing.

  1. Add a title attribute describing the frame's purpose: title="Product demonstration video", title="Customer reviews", title="Store location map".
  2. For a video section, the iframe is generated by the theme — edit sections/video.liquid or snippets/video-tag.liquid.
  3. For a third-party embed (reviews, chat, Instagram feed) the iframe is injected by the app's script. Check the app settings for a title/label option; if none exists, contact the app vendor, and note it in the report as vendor-dependent.
  4. A frame that is purely decorative or serves only scripts should carry title plus aria-hidden="true" only if it holds nothing interactive.
  5. Do not reuse the same title on two frames on one page — they must be distinguishable.

Where this usually lives

sections/video.liquid, snippets/video-tag.liquid, and app embed blocks in the theme customizer

Paths given for Dawn and its derivatives (Sense, Craft, Refresh, Studio). A heavily customised theme may differ; the CSS selector in your scan report points at the exact element.

Code

<iframe src="https://www.youtube.com/embed/…"
        title="How to care for merino wool"
        loading="lazy"
        allowfullscreen></iframe>

How to confirm it is fixed

Re-run the scan. This rule should drop out of the findings entirely. If the instance count falls but does not reach zero, the same defect exists in another template — product cards and quick-view modals are the usual second home for it.

Effort: low. Rule id: frame-title (axe-core).