Images Not Loading
Photos and graphics show as broken icons, blank spaces, or load painfully slowly — making a working site look abandoned or untrustworthy.
Common signs of this issue
- Images appear as a broken-image icon, an empty box, or just alt text.
- Some images load while others don't — or everything below a certain date is broken.
- Images load very slowly, appear in stages, or only pop in after scrolling.
- It started after a migration, a redesign, enabling SSL, or a media-library cleanup.
- Images look fine to you but visitors (or a private window) show them broken — a cache split.
Safe checks you can do yourself
None of these require sharing passwords with anyone.
- Sort by scope first: a few broken images point at those specific files (deleted, renamed, moved); all broken points at one shared cause — a path problem, a permissions change, files that didn't survive a migration, or a broken image-processing plugin.
- Interrogate one broken image: right-click → "Open image in new tab" and read what happens. A 404 means the file isn't at that address (moved/deleted/never transferred). The old domain or a temporary migration URL in the address means pages still link to the previous site. A security warning means an http-vs-https problem — that's the mixed-content guide.
- Check in a private/incognito window and on your phone — this separates a genuinely broken image from your own cache showing you stale success (or stale failure).
- If it followed a migration: spot-check whether the files exist on the new server (the media library or the uploads folder via your host's file manager) — this splits "files never transferred" (re-copy them) from "files exist but links point elsewhere" (fix the addresses).
- If images are merely slow: they're almost certainly oversized originals — multi-megabyte camera photos shipped raw. That's a compression task, not a repair — see the speed guide, and note lazy-loading (images appearing as you scroll) is a feature, not a fault.
- If a specific optimization/CDN plugin (Smush, Imagify, Jetpack's CDN, Cloudflare Polish) recently changed or errored, it can break delivery of images that exist perfectly well — check that plugin's status page or temporarily pause its CDN option to test.
What this usually means
A broken image is a working page asking for a file at an address where no file answers. The question is always "why doesn't the address match the file?" — and the open-in-new-tab check answers it: the file moved or was deleted (a 404 at the right domain), the links still point at an old home (the wrong domain in the address), or a layer between — permissions, an image CDN, hotlink protection — refuses to serve it.
Migrations are the classic mass-breaker: either the uploads folder never fully transferred (fix: copy it over), or thousands of links in the content still reference the old address (fix: a proper search-and-replace with a purpose-built tool — naive database find-and-replace corrupts serialized data, which is why backups precede it).
Broken images cost more than aesthetics: they read as "abandoned site" to visitors and remove your pages from Google Images — a real traffic source for many businesses. Alt text showing instead of a product photo converts approximately nobody.
What not to do
- Don't re-upload hundreds of images before diagnosing — if the real problem is addresses pointing at the old site, re-uploading fixes nothing and doubles your storage.
- Don't bulk-edit the database to swap addresses without a backup and a serialization-aware tool — the standard way sites get subtly corrupted.
- Don't upload camera-original photos as the fix for slow images — resize/compress for the web; a 4MB image punishes every visitor on every load.
- Don't delete 'unused' images from the media library during cleanup unless certain nothing references them — that's how today's cleanup becomes next month's broken-images mystery.
- Don't ignore one broken image on a money page — a single dead product photo on a checkout path outweighs twenty on old blog posts.
When to get help
A handful of broken images is a DIY fix: identify via open-in-new-tab, re-upload or re-link. The case worth careful hands is site-wide breakage after a migration — verifying the files, running the address migration with proper tooling, and clearing caches in one pass. It's an hour or two of practiced work, and doing it correctly once beats weeks of finding stragglers page by page.
Not sure what to do next?
Answer a few short questions and we'll point you to the safest next step — DIY, a freelancer, or a direct review. No passwords required.
Frequently asked questions
Why did images break after moving my site?
One of two migration classics: the image files never transferred to the new server, or the pages still link to the old address (or a temporary migration URL). Right-click a broken image and open it in a new tab — the address it tries tells you which.
What does right-clicking a broken image actually tell me?
The address reveals the story: a 404 on your current domain = file missing there; the OLD domain in the address = links never updated; a security error = http/https mixed content; an image-CDN domain erroring = the optimization service, not your files.
My images are slow, not broken — what helps?
They're almost certainly oversized originals. Compressing and resizing for the web (tools and plugins do this in bulk) is the highest-impact, lowest-risk fix on most small sites — often cutting page weight by more than half. See the speed guide.
Images load for me but not for my visitors. How?
You're seeing your browser's cached copies of files that are actually gone or blocked. A private window or your phone on mobile data shows the truth. Fix the underlying files/links, then purge site caches.
Do broken images hurt SEO?
Yes, modestly and really: they remove you from Google Images results, worsen the page-quality signals Google reads, and — the bigger effect — make visitors trust and buy less. Money pages first when fixing.
Why do images only appear when I scroll down to them?
That's lazy loading — a performance feature that defers offscreen images so the visible page loads faster. It's working as intended. Only if images fail to appear when scrolled into view is something actually broken.