</> JMS Dev Lab
Services Pricing About Blog Contact Partners Free Tools Get in Touch
Get in Touch
  1. Home
  2. /
  3. Blog
  4. /
  5. How to Speed Test Your Shopify Theme

How to Speed Test Your Shopify Theme (And What To Do When It Fails)

20 April 2026

Disclosure: ThemeSweep is built by JMS Dev Lab, the publisher of this blog. This article is mostly about the free diagnostic tools anyone can use. ThemeSweep comes up near the end because it fixes the specific problem most merchants uncover.

The Moment You Realise Something Is Wrong

You launch a campaign. Traffic arrives. The email converted, the ad spend landed, the Instagram story did its job. Visitors are on your product page. And then they leave.

You check Google PageSpeed Insights out of curiosity and see a mobile score of 38. You have no idea what that number means, whether it is the cause of the flat conversion rate, or what to do about it. So you close the tab and tell yourself you will deal with it later.

Six months later, the score is still 38. Every campaign you have run since has been leaking money into the gap between "visitor arrives" and "page is actually usable." A 1-second delay in mobile load time reduces conversions by around 7%, and most underperforming Shopify themes are losing three to five seconds they do not need to lose.

This post is the diagnostic step I wish every Shopify merchant would run once a quarter. It takes about 20 minutes. You need no technical skill and no paid tools. At the end, you will know exactly what is slowing your store down and what to do next.

Step 1: Run the Three Free Tools That Actually Matter

There are dozens of speed-testing tools. You only need three. Each one measures something slightly different, and you want all three data points before you decide what to fix.

Google PageSpeed Insights

URL: pagespeed.web.dev. Paste your store URL in, wait 30 seconds, and read the mobile score first. Mobile is what Google ranks on and what the majority of Shopify traffic arrives on.

What to look at:

  • Performance score — the big number at the top. Aim for 70+ on mobile. Anything under 50 is an active problem.
  • Largest Contentful Paint (LCP) — how long until the main above-the-fold content is visible. Good: under 2.5s. Poor: over 4s.
  • Total Blocking Time (TBT) — how long JavaScript is blocking the browser from responding to the user. Good: under 200ms. Poor: over 600ms.
  • Cumulative Layout Shift (CLS) — how much the page jumps around while loading. Good: under 0.1. Poor: over 0.25.

Run the test on your homepage, a collection page, and a product page. Mobile scores are often worst on product pages because that is where the most apps inject the most code.

GTmetrix

URL: gtmetrix.com. Free account gets you one test at a time with a clear waterfall chart. This is the tool you will spend the most time with.

What to look at:

  • Waterfall tab — every HTTP request your page makes, in order, with load times. This is where dead code from uninstalled apps becomes visible.
  • Total page size — how many MB the page weighs. Anything over 3MB on mobile is too heavy.
  • Number of requests — how many files the browser has to fetch. A healthy Shopify product page is under 80 requests. Many bloated stores sit at 150+.

Shopify's Built-In Web Performance Report

In your Shopify admin, go to Analytics → Reports → Web performance. Shopify runs its own Core Web Vitals checks on your store using real visitor data (not synthetic tests). This is the closest thing you have to what Google actually sees when it decides your search ranking.

Shopify grades each metric as Good, Needs Improvement, or Poor. If LCP or TBT is Poor, that is the thing to fix first.

Step 2: Read the Waterfall Like a Detective

Open your GTmetrix waterfall chart for a product page. You are looking for three specific smells.

Smell 1: Requests to domains you do not recognise. If your theme is loading JavaScript from cdn.some-reviews-app.com but you uninstalled that reviews app four months ago, that is dead code. The app is gone. The code in your theme is still fetching from its CDN on every page view. Sometimes the CDN returns a 404, sometimes it hangs, but it always wastes time.

Smell 2: Long bars on scripts that load before the main content. Render-blocking scripts are the reason LCP numbers are bad. A 1.5-second bar on a JavaScript file at the top of the waterfall means your visitor is staring at a blank screen for 1.5 seconds before anything useful appears.

Smell 3: Large image files. Any image over 500KB on a mobile page is a problem. Hero images over 1MB are common and almost always fixable with compression or format conversion (WebP).

Make a list of every suspicious request with its domain name and size. You will need it in the next step.

Step 3: Work Out What Is Actually Yours Versus What Is Leftover

Here is where most merchants give up. You have a list of suspicious scripts loading from domains you do not recognise. But which ones belong to apps you are still using (leave alone) and which ones belong to apps you uninstalled months ago (safe to remove)?

This is harder than it sounds. When you uninstall a Shopify app, the app disappears from your admin but the code it injected into your theme stays behind. Every Liquid snippet, every stylesheet reference, every inline script — all of it persists until something explicitly removes it. Shopify does not do this. The app developer does not do this. Your theme keeps loading it forever.

The manual process is painful: open your theme code editor, search for every domain you flagged in GTmetrix, cross-reference each match against your list of currently installed apps in Settings → Apps and sales channels, and only delete what matches an uninstalled app.

If you have cycled through ten or more apps over your store's lifetime, this takes hours and it is easy to make a mistake. Delete the wrong snippet and your reviews widget disappears or your currency converter breaks. A safer path exists.

Step 4: Use ThemeSweep to Do the Cross-Reference Automatically

ThemeSweep is the tool I built to solve exactly this problem. It reads your current installed-apps list from Shopify's API, scans your theme files for known app code signatures, and only flags code that belongs to apps you have already uninstalled. It never flags code from an app you are still using, because it checks first.

A full scan takes under 60 seconds. You get a report showing every piece of orphaned code in your theme, grouped by the uninstalled app it came from. Before you remove anything, ThemeSweep automatically backs up your theme so you can restore with one click if something unexpected happens.

For most stores, removing the flagged dead code takes the PageSpeed score up by 15 to 30 points, drops LCP by 1 to 3 seconds, and cuts the total number of requests by a third. These are not hypothetical numbers — these are the typical results from the waterfall smells I described above, because dead code is the single biggest cause of them.

ThemeSweep plans start at $4.99/mo with a 14-day free trial. Scan your store and see the flagged list before you commit to anything.

Step 5: Fix The Remaining Issues In The Right Order

Dead code is usually the biggest win, but it is not the only one. After running ThemeSweep, re-run PageSpeed Insights and GTmetrix. If you still have issues, tackle them in this order:

  1. Oversized images — Use a tool like TinyIMG or Shopify's built-in image optimisation. Convert PNG and JPG to WebP where possible.
  2. Render-blocking scripts from apps you are still using — Check whether each active app has an "async load" setting. Many do, and it is off by default.
  3. Unused CSS from your theme — Most Shopify themes ship with CSS for every possible layout option, even ones you do not use. This is harder to clean up and I would only touch it after the above two are sorted.
  4. Font loading — Custom fonts can easily add a second to LCP. Use font-display: swap in your theme settings or limit yourself to one font family.

Re-run all three speed tests after each change. You want to see the numbers moving in the right direction, not guess. If a change does not improve the scores, undo it.

How Often Should You Run This?

Every quarter is a reasonable cadence. Also run the speed test any time you:

  • Install a new app (check for a before/after speed hit)
  • Uninstall an app (the code almost certainly stayed behind)
  • Update your theme
  • Launch a big campaign (know the baseline before you send traffic)

The merchants who keep their stores fast are not the ones with special knowledge. They are the ones who check the numbers regularly and act on what they find.

Related Reading

  • The Hidden Cost of Uninstalling Shopify Apps — Why the code stays behind and what it costs you over time.
  • Signs Your Shopify Theme Has Dead App Code — Symptoms to watch for before you even run a speed test.
  • ThemeSweep vs Cleanify Code — Honest comparison of the two main dead-code-removal tools.
  • Shopify Theme Audit Tools Compared — Broader overview of theme-health tools and what each actually does.

Need Help with Your Shopify Store?

Whether you have questions about theme performance, need help interpreting a speed test, or want a hand cleaning up after years of app installs, we are here to help. Get in touch and tell us what the numbers are showing you.

</> JMS Dev Lab

Custom software for businesses that are too unique for off-the-shelf tools and too small for enterprise pricing.

Services
Custom Development JewelryStudioManager StaffHub Jewel Value SmartCash Pitch Side RepairDesk GrowthMap QualCanvas
Company
About Blog Contact
Legal
Privacy Policy Terms of Service Pay Invoice
© 2026 JMS Dev Lab. All rights reserved.