Limen
Back to Limen

Is the Vivid Shopify theme accessible?

Updated 10 October 2026 · Tested on the theme's official demo store

5 different failures in Vivid's own code, including on the product page (36 occurrences across three pages), checked against WCAG 2.1 Level A and AA.

Rank 48 of 49 in our Shopify theme accessibility ranking. Vivid is a paid theme.

On the product page: a form field with no label. That is the page where a shopper chooses a size and adds to cart.

Every shop that runs Vivid without changes to its code has the same failures, so the theme is the cheapest place to fix them.

What fails in Vivid's own code

A form field with no label

WCAG 1.3.1, 4.1.2, Level A · Found on the home page (3×), collection page (5×), product page (2×)

A screen reader user reaches the field and hears only its type ("edit text", "checkbox") with no idea what to enter or choose. This one is on the product page, where people decide to buy.

Example from the demo store's product page:

<input class="search__input field__input" id="Search-In-Modal" type="search" name="q" value="" placeholder="Search" role="combobox" aria-expanded="false" aria-…

What the check found: No label, aria-label, aria-labelledby or title. It has a placeholder ("Search") but a placeholder is not a label — it disappears the moment the user types.

How to fix it: Give every field a label element tied to it with for and id. It can be visually hidden if the design has no room for it, but it has to be there.

A link with no name

WCAG 2.4.4, 4.1.2, Level A · Found on the home page (12×), collection page (5×)

A screen reader announces "link" and nothing else, or reads out the web address, so a blind shopper cannot tell where it goes. It is usually an icon link or a logo image with an empty description.

Example from the demo store's collection page:

<a href="/products/curve-half-eternity-moissanite-wedding-band-half-eternity-band-curve-moissanite-band-1?variant=41281241743417" class="color-swatch h4 color-…

What the check found: Link contains no text, no aria-label, and no image with alt text. It appears to be an icon-only link. A screen reader will announce the destination URL instead.

How to fix it: Give the link text a screen reader can read: visible text, a description (alt text) on the image inside it, or an aria-label on the link. For a logo, your shop's name is the right text.

A button with no name

WCAG 4.1.2, Level A · Found on the home page (4×)

An icon-only button (a cross, an arrow, a magnifier) is announced as "button", with no hint of what it does.

Example from the demo store's home page:

<button id="quick-add-7039831769145-submit" type="submit" name="add" class="outline shoppable-video-button" aria-haspopup="dialog" aria-labelledby="quick-add-7…

What the check found: Button contains no text and has no aria-label.

How to fix it: Add text a screen reader can read inside the button, hidden visually if the design needs it, or an aria-label that says what the button does ("Close", "Next slide", "Search").

A label pointing at a field that is not there

WCAG 1.3.1, Level A · Found on the collection page (3×)

The label's for attribute names an id that no field has, so the field it was meant for ends up with no name.

Example from the demo store's collection page:

<label for="SortBy">

What the check found: Label references id "SortBy", but no element on the page has that id.

How to fix it: Make the label's for value match the field's id exactly. It usually breaks when a section is duplicated and the ids are made unique but the labels are not.

Headings that skip a level

WCAG 1.3.1, Level A · Found on the home page (1×), product page (1×)

Screen reader users move around a page by its headings. A jump from a level-2 heading to a level-4 one suggests a missing section and makes the page harder to scan.

Example from the demo store's product page:

<h3>

What the check found: Jumps from <h1> to <h3>, skipping 1 level(s).

How to fix it: Change the heading tags so levels go down one step at a time, and keep the look with CSS. Pick heading levels for the page's structure, not for their size.

Found in the demo's content, which yours replaces

These come from the images and words the theme's developer put in the demo store, not from the theme's code, so they do not count against Vivid. They are worth knowing because the same mistakes are easy to make when you add your own content.

Checked, not counted

What this does not tell you

Check your own shop

Run the free check on your shop's pages. It needs no account and lists every confirmed failure with its WCAG criterion, including the ones your apps and content add. If you want every occurrence with the exact Shopify code to fix it, that is what the Fix Pack is for: $99, once.

How Vivid compares

2 other paid themes had no confirmed failure in its own code: Halftone, Prestige.

Next to it in the ranking: Impulse (rank 47, 5 failures) · Local (rank 49, 6 failures).

All 49 themes, ranked, with the method and its limits.

How we tested

We opened three pages of the official Vivid demo store in Chromium and let its scripts run. Anything the browser did not show was removed, so the theme is never marked down for something no visitor meets. Then each page went through the same engine as our free check. The pages tested:

This is the developer's own demo store; no merchant's shop was measured. If you make Vivid and have fixed something here, write to hello@limen.ae and we will re-test it.