Skip to content

From $45/hr · Working your US or EU hours

What is a good Lighthouse score for a Shopify store, and how to reach 90+ on mobile

By , Senior Shopify Developer

Published · 6 min read

Lighthouse calls a performance score of 90 to 100 good, 50 to 89 needs improvement and below 50 poor. On mobile, 90+ is a high bar for a Shopify store with apps; the Theme Store only asks themes to average 60. Google's ranking systems use real-visitor Core Web Vitals, not the lab score, so use the score to find problems.

What the numbers mean

Score or limit Where it comes from What it tells you
90 to 100 Lighthouse colour bands Good. Lighthouse itself says a perfect 100 is extremely hard to reach and not expected
50 to 89 Lighthouse colour bands Needs improvement
0 to 49 Lighthouse colour bands Poor
60 average Shopify Theme Store requirements The minimum performance score a theme needs across its home, product and collection pages, on desktop and mobile, tested on a benchmark store
90 average Shopify Theme Store requirements The minimum Lighthouse accessibility score for the same pages
10 points Built for Shopify requirements The most an app with the Built for Shopify badge is allowed to lower your storefront score

The Theme Store test runs on a benchmark store with standard products and no apps. Your live store adds apps, tracking, your own images and your content, so expect a gap between a theme's demo and your store. The accessibility score is a separate test with its own limits, which I cover in the Shopify accessibility checklist.

What goes into the performance score

The current version, Lighthouse 13, builds the score from five lab metrics. The weights below are from Chrome's scoring documentation and the Lighthouse source.

Metric Weight What usually drives it on a Shopify store
Total Blocking Time (TBT) 30% Long JavaScript tasks from apps, tag managers and theme scripts
Largest Contentful Paint (LCP) 25% The hero or main product image, and anything that delays it
Cumulative Layout Shift (CLS) 25% Images without dimensions, late fonts, content injected by apps
First Contentful Paint (FCP) 10% Render-blocking CSS, fonts and scripts in the <head>
Speed Index 10% How quickly the visible page fills in overall

INP carries no weight in a normal Lighthouse run, because nobody taps anything during the test. Total Blocking Time stands in for it, and Shopify notes that TBT correlates with INP in the field. So 80% of the score comes from JavaScript, the LCP image and layout stability.

The mobile test is the hard one. Lighthouse emulates a Moto G Power phone with the CPU slowed four times, on a connection throttled to 150 ms of latency and 1.6 Mbps down, the preset its throttling documentation calls Slow 4G. Desktop runs without that throttling and uses its own scoring curves, so the same page usually scores higher there.

Why the score changes every time you run it

Four Lighthouse 13.6 runs with mobile settings, back to back on 5 November 2026 on the home page of Shopify's Dawn demo store, scored 70, 93, 97 and 85, all within two minutes. LCP went from 5.5 seconds on the first run to 2.4 seconds on the best one.

Swings like that are why Shopify recommends the median of at least three runs. It warns that a single run can vary by 5 to 10 points, and suggests testing in an incognito window, on the same device and network each time. Lighthouse's own docs list the usual reasons for the swings: A/B tests and ads, changes in network routing, browser extensions, antivirus software and the device you test on.

A simple way to get a median from the command line (you need Node.js and Chrome; npx installs Lighthouse the first time you run it):

URL="https://your-store.com/products/your-best-seller"
for i in 1 2 3; do
  npx lighthouse "$URL" --only-categories=performance \
    --output=json --output-path="run-$i.json" --quiet \
    --chrome-flags="--headless=new"
done
node -e '
const s = [1, 2, 3]
  .map((i) => require(`./run-${i}.json`).categories.performance.score * 100)
  .sort((a, b) => a - b)
console.log(s.join(" "), "median:", s[1])'

Add --preset=desktop to the Lighthouse line for the desktop score. Run it before and after every change, and compare medians, never single runs.

The lab score and what Google uses

Google says Core Web Vitals are used by its ranking systems, and those numbers come from real Chrome users: the field data at the top of PageSpeed Insights, collected over the previous 28 days. The same Google page says good results in these reports don't guarantee top rankings, and that chasing a perfect score just for SEO may not be the best use of your time. Shopify's admin shows the same field metrics for your own visitors in its web performance reports.

The Lighthouse score earns its place in two situations. A new or low-traffic store may not have enough field data yet, and Shopify suggests lab tests for exactly that case. And when you change something, a lab run tells you within minutes whether it helped, while field data takes weeks to catch up.

How to get a Shopify store past 90 on mobile

Work in order of weight, and measure after each step.

  1. Cut the JavaScript (TBT, 30%). Remove apps you don't use and the code that uninstalled apps left behind, defer scripts the first screen doesn't need, and load chat or review widgets only on the pages that use them. On a store with many apps, this is often where most of the missing points are.
  2. Fix the LCP image (25%). Load it eagerly with fetchpriority="high", as an <img> instead of a CSS background, at a sensible size through image_url and image_tag. Shopify also warns against fade-in and reveal animations on the LCP image, because they delay LCP even after the file has arrived.
  3. Stop layout shifts (25%). Width and height on every image, reserved space for app blocks, and fallback fonts sized to match the web font.
  4. Speed up the first paint (FCP and Speed Index, 20%). Keep render-blocking CSS small, serve fonts from Shopify's CDN, and place first-paint stylesheets and font preloads above content_for_header so they download while Shopify renders your sections.
  5. Test the pages that matter: home, a collection and a product page, each on mobile, as a median of three runs. Shopify's own speed score weights them 17%, 43% and 40%.

The detail behind each fix, and the ones that don't help on Shopify, is in why is my Shopify store slow.

Scores from my own work

The previous version of this site scored 43 for mobile performance on its first working build. Five changes took it to 94: self-hosted fonts, a CSS version of the 3D scene for phones, a preloader in plain HTML, one shared IntersectionObserver in place of dozens of scroll triggers, and below-the-fold sections mounted one at a time when the browser was idle. Accessibility scored 100 on every page and layout shift was 0. The portfolio case study walks through each change.

For a store, the Louise Carter case study shows a product page that kept a very large review widget and still scored 98.

Watch out for score tricks

Shopify has a full page on apps and services that fake Lighthouse results. Some check for "Chrome-Lighthouse" in the user agent, a Moto G device or a Linux platform, and serve the test a stripped-down page. Others inject a transparent full-screen image so it becomes the LCP element, or hold scripts back until the first scroll or tap, which a lab test rarely does. Shopify says these techniques are now commonly sold as speed services on freelance platforms like Fiverr and Upwork.

I work through those platforms too, so check my work the way you would check anyone's:

  • Run PageSpeed Insights, then Lighthouse in Chrome DevTools in an incognito window. Shopify says a difference of 20 points or more suggests the store is affected.
  • Look at the screenshots and the reported LCP element. A broken-looking page, or an LCP element no shopper would call the main content, means the number is fake.
  • Compare field INP in Shopify's report with the lab result. Field numbers that are much worse than the lab suggest work being pushed past the end of the test.
  • Ask for before and after filmstrips. A real fix moves the frame where the hero image appears.

When you don't need a developer

If Shopify's web performance report shows Good for LCP, INP and CLS on mobile, a Lighthouse score in the 70s isn't an emergency. Your real visitors already get a fast store, and the money is better spent on content or conversion. Some of the work doesn't need a developer anyway: uninstalling apps you don't use, switching off app embeds you don't need, shrinking huge images before upload and updating your theme to its latest version. Bring someone in when the remaining points are in theme code.

My Shopify speed optimisation page explains how I measure the score and push it past 90 where that's realistic.

  • Speed
  • Lighthouse

FAQ

Questions

It sits at the bottom of Lighthouse's needs-improvement band, and below the average of 60 that Shopify asks of Theme Store themes on a clean test store, so there is work to do. Check Shopify's web performance report first: if real visitors get good Core Web Vitals, it is less urgent than the number suggests.

The mobile test emulates a mid-range phone with the CPU slowed four times on a throttled connection. Desktop runs without that throttling and uses its own scoring curves. The same page usually scores lower on mobile, which is also where most Shopify traffic comes from.

Not directly. Google says its ranking systems use Core Web Vitals, and those come from real Chrome users visiting your store. Lighthouse is a lab test on one simulated phone, useful for finding problems and for stores that don't have enough traffic for field data yet.

At least three times, then take the median. Shopify warns that a single run can vary by 5 to 10 points. Four runs on the same Shopify demo page on 5 November 2026, all within two minutes, scored anywhere from 70 to 97.

Be wary of any app or service that promises it. Shopify documents speed services that detect Lighthouse and show it a stripped-down page, so the score rises while shoppers see no change. If PageSpeed Insights and a Lighthouse run in Chrome differ by 20 points or more, look for this.

Related services

Next step

Shopify speed optimisation

Shopify speed work starts at $540 (12 hours at $45) and usually takes 1 to 2 weeks, measured with Lighthouse before and after.