Home Bilby — store monitor Free store scan Free tools AI apps Navaal SEO app Blog Services Studio Contact Sign in

// Troubleshooting · Storefront

Why are your Shopify images not loading?

By Published Updated 7 min read

Last updated 28 September 2026.

Six causes, in order of likelihood: CDN propagation right after an upload, broken lazy-load JavaScript, an image-optimizer app conflict (or the URL rewrites it left behind), a deleted file still referenced, an ad-blocker or consent tool on the visitor's side, and a mobile-only rendering bug. One reload names yours: open the browser console (F12) → Network → filter Img → reload, and read the failing request. A 404 on cdn.shopify.com is a dead reference; a request that never fires is the lazy-loader; a third-party host is the optimizer or a blocker.

// Cause elimination — tick what's true, get your prime suspect

Tick what matches and your prime suspect — with its fix — appears here.

A broken product image doesn't stop a determined buyer the way a dead add-to-cart does — it does something quieter and almost as expensive: it makes the store look abandoned. Trust leaks. And because images often break for some pages, devices or visitors rather than all of them, the merchant is usually the last to see it.

The Bilby scan screen mid-visit on the demo store
The scan screen mid-visit on our labelled demo store, Fernwick & Co.: a screenshot per step as it lands, then the seven things it checks read the recording. Run it on your store: free, about a minute, no signup, we never touch your store. Run the free scan →

Where an image request dies

Every image on your store passes through six stages, and each stage is one of the six causes. The theme's Liquid produces the URL (is it correct?); the lazy-load script swaps it in (did the swap fire?); an optimizer app may rewrite it (is the rewrite still valid?); the request reaches Shopify's CDN or the app's (does the file exist?); it passes the visitor's blocker or consent tool (is it allowed?); and the device renders it. The Network tab tells you which stage failed in a single reload.

Cause 1: CDN propagation after upload

Just uploaded or replaced an image and it won't show? Shopify serves images from its CDN, and fresh uploads can take a few minutes to propagate — while your browser may also be caching the old (missing) response. Fix: wait a few minutes, then hard-refresh (Ctrl/Cmd+Shift+R) and re-test in a private window before touching anything else.

Cause 2: broken lazy-load JavaScript

Most themes load images lazily — a placeholder sits in the markup and JavaScript swaps in the real image as you scroll. If any script error fires first (a theme edit, an app conflict), the swap never happens and you get grey boxes that never fill. Signature: images fine at the top of the page, missing below the fold; the console shows a red JavaScript error. Fix: find the erroring script (it's named in the console) — if it's an app's, disable that app embed; if it's the theme's, publish your last known-good theme copy.

Cause 3: image-optimizer app conflicts (and their ghosts)

Optimizer apps rewrite image URLs to serve compressed versions from their own CDN. Two failure modes: the app conflicts with the theme's lazy-loader (both fighting over the same src), or — nastier — you uninstalled the app and its URL rewrites remain, pointing at a service that no longer recognises your store. Fix: for conflicts, disable one of the two lazy-load layers; for ghosts, remove the app's leftover code (that's a leftover-code problem — our free scanner finds the residue).

Cause 4: renamed or deleted files still referenced

An image deleted from Files (or a product image removed) that's still referenced in a theme section, a page or hard-coded HTML returns 404 forever. Signature: the Network tab shows a 404 on a cdn.shopify.com URL. Fix: re-upload the file under the same name, or update the reference to the current file.

Cause 5: ad-blockers and consent tools

Some visitors' ad-blockers block third-party image hosts (common with images served via marketing or optimizer domains), and aggressive consent tools can hold back image scripts until acceptance. These customers see broken images while you see none. Fix: serve product imagery from Shopify's own CDN rather than third-party hosts, and test your consent tool's "reject all" path — the store should still show its products.

Cause 6: mobile-only failures

Lazy-load thresholds, responsive srcset bugs and app widgets can break images only on phones — where most stores' sessions live (check Sessions by device in your Shopify analytics for your own split). Fix: always test on a real phone over mobile data, not a resized desktop window; the phone's remote-debug console, or a simple screenshot comparison, shows what desktop testing hides. More in why is your store not working on mobile?

A broken image request has exactly six places to die — theme URL, lazy-load script, optimizer rewrite, CDN file, visitor's blocker, or device rendering — and the browser's Network tab tells you which one in a single reload.

Broken images are exactly the class of bug you find last. They fail for some pages, some devices, some visitors — and sit there costing trust. Bilby renders your store nightly in a real browser and checks that visible images actually rendered (double evidence: the element failed and the server errored), then emails you the screenshot with the image circled. One free visit, right now.

The images that cost the most are the ones that break for other people: a blocker, a consent tool or a phone-only bug leaves the merchant's own screen perfect while the customer's shows grey boxes.

Frequently asked questions

Why are my Shopify images not loading?
One of six causes: CDN propagation after upload, broken lazy-load JS, optimizer-app conflicts (or their leftover rewrites), deleted files still referenced, blockers or consent tools, or mobile-only bugs. The Network tab (F12) points at the guilty stage in one reload.
Why do images load for me but not for customers?
Cache (yours) or situation (theirs): ad-blockers, consent tools, mobile-only bugs, regional CDN issues. Reproduce with a private window, a real phone on mobile data, and an ad-blocker enabled.
Images broke after removing an optimizer app — why?
The app's URL rewrites stayed in your theme, pointing at a CDN that no longer serves your store. Remove the leftover code — the residue scanner finds it.
How do I catch broken images before customers do?
A nightly automated render of your store that verifies each visible image actually drew — with a screenshot when one didn't. That's part of Bilby's Watch check.

Keep reading: Leftover app code, explained · Not working on mobile? · The Watch check

// Found last, fixed in minutes

Is your store
actually okay?

Bilby visits your store like a customer and reports anything broken — images included — with screenshots. One free scan, no signup.

Thin or missing product content is the other half of this problem, and it is the half search engines and AI assistants see. Navaal: AI SEO, AEO & GEO audits a Shopify catalogue for it free, and writes what is missing for review.