Limen
Back to Limen

Shopify theme accessibility ranking: 49 themes tested

Updated 10 October 2026 · About 6 minutes to read

6 of 49 themes passed every automated check of the theme's own code: Craft, Crave, Halftone, Prestige, Ride, Taste.

Free themes did slightly better than paid ones. Median distinct failures: 1 for Shopify's 24 free themes, 2 for the 25 most popular paid themes.

22 of 49 have a control on the product page that a screen reader cannot identify or operate properly, such as a link with no name or a field with no label.

Your theme's failures are in every shop that uses it unchanged. That makes the theme the cheapest place to fix them, and the first thing to check before you buy one.

What we tested, and how

Every theme on the Shopify Theme Store has an official demo store, set up by the theme's developer. We tested Shopify's 24 free themes and the 25 most popular paid themes (by the Theme Store's own popularity sort, read on 10 October 2026). For each theme we opened three pages of its demo store: the home page, a collection and a product.

Each page was loaded in Chromium and its scripts were allowed to run. Anything the browser did not show (closed drawers, pop-ups waiting for a click, hidden copies of menus) was removed before the audit, so a theme is never marked down for something no visitor meets. Then the page went through the same engine as our free scanner.

No shop was measured and no merchant is named: these are the developers' own demo stores.

The ranking

Ranked by the number of different failures in the theme's code across the three pages, fewest first, then by how many times they occur. Failures that come from the demo's own content (image descriptions, link wording) are not counted, because your content replaces them.

RankThemeFree or paidDifferent failuresOccurrencesWhat fails
1Craftfree00none found
2Cravefree00none found
3Halftonepaid00none found
4Prestigepaid00none found
5Ridefree00none found
6Tastefree00none found
7Colorblockfree11headings that skip levels
8Conceptpaid11headings that skip levels
9Horizonfree11headings that skip levels
10Ignitepaid11headings that skip levels
11Originfree11headings that skip levels
12Publisherfree11no main heading on the page
13Refreshfree11no main heading on the page
14Sensefree11headings that skip levels
15Hyperpaid12headings that skip levels
16Spotlightfree12headings that skip levels
17Miropaid14headings that skip levels
18Tradefree14a form field with no label
19Dawnfree112a form field with no label
20Studiofree22headings that skip levels, no main heading on the page
21Be Yourspaid24headings that skip levels, a link with no name (the screen reader reads out the address)
22Releasepaid24headings that skip levels, no main heading on the page
23Ritualfree24headings that skip levels, a link with no name (the screen reader reads out the address)
24Skypaid24headings that skip levels, a field whose only label is placeholder text that vanishes on typing
25Sleekpaid25a form field with no label, headings that skip levels
26Palo Altopaid26a control the keyboard reaches but the screen reader is told to ignore, headings that skip levels
27Broadcastpaid28no main heading on the page, a field whose only label is placeholder text that vanishes on typing
28Symmetrypaid210a link with no name (the screen reader reads out the address), a field whose only label is placeholder text that vanishes on typing
29Enterprisepaid215headings that skip levels, a link with no name (the screen reader reads out the address)
30Tinkerfree217a link with no name (the screen reader reads out the address), no main heading on the page
31Tidepaid221an invalid ARIA role, no main heading on the page
32Dwellfree34a control the keyboard reaches but the screen reader is told to ignore, headings that skip levels, no main heading on the page
33Fusepaid34a button with no name, a link with no name (the screen reader reads out the address), no main heading on the page
34Savorfree36headings that skip levels, a link with no name (the screen reader reads out the address), no main heading on the page
35Beauvoirpaid37a form field with no label, headings that skip levels, no main heading on the page
36Risefree37a form field with no label, headings that skip levels, no main heading on the page
37Vesselfree38a control the keyboard reaches but the screen reader is told to ignore, headings that skip levels, a link with no name (the screen reader reads out the address)
38Wonderpaid310a control the keyboard reaches but the screen reader is told to ignore, a form field with no label, no main heading on the page
39Monopaid314a form field with no label, a label pointing at a field that is not there, a link with no name (the screen reader reads out the address)
40Pipelinepaid321a control the keyboard reaches but the screen reader is told to ignore, a form field with no label, a field whose only label is placeholder text that vanishes on typing
41Monkpaid323a form field with no label, a label pointing at a field that is not there, a link with no name (the screen reader reads out the address)
42Pebblepaid328headings that skip levels, a link with no name (the screen reader reads out the address), no main heading on the page
43Heritagefree47a control the keyboard reaches but the screen reader is told to ignore, headings that skip levels, a link with no name (the screen reader reads out the address), no main heading on the page
44Fabricfree48a control the keyboard reaches but the screen reader is told to ignore, headings that skip levels, a link with no name (the screen reader reads out the address), no main heading on the page
45Atelierfree410a control the keyboard reaches but the screen reader is told to ignore, headings that skip levels, a link with no name (the screen reader reads out the address), no main heading on the page
46Pitchfree410a control the keyboard reaches but the screen reader is told to ignore, headings that skip levels, a link with no name (the screen reader reads out the address), no main heading on the page
47Impulsepaid58a control the keyboard reaches but the screen reader is told to ignore, a button with no name, headings that skip levels, a link with no name (the screen reader reads out the address), no main heading on the page
48Vividpaid536a button with no name, a form field with no label, headings that skip levels, a label pointing at a field that is not there, a link with no name (the screen reader reads out the address)
49Localpaid621something clickable that the keyboard cannot reach, a form field with no label, headings that skip levels, a link with no name (the screen reader reads out the address), no main heading on the page, a field whose only label is placeholder text that vanishes on typing

Not ranked: Eurus (no demo store we could test).

Each theme's name opens its own page: every failure with an example from its demo store, what it means for a shopper, and how to fix it.

Three failures worth knowing about

Dawn's colour filter reads out a database ID

Dawn is Shopify's best-known free theme. On its collection page, each colour in the filter is a checkbox whose label holds only the colour swatch and a title containing an internal ID. The visible word, such as "Beige", is hidden from screen readers. In Chromium's accessibility tree the first checkbox is named "gid://shopify/Metaobject/69546672217". A blind shopper filtering by colour hears that, twelve times over.

The logo link in eight of Shopify's newer free themes has no name

Atelier, Fabric, Heritage, Pitch, Ritual, Savor, Tinker and Vessel share the same header code. The logo is a link to the home page that contains only the logo image, and the image's description is empty unless you write one. The theme does not fall back to the shop's name, so a screen reader announces "link" and nothing else. Fix: give your logo image a description (in Shopify: Content, then Files, then the logo, then "Alt text"), for example your shop's name.

Product carousels that the keyboard reaches but screen readers skip

In several themes the slides of a product carousel that are not on screen are marked aria-hidden="true", but the links inside them can still be reached with the Tab key. A keyboard user lands on a link that a screen reader is told does not exist. It is fixed in the theme code (the hidden slides need inert), so ask the theme's developer.

The most common failures

FailureWCAGThemes
Headings that skip levels1.3.130 of 49
No main heading on the page1.3.120 of 49
A link with no name (the screen reader reads out the address)2.4.4, 4.1.218 of 49
A form field with no label1.3.1, 4.1.211 of 49
A control the keyboard reaches but the screen reader is told to ignore4.1.210 of 49
A field whose only label is placeholder text that vanishes on typing3.3.25 of 49

What this does not tell you

Who made this

Limen, which makes an accessibility checker for small online shops. The audit code, the list of themes and the raw results for every page are kept with our research files, and we will send them to any theme developer who asks: hello@limen.ae. If you build one of these themes and have fixed a failure, tell us and we will re-test it.

Where to go from here