Home › Guides › Shopify Theme Detection
A transparent look at what signals StoreIntel uses to identify a store's Shopify theme, why accuracy exceeds 95% for standard themes yet fails completely on custom builds, what "custom theme" actually means in practice, and the specific conditions under which detection reliably fails.
When you visit any Shopify store, your browser downloads HTML, CSS, and JavaScript files served
by Shopify's CDN. All of that is public — it is the same data you see when you press
Cmd+U
to view source. Theme detection is the process of reading those public files and working backwards
to identify which theme produced them.
Every Shopify theme — Dawn, Prestige, Impulse, and the rest — writes HTML in a distinctive way. The CSS classes it uses, the asset file paths it references, the JavaScript namespaces it registers, and sometimes comments left in the markup all add up to a unique fingerprint. A detection tool builds a database of these fingerprints and compares incoming HTML against them.
StoreIntel does not access any Shopify admin data, partner accounts, or internal APIs to do this. Everything is inferred from the public HTTP response — the same information available to anyone with a browser and 10 minutes.
Theme detection combines multiple signal types. Stronger signals give more confident matches; weaker signals are used as corroborating evidence only.
product-form__cart-submit;
Prestige uses a completely different naming scheme. Matching a cluster of co-occurring
class names produces a high-confidence result.
window.theme,
window.Shopify.theme,
or vendor-prefixed names). These are useful corroborating signals but are less unique
than CSS classes since many themes adopt similar conventions.
<meta name="theme"> tag.
These are easy to strip and unreliable as a standalone signal, but useful when other
signals are absent or ambiguous.
StoreIntel's theme detection accuracy exceeds 95% for standard Shopify themes. That headline figure deserves unpacking, because accuracy varies significantly by theme type and degree of customisation.
Where accuracy is highest (close to 100%): stores running popular, unmodified free themes — Dawn, Refresh, Sense, Craft — are almost always correctly identified. These themes have large install bases, well-documented HTML output, and merchants who rarely rename their CSS classes. The sheer number of Dawn stores means our fingerprint database for it is comprehensive and continuously validated.
Where accuracy is slightly lower (80–95%): paid themes (Prestige, Impulse, Shrine PRO) are more often customised by the merchant or their developer — colours, fonts, section reordering. Surface-level customisation rarely erases the underlying fingerprint, but it introduces enough noise to occasionally produce a low-confidence result.
Where accuracy is low or zero: ground-up custom themes built by a development agency for a specific merchant have no fingerprint in any detection database. Headless Shopify implementations (Next.js, Nuxt, Hydrogen) do not use Liquid templates at all, so the HTML they produce contains none of the usual theme signals. Both of these cases return a "no match" result.
Understanding when detection breaks is as important as understanding when it works.
| Scenario | What happens | Frequency |
|---|---|---|
| Ground-up custom theme | No match — unique codebase, no known fingerprint | Rare (<5% of stores) |
| Headless / composable store | No match — HTML from React/Vue, not Liquid | Rare but growing |
| Heavy theme customisation | Low confidence — fingerprint partially erased | Common for paid themes |
| Page builder overrides layout | False positive risk — GemPages / PageFly HTML masks theme | Moderate (health, DTC niches) |
| White-labelled theme | Matched to base theme — may miss vendor branding | Uncommon |
| Theme recently updated | Stale fingerprint — new HTML not yet in database | Temporary; fixed at next update |
| Password-protected store | No match — only the login page is scraped | Common for pre-launch stores |
"Custom theme" is a spectrum, not a binary. When a store shows "custom" or "undetected" in StoreIntel, it could mean any of the following — and they have very different implications for what you can infer:
The practical takeaway: if StoreIntel returns "no match" for a competitor, it tells you they have invested significantly in their front-end — either through developer time or via an agency. That is itself a signal about their operational maturity.
StoreIntel's detection process starts with the public storefront. When a store URL is submitted to the Theme Detector, the tool fetches the store's homepage HTML, parses it for the signals described above, and returns the highest-confidence match from the fingerprint database.
The fingerprint database is built and maintained by analysing known theme demos and documented theme HTML on the Shopify Theme Store. When Shopify releases a new theme version or a major theme update ships (which changes HTML structure), the fingerprint is updated accordingly. Theme Store pages explicitly document their CSS architecture for developers, which provides authoritative fingerprint data.
The broader store dataset powering StoreIntel's app and theme rankings was last collected and analysed in June 2026. It represents a snapshot of publicly accessible Shopify stores at that point in time. Stores that have since migrated to a different theme will reflect their June 2026 state until the dataset is refreshed.
One important boundary: StoreIntel's data is derived entirely from public storefronts. It does not use the Shopify Partner API, admin OAuth flows, or any privileged access path. Co-occurrence data (which apps and themes appear together) is a statistical inference from observed co-installations, not a read from Shopify's internal records.
StoreIntel analyses a store's public HTML for theme-specific signals: CSS class names unique to a theme, asset file paths that include the theme name or a theme-specific identifier, JavaScript namespace variables set by the theme's scripts, and occasionally HTML comments or meta tags. Each known theme leaves a characteristic pattern. Detection matches incoming HTML against a database of these patterns.
Theme detection accuracy exceeds 95% for standard Shopify themes. It drops significantly when a merchant has made deep code-level customisations, uses a page builder that replaces large portions of the theme layout, or runs a headless implementation. Note that app detection is a separate, harder problem — app detection accuracy is approximately 60%, reflecting how many apps operate server-side with no public HTML footprint. See the failure modes table above for the theme-specific breakdown.
The term covers a wide spectrum. Most "custom themes" are heavily modified standard themes — a developer bought Prestige or Dawn and rewrote significant sections of the HTML. A smaller minority are true ground-up builds from a blank Liquid scaffold, and a growing segment are headless implementations using React or Vue. The last two are undetectable; the first is often still partially identifiable.
Yes, with deliberate effort. A developer would need to rename all theme-specific CSS classes, change asset file paths, strip source comments, and override JavaScript namespace names. This takes real time and most merchants have no reason to do it. Stores that are undetectable are usually that way because of heavy legitimate customisation, not active obfuscation.
No. Headless stores (built with Next.js, Nuxt, Remix, or Shopify Hydrogen) do not use Shopify's Liquid theme engine, so their HTML contains none of the usual theme signals. StoreIntel will return a "no match" or "uncertain" result for confirmed headless stores.
The fingerprint database is updated when new themes are added to the Shopify Theme Store or when major theme versions release structural HTML changes. The store dataset underlying our theme rankings and co-occurrence data was last updated in June 2026.
False positives most commonly occur when two themes share similar CSS naming conventions, or when a page builder (GemPages, PageFly) replaces enough of the theme's HTML that the remaining signals point to a different theme. When confidence is low, StoreIntel surfaces the uncertainty rather than asserting a wrong answer.
Continue exploring theme intelligence: