
Ecommerce Site Speed Optimization: Best Practices for 2026
Most ecommerce stores are failing at least one Core Web Vital right now. Here are the site speed best practices that move the needle in 2026, ranked by impact.
Most ecommerce stores are currently failing at least one Core Web Vital. According to CrUX data tracked by Google, only around 66% of sites achieve good LCP scores, and 43% still fail the newer INP threshold of 200ms. If your store is in the majority, ecommerce optimization is not a nice-to-have.
This checklist covers the best practices that matter most in 2026, ranked by impact. It won't explain how every technique works in depth, but it will tell you what to fix first and why.
The 2026 benchmarks you're being judged against
Google evaluates at the 75th percentile of real user data. That means 75% of your page loads must meet each threshold for your site to pass.
The current thresholds:
| Metric | Good | Needs improvement | Poor |
|---|---|---|---|
| LCP (Largest Contentful Paint) | ≤ 2.5s | 2.5–4s | > 4s |
| INP (Interaction to Next Paint) | ≤ 200ms | 200–500ms | > 500ms |
| CLS (Cumulative Layout Shift) | ≤ 0.1 | 0.1–0.25 | > 0.25 |
INP is where most ecommerce stores are struggling right now. It replaced (FID) as an official Core Web Vital in March 2024, and it's harder to pass. On mobile devices, sites score 35.5% worse on INP than they used to score on FID. The old metric was much more forgiving.
What this means practically: your store might have passed Core under the old FID system and now fails under INP. If you haven't checked since early 2024, check now.
Key takeaway: Run PageSpeed Insights on your homepage, your top product page, and your category page. These three pages account for most of your organic traffic and should be your optimization targets.
Best practice 1: Fix images before anything else
Images cause more speed problems than any other single factor on ecommerce sites. They're also the easiest to fix without touching code.
What good looks like:
- Product images under 100-150KB for standard viewport display (high-resolution zoom images may need more)
- Hero banners under 200KB
- served to modern browsers (25-34% smaller than equivalent JPEG, per RequestMetrics research)
- AVIF where browser support allows (even smaller, but check your analytics for browser breakdown first)
loading="lazy"on all images below the fold- No on above-the-fold images (this hurts LCP directly)
The lazy loading trap: Many stores apply lazy loading to everything, including the main product image or hero banner. That single hero image is usually what sets your LCP time. Loading it lazily delays the largest visible element on the page, which is exactly what LCP measures.
Combined, modern formats plus lazy loading plus delivery can cut image payload by 50-80%. That's not a small optimization. To see what happens when image weight goes unchecked, the Fashion & Apparel speed benchmark shows a median of 1,453 KB of images on a single mobile homepage, the highest of any Shopify industry.
To put that in revenue terms: a store doing $50,000/month at a 2% that lifts to 2.1% from faster loads gains roughly $2,500/month. Image optimization alone can move that needle.
Test your store's actual speed score
Best practice 2: Audit your third-party scripts
Most ecommerce sites have a JavaScript problem they don't know about. The average web page loads 20 totaling around 449KB, according to Lullabot's analysis of third-party performance data.
For Shopify stores specifically: each installed app can add one or more scripts that run on every page load. Thirty apps means potentially thirty scripts. Many of them load in the document head, blocking everything else while the browser downloads, parses, and executes them. EcomHint data from 1,533 Shopify stores confirms this pattern: stores with 0-5 third-party services scored a median 74 on mobile, while stores with 21-30 services dropped to 44. The correlation between service count and performance was r = -0.66 (full breakdown). For a diagnostic walkthrough that detects render-blocking scripts and 7 other common Shopify speed issues with PageSpeed Insights criteria, see the performance audit methodology for Shopify.
This is why INP is such a problem for ecommerce. Chat widgets, review plugins, and personalization tools sit on the main thread. When a customer clicks Add to Cart, the browser is often busy with one of these scripts. The cart button registers the click but responds slowly, sometimes not at all for half a second.
Audit steps:
- Open Chrome DevTools > Network tab > filter by JS
- size. Anything over 100KB from a third-party domain deserves scrutiny
- Check PageSpeed Insights for the Reduce unused JavaScript and Avoid serving legacy JavaScript to modern browsers diagnostics
- Remove any app or plugin you haven't actively used in 90 days
- For scripts you keep: add
asyncordeferattributes so they don't block page rendering
typically reduces JavaScript file sizes by 10-40%, sometimes more for unoptimized legacy bundles. Most platforms handle this automatically in production, but custom scripts or legacy apps sometimes skip it.
Key takeaway: A Shopify store with 25+ apps almost certainly has a third-party script problem. Start by removing, not optimizing. Every script you delete is a script you never have to optimize. For a data-driven breakdown of which services cost the most, see our third-party apps speed analysis.
Best practice 3: Target INP on your product pages
INP is the metric most likely to be failing on ecommerce stores right now, and product pages are where it hurts most. When a user taps Add to Cart on a slow device and nothing happens for 400ms, some of them tap again. Some abandon.
INP measures the longest interaction across the entire page session, not just the first click like FID did. A customer who browses your product page for two minutes, tapping through variant selectors and reading reviews, will trigger multiple interactions. INP scores the worst one.
What kills INP on product pages:
- Heavy JavaScript from review apps running on every interaction
- Variant selectors that recalculate price/inventory on every tap
- Chatbots loading scripts that compete with user interactions
- Analytics events firing synchronously on click
Fixes ranked by ease:
- Load chat widgets only after the first user interaction (not on page load)
- Defer analytics events. They don't need to fire synchronously
- Test with a real mid-range Android device, not just desktop Chrome
- Use Chrome DevTools > Performance tab to identify which script runs during a slow interaction
Trendyol, a large ecommerce platform, reduced INP by around 50% on mobile, from 963ms to around 481ms. The result was a 1% improvement in click-through rate from product listings to detail pages, documented in Google's web.dev case studies. For a high-traffic store, 1% CTR across millions of sessions adds up fast.
For a detailed walkthrough of finding these issues in your Lighthouse report, see how to read a Lighthouse report for ecommerce stores.
Best practice 4: Add a CDN if you don't have one
A CDN serves your static assets (images, CSS, JavaScript) from servers close to your visitors. Without one, every request travels to your origin server regardless of where the customer is.
A mid-size ecommerce store that migrated from a shared host to a CDN-backed setup saw a 54% reduction in , documented by Archer IT Solutions. Chrome User Experience (CrUX) data shows a 35% improvement in (TTFB) for storefronts that moved to CDN edge caching.
Shopify includes CDN delivery automatically. WooCommerce and custom-built stores often don't, and it requires manual configuration.
Caching strategy for ecommerce specifically:
The challenge with ecommerce caching is that some content is static (product images, category layouts) and some is dynamic (cart contents, pricing, inventory for a specific visitor). Caching everything breaks personalization. Caching nothing is slow.
The working approach: product images, category page layouts, and search result templates. Separate personalized elements (cart contents, recommendations, logged-in pricing) from the cacheable structure and load them via API after the page shell renders.
This pattern lets you serve the page frame from in under 100ms, then populate the personal details in a second async request. Most visitors don't notice the difference.
Key takeaway: A Google/Deloitte study found a 0.1-second improvement in mobile load time increases retail conversions by approximately 8% (reported via Cloudflare). In cases where visitors are geographically distant from your origin server, a CDN alone can deliver 200-500ms improvement. That math is worth doing.
Carpe, a Shopify store, achieved a 52% LCP improvement and saw a 5% conversion rate increase and 15% revenue growth, documented on Shopify's performance blog. That's not a developer experiment. It's a real store with a before-and-after revenue number.
Best practice 5: Reduce Cumulative Layout Shift
CLS is the most overlooked Core Web Vital because it doesn't feel like a speed problem. It feels like a visual glitch. Elements move around while the page loads. Visitors accidentally tap the wrong button.
For ecommerce, unexpected layout shifts are particularly damaging. A visitor about to tap Add to Cart who instead taps a cookie banner that shifted into place has a bad experience and blames the store.
Common CLS culprits on ecommerce sites:
- Product images without
widthandheightattributes (browser doesn't reserve space before the image loads) - Late-loading promotional banners injected above product content
- Cookie consent banners that push content down on first visit
- Web fonts that cause text to reflow when they load (FOUT: flash of unstyled text)
Fixes:
- Add
widthandheightto every<img>tag (browsers use these to reserve space) - Set explicit height on banner slots so they don't push content when populated
- Use
font-display: optionalfor custom fonts. This shows the system font if the custom font isn't cached yet. - Test CLS on first-time visitors (no cache). It's usually worse than repeat visitor scores.
Best practice 6: Test on real devices, not just desktop
Over 70% of ecommerce visits come from mobile devices. Mobile performance is consistently worse than desktop. Slower processors, variable network conditions, and different rendering behavior mean desktop test scores don't predict mobile experience.
The tools:
- PageSpeed Insights: shows real CrUX data split by mobile and desktop, plus Lighthouse simulation
- WebPageTest: lets you test on specific devices and connection speeds
- Chrome DevTools device emulation: fast for iteration, but not as accurate as real device testing
Test on a real mid-range Android device periodically. Android devices represent the majority of global mobile traffic and have slower processors than iPhones. Issues that don't appear on an iPhone 15 often show up clearly on a three-year-old Android.
Key takeaway: Around 53% of mobile visitors abandon sites that take over 3 seconds to load, per NitroPack's analysis of mobile performance data. If your mobile Lighthouse score is under 50, start there, not on desktop.
See exactly what's slowing your store down
How to prioritize when everything needs work
If your store has multiple issues, this is the order that delivers the most return:
- Image optimization: highest impact, lowest technical barrier. Fix format and compression first.
- Remove unused apps and scripts: deleting beats optimizing. Cut what you don't need.
- Add a CDN: if you're on WooCommerce or custom infrastructure without one, this is urgent.
- Target INP on product pages: defer non-critical scripts, test Add to Cart response time.
- Fix CLS: add image dimensions, stabilize banner slots.
- Platform hosting: if you're on shared hosting with real traffic, upgrade to managed hosting or cloud infrastructure.
For a complete technical breakdown of how each fix works, including platform-specific steps for Shopify and WooCommerce, see the ecommerce site speed optimization guide.
Speed degrades silently. Every app you install adds a few milliseconds. Every promotional banner adds potential . Stores rarely get slower overnight. They get slower gradually, one install at a time, until the numbers start moving in the wrong direction.
FAQ
What is a good site speed score for ecommerce in 2026?
For Lighthouse performance scores, aim for 70+ on mobile and 90+ on desktop. For context, the median Shopify store scores around 47 on mobile and 65 on desktop based on EcomHint benchmark data from 1,533 stores. More importantly, target good Core Web Vitals: LCP under 2.5 seconds, INP under 200ms, and CLS under 0.1. Lighthouse scores vary with every test; Core Web Vitals measured through PageSpeed Insights reflect real user experience.
What's INP and why does it matter for ecommerce?
INP () replaced First as a Core Web Vital in March 2024. It measures how quickly your site responds when visitors click, tap, or type, across all interactions during a page session. For ecommerce, slow INP means a sluggish Add to Cart button or filters that respond late. Sites with INP over 200ms are more likely to lose impatient shoppers before they complete a purchase.
Does site speed affect SEO rankings?
Yes, but indirectly. Core Web Vitals are an official ranking factor. Google uses them as a tiebreaker between pages with similar content quality. For competitive ecommerce categories, better CWV scores can give you an edge over slower competitors. Around 50% of mobile sites currently fail the full Core Web Vitals assessment, meaning roughly half your competitors are below Google's threshold.
How often should I check my site speed?
Check after any major change: new app installed, theme update, promotional campaign with new graphics, or platform migration. Speed degrades gradually. Each new app adds a little more JavaScript. A store that passed CWV six months ago might be failing now. Set a monthly reminder to run PageSpeed Insights on your three most important pages.
What's the fastest way to improve LCP?
Optimize the image that drives LCP, usually the hero banner or main product image. Convert it to , compress it below 100KB, and make sure it is not lazy-loaded. it using <link rel="preload"> if your platform supports it. These three changes often cut LCP by 0.5-1 second without touching any other code. To measure the before and after, run your store through the store speed test.
Jakub is the founder of Ecomhint, an AI-powered ecommerce audit tool focused on UX and conversion optimization. He helps online stores identify friction points across product pages, cart, and checkout using CRO best practices and original research data.
Jakub is the founder of Ecomhint, an AI-powered ecommerce audit tool focused on UX and conversion optimization. He helps online stores identify friction points across product pages, cart, and checkout using CRO best practices and original research data.

