My product images are only 2000px, so why does Shopify still say they're too slow?

Your product photos are technically only 2000px wide, but PageSpeed still flags them as your slowest element. Here is what is actually going on and how to fix it without guessing.

performanceimagesLCPPageSpeedimage optimization

What's going on

Why are my product images loading so slowly if they're only 2000px? is a common performance question, and the frustrating part is that pixel width alone does not tell you much about how heavy an image actually is. A 2000px JPEG exported straight from a camera or phone can easily be several megabytes, while a properly compressed 2000px image of the same subject can be a fraction of that size. Shopify's admin does not warn you about this at upload time, so it is easy to end up with a product catalog full of technically fine-resolution images that are still dragging down load times.

The other half of the problem is how the browser actually requests the image. Shopify's CDN can serve a resized, modern-format version of any uploaded image, but only if the theme code asks for one correctly. If a theme, especially an older one or one with custom product template edits, links directly to the raw uploaded file instead, every visitor downloads the full-size original regardless of their screen size. That is often the real root cause behind a slow Largest Contentful Paint score in PageSpeed or Lighthouse, not the resolution of the source photo itself.

Why it happens

Shopify does not compress or resize the original file you upload; it stores it as-is and only creates resized or reformatted copies on demand when a properly parameterized CDN URL asks for one. That means the file-weight problem, an uncompressed or over-exported source image, and the delivery problem, a theme that never requests a resized copy, are two independent causes that both show up as the image is slow. Merchants troubleshooting from the symptom alone often fix one and are surprised the page is still sluggish because the other cause is still there.

5 ways to fix it

1

Check whether your theme is actually asking Shopify's CDN for a resized copy

Shopify's CDN can generate resized, compressed copies of any uploaded image on request, but only if the theme code asks for one. In Liquid, that means using the image_url filter with a width parameter (Shopify can also serve WebP or AVIF automatically to browsers that support it) paired with image_tag so the rendered HTML gets a proper srcset and sizes attribute. Most current Online Store 2.0 themes handle this correctly out of the box for product images, so view source on your live product page and look for a srcset attribute on the image before assuming anything is broken. If it is missing or the URL points straight at the raw uploaded file, a heavily customized or older theme is the likely cause.

2

Compress the source file before you upload it, not after

Shopify does not shrink or compress your original upload for you; it only creates resized versions on demand when a properly parameterized URL requests one. That means a 2000px-wide image can still be a bloated, poorly compressed file if it came straight off a camera or phone with no export step. Run product photos through an image compressor or your editing software's export-for-web option before uploading, and generally aim to keep file size proportional to how large the image will actually be displayed, rather than uploading the biggest file the camera produced.

3

Make sure the image isn't fighting lazy-loading or blocked by other scripts

If the slow image is the one visible without scrolling, often the element PageSpeed flags as your Largest Contentful Paint, lazy-loading it can actually hurt, since the browser has to discover it before it starts downloading. Confirm your theme loads above-the-fold product images eagerly rather than lazily. Separately, open the Network tab in Chrome DevTools while running a PageSpeed or Lighthouse test: if the image request is queued behind render-blocking JavaScript or third-party app scripts, trimming those scripts is the fix, not resizing the image further.

4

Re-run PageSpeed Insights and read the LCP breakdown instead of guessing

Open Google PageSpeed Insights or Lighthouse in Chrome DevTools against the live product page, find the Largest Contentful Paint entry, and expand its breakdown of time-to-first-byte, load delay, load time, and render delay. A large load-time figure points to the image itself as the bottleneck, which the fixes above address. A large load-delay or render-delay figure points to scripts or server response time instead, and no amount of image resizing will fix that on its own.

5

If you can't touch theme code or have a large legacy catalog, consider a performance app

If your theme doesn't support width-parameterized image URLs, or you have a large catalog of oversized originals and no practical way to re-export each one by hand, an image-optimization or storefront performance app can bulk-process and re-serve your catalog without a manual re-upload pass. Treat this as a last resort after checking the theme and source files, not the first thing to reach for.

Bottom line

There is no single Shopify setting that fixes slow product images. It is usually two separate issues layered on top of each other: the source file being uploaded larger or less compressed than it needs to be, and the theme not asking Shopify's CDN for a properly sized, modern-format copy. Start with the source file and how your theme requests images, since both are free and require no new installs, and only reach for a bulk image or performance app if you are dealing with a large legacy catalog or a theme you genuinely cannot edit.

Still Stuck?

Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.