Skip to content
Erick Kamanda

Store Speed

Why is my Shopify store slow? Common causes and how to fix them

A slow Shopify store is usually down to apps, images, theme code and outside scripts. Here is how to measure speed properly, find the causes and fix them in the right order.

Erick KamandaUpdated 7 min read
Cover image on a dark navy background with the title "Why is my Shopify store slow? Common causes and how to fix them" and the category Store Speed.

What makes a Shopify store slow is rarely one big problem. It is usually a pile of small ones: an app added last year, a photo uploaded straight from a camera, a tracking script nobody remembers installing. Each one seems harmless, and together they leave customers looking at a blank screen on their phones.

The good news is that most of these causes can be found and fixed without rebuilding your store. I have worked on 100+ store projects, and this is the order I look at things in. You do not need to be a developer to follow it, although some of the fixes will need one.

First, measure speed properly

Before changing anything, find out where you stand. Otherwise you cannot tell whether a fix helped, and it is easy to spend time on the wrong problem.

Use these two free tools:

  • Shopify's web performance reports. You will find them under Analytics in your Shopify admin. They are based on real visits to your store, so they show what your customers actually experience.
  • Google PageSpeed Insights. Enter any page address at pagespeed.web.dev. It runs a simulated test and, if your store gets enough visitors, also shows real-world data from Chrome users.

A few habits will make your results far more useful:

  • Test on mobile first. Many shoppers browse on phones, and phones show problems that a fast office computer hides.
  • Test more than your homepage. Check a product page and a collection page too. These are often heavier, and they are where people decide to buy.
  • Run each test a few times. Results vary from one run to the next, so look at the pattern rather than a single score.
  • Do not chase a perfect score. The score is a useful guide, not the goal. A store that feels quick and sells well matters more than a 100.

The three numbers that matter

PageSpeed Insights reports three measurements called Core Web Vitals. Google publishes a "good" target for each:

  • Largest Contentful Paint (LCP): how long the main content, usually a large image, takes to appear. Good is 2.5 seconds or less.
  • Interaction to Next Paint (INP): how quickly the page responds when someone taps or clicks. Good is 200 milliseconds or less.
  • Cumulative Layout Shift (CLS): how much the page jumps around while it loads. Good is 0.1 or less.

Write down your numbers before you start. Then you can check them again after each change.

What makes a Shopify store slow

Shopify's hosting is rarely the problem. Shopify runs the servers and delivers files through a global network, and you cannot change that part anyway. What you can change is everything added on top: apps, images, theme code and outside scripts. Here is each one in turn.

Apps

Apps are the first place I look. Many of them load their own code on your storefront, sometimes on every page, even where the app does nothing. A reviews app might load on your contact page. A pop-up app might load on every visit.

To check yours:

  1. List every app you have installed and what it does for you.
  2. Remove the ones you no longer use, and any that duplicate each other.
  3. Run your speed test again after removing each one, so you can see what changed.

Removing an app is not always the end of it. Older apps in particular can leave code behind in your theme after they are uninstalled, and that code keeps loading for nothing. Apps built with Shopify's newer theme app extensions avoid most of this, because their code is removed along with the app. If you have changed apps often over the years, it is worth having someone look through your theme files for leftovers.

Images

Images are usually the heaviest thing on a store page, and often the largest element a visitor is waiting for. Shopify helps a lot here: it can resize images automatically and serve modern formats to browsers that support them. But your theme has to ask for the right sizes, and that help has limits.

What you can do yourself:

  • Do not upload huge originals from a camera or a design tool. Resize them to something sensible first.
  • Be careful with large image sliders at the top of the page. Every slide is more to load, and people rarely wait to see them all.
  • Replace autoplaying background videos with a still image, unless the video is truly doing a job.

What a developer can check is whether your theme requests images at the right size and only loads them when they are needed. In Liquid, Shopify's theme language, a well set up image in a collection grid card looks like this:

{% for product in collection.products %}
  {{ product.featured_image
    | image_url: width: 800
    | image_tag:
      widths: '400, 600, 800',
      sizes: '(min-width: 750px) 25vw, 50vw',
      loading: 'lazy' }}
{% endfor %}

This gives the browser several sizes to choose from, so a phone does not download an image meant for a large desktop screen. The loading: 'lazy' part delays the image until the visitor scrolls near it.

There is one important exception. The main product image at the top of the page should use loading: 'eager' instead, because lazy loading it slows the image visitors are waiting for and hurts your LCP number.

Theme code

Every theme ships with its own code, and it tends to grow. Years of small edits, sections you no longer use and code pasted in by previous developers all add weight. Some older or very feature-heavy themes also load a lot of JavaScript, the code that makes pages interactive, on every page. Too much of it makes a phone feel sluggish even after the page appears, which shows up in your INP number.

A common fix is to load code only on the pages that need it. For example, a size guide script has no reason to load on your homepage:

{% if template.name == 'product' %}
  <script src="{{ 'size-guide.js' | asset_url }}" defer></script>
{% endif %}

The defer part tells the browser not to hold up the page while it fetches that file.

If your theme is old and heavily patched, compare it with a current one. Sometimes moving to a modern theme gets you further than fixing the old one, though it is a bigger job. I would make that decision after measuring, not before. On a custom Shopify theme project, this is one of the first things I would weigh up.

Third party scripts

These are pieces of code loaded from other companies: analytics, ad tracking, chat widgets, heatmaps, embedded videos and social feeds. Your store has to wait on servers it does not control, and each script adds work for the visitor's phone.

Go through them with one question: is anyone actually using this?

  • Remove tracking for ad platforms you no longer run, and tools nobody has logged in to for months.
  • Check for duplicates. The same analytics tag is sometimes added by an app and by hand in the theme.
  • Add tracking pixels through Shopify's customer events where you can, instead of pasting them into your theme. Pixels added this way run in a separate, restricted environment.
  • Load chat widgets and embedded videos only when someone needs them. A video can show a still image until the visitor presses play.

Be careful when removing tracking. Check with whoever runs your ads first, because a removed script can quietly break their reporting.

What to fix first

If you cannot do everything at once, this order tends to give the most return for the least risk:

  1. Remove apps and scripts you no longer use. It costs nothing and carries little risk.
  2. Fix the largest image at the top of your key pages.
  3. Compress and resize your other images.
  4. Clean up theme code, or ask a developer to.

Make one change at a time, on a copy of your theme where possible, and measure again each time. If you would rather hand it over, my Shopify speed optimization service covers finding the causes and fixing them. Speed work was also part of how I built the Kaloneo Beauty Shopify store from scratch, because it is much easier to keep a store fast from the start than to rescue it later.

Common questions

Will a faster store rank higher on Google?

It can help, but it will not make up for weak content or a poor offer. Google uses Core Web Vitals as one signal among many. The clearer benefit is for your visitors, who get to your products with less waiting.

Why is my PageSpeed score different every time?

The test runs on a simulated device and network, and small differences between runs change the result. Your apps and scripts can also behave differently from one load to the next. Run several tests and look at the overall pattern.

Can I fix a slow store myself?

You can do a good part of it. Removing unused apps, resizing images and simplifying sliders need no code. Cleaning up theme files and changing how scripts load is safer with a developer, because mistakes there can break your store.

Do I need a new theme to make my store fast?

Not always. Many stores improve a lot by removing apps and fixing images alone. A new theme makes sense when the current one is old, heavily patched and still slow after those fixes.

If you would like someone to find out what is slowing your store down and fix it, get a fixed quote. Tell me your store address and what you have noticed. I'll reply within 24 hours with any questions and, once I understand the scope, one fixed price agreed in writing before any work starts.

Written by Erick Kamanda

Shopify and WordPress developer helping e‑commerce brands launch and grow stores that sell

Let’s build a store that sells.

Whether you’re launching a new store, redesigning one that underperforms, or fixing what’s holding it back, tell me where your business is headed. I’ll come back with a clear next step and one fixed price.

Get your fixed quote

I reply within 24 hours.