Why do most Shopify stores score below 50 on Google PageSpeed Insights, and what is considered a realistic score?

Hi everyone,

While analyzing many e-commerce and Shopify stores using Google PageSpeed Insights (especially on Mobile), I’ve noticed that the vast majority score under 50% and end up in the red zone.

I have two main questions regarding this:

  1. What is considered a “normal” or realistic performance score for a functional Shopify store running essential apps and tracking scripts?

  2. Why do most stores score so low (in the red zone) on PageSpeed Insights, even when they seem to load fast for actual visitors?

Would love to hear insights from store owners, developers, and Shopify experts!

Thanks in advance!

Pagespeed Insights is a synthetic test that is deliberately harsher than real-world conditions. It’s more useful to look at LCP, CLS, and core web vitals.

The more the store has, the more the merchant thinks they are somehow winning. Just check out all the add-ons that can accumulate.

Facebook Pixel

Google Analytics

Google Ads

Klaviyo

Reviews

judge .me

Search/filtering

Wishlist

Rebuy

Afterpay

Shop Pay

Cookie banner

Live chat

TikTok

Pinterest

WhatsApp

heatmaps

personalization

custom css

popups

upsell apps

low stock widgets

countdown timers

recently viewed products

product recommendations

Lighthouse runs a controlled lab test using simulated hardware with a highly throttled connection. Pagespeed Insights provides 2 very different kinds of information. Lab data and field data. The performance score is from the lab test, but the field data matters more.

Shopify itself is generally fast, but every app, tracking pixel, review widget, popup, analytics script, chat tool, and other third-party service can add JavaScript, network requests, and browser processing that Lighthouse penalizes.

@osid ,
This is actually pretty common with Shopify stores. I wouldnt consider a score below 50 automatically bad or a 90+ score automatically good.

For a real Shopify store with apps, analytics, pixels, reviews, chat, etc., a 70–90 mobile score can be a very reasonable target. But I’d pay much more attention to the actual Core Web Vitals and field data than the Lighthouse score itself.

The reason many stores score low on mobile is that PageSpeed is testing under a controlled mobile environment with limited CPU/network conditions. Shopify stores also tend to load a lot of third-party scripts from apps, tracking tools, reviews, upsells, analytics and marketing platforms. These can have a significant impact even if the store feels fast on a normal phone and connection.

The screenshot is a good example the 30 performance score looks concerning at first but I would not make a decision based on that number alone. I’d check LCP, INP, CLS, TBT, image weight, JavaScript execution and, most importantly, whether real-user Core Web Vitals are passing.

A store can feel fast to you and still perform poorly in a synthetic test and the opposite can also happen.

For Shopify I normally look at it in this order

  1. Real-user Core Web Vitals

  2. LCP / INP / CLS

  3. Mobile loading and interaction experience

  4. JavaScript and third-party app impact

  5. Images and fonts

  6. Then the Lighthouse/PageSpeed score

So rather than chasing a 90+ score, I’d focus on getting the important user facing metrics into the “Good” range while keeping the necessary apps and tracking in place.

In my experience, removing useful functionality just to move a PageSpeed score from 75 to 90 isnt always a good trade off. The goal should be a fast store that still converts not just a high score.

Two different things get conflated in this question, and separating them answers both halves of it.

The PageSpeed score is a lab test — Lighthouse running on an emulated mid-range phone with throttled CPU and network. It’s deliberately harsher than reality, and it’s noisy: run it three times on the same URL and you’ll get three numbers.

What Google actually uses is field data — Core Web Vitals collected from real Chrome users, which you can see in Search Console. That’s the dataset worth optimising against, and a store can sit at 40 in the lab while passing all three field metrics.

So on what’s realistic: for a Shopify store running a normal set of apps, a mobile score in the 30-50 range is completely ordinary, and pushing toward 90 usually costs more than it returns. I’d hold myself to the field thresholds at the 75th percentile instead — LCP under 2.5s, INP under 200ms, CLS under 0.1.

The wins that actually move those are boring: fewer apps injecting scripts on every page, images served at the size they’re displayed, and no third-party tags loading before first paint.

Adding to my own answer, because it matters for your first question and I made it sound more fatalistic than it is: 100 on mobile is reachable. I’ve built stores that hold it.

The catch is what it takes: a lean theme, images and fonts handled properly, and almost nothing third-party running on first load. Add a review widget, a chat bubble and a couple of pixels and you’re back in the 40s — not because Shopify is slow, but because each of those is someone else’s JavaScript executing on your customer’s phone.

So the ceiling isn’t technical, it’s a trade. 30-50 is normal, but it isn’t a law — it’s the price of the features that were bolted on, and most merchants have never seen that price itemised. Worth auditing what each app costs you in milliseconds before accepting the red zone as inevitable.

Another thing I wanted to add - When you go to your FCP or LCP and you see “render blocking requests” and it lists something like theme.css, you should understand what this is telling you.

The browser has to download and parse the entire theme.css file before any rendering. Themes have lots and lots of global features so they put the css in the global theme.css. Unfortunately, a feature that you don’t even use like LookBook may not be shown in your theme, but it’s contents in theme.css are still being parsed.

So in this case you can just comment out the entire LookBook css block and turn a 5 second FCP into 3 seconds, all because you eliminated some render blocking. Just using this as an example, but you can see how a simple thing like an unused LookBook feature influences the paint.

Hi,
Shopify Store performance should be measured based on more factors not than just the PageSpeed score.
Need to review below important Points when we measure the Performance:

  • Identify the Largest Contentful Paint (LCP) element, which will be the hero/banner image.
  • Improve the image size and format.
  • Do not load unnecessary images above the fold.
  • Minimize render-blocking CSS/JS.
  • Remove unused app embeds.
  • Review all third-party scripts which were added in the store .
  • Defer non-essential tracking scripts where feasible.
  • Don’t load app assets on pages that do not need them.
  • Simplify Liquid/DOM.
  • Check for the loading of duplicate libraries by apps.
  • Wherever feasible, use Shopify’s native features instead of additional apps.
  • Always test on an actual mobile device, not in Lighthouse.

An average Shopify website has many third-party scripts - Google Tag Manager / GA4, Meta Pixel, TikTok Pixel, Klaviyo, reviews, wishlist, search/filter, personalization, subscriptions, chat, affiliate tracking, heatmaps, A/B testing, cookie/consent management, etc.
Even if the theme itself is very optimized, these third-party scripts can significantly influence the PageSpeed score.

And therefore, instead of striving for 90+ score, try to optimize Core Web Vitals and UX.