Free: Check whether your WordPress website loads images from other servers.Free check: Does your site load external images?Run the check →

Images missing after a WordPress migration? The 7 most common causes and how to fix them

Images missing or showing empty frames after your WordPress migration? Find the cause in minutes and get every image back.

The migration is done, the new site is live, and then you see it: empty frames, broken image icons or images that only show up for you. Don’t panic. Almost always one of seven causes is behind it, and most of them take only a few minutes to fix. This guide helps you find out what’s wrong first and then gives you the right fix.

Check first: is the image gone or just the link wrong?

Before you change anything, look at the address of a missing image. Right-click the empty frame and choose “Copy image address” (or “Copy image link”, depending on your browser). Paste it into a new tab. What you see there already points you in the right direction:

  • The address contains your old domain or a test address such as staging. or localhost: the links were not updated. Go to cause 1 →
  • The address belongs to someone else’s server, for example static.wixstatic.com, blogger.googleusercontent.com or a former agency’s site: the image was never on your server. Go to cause 2 →
  • The address is correct, but you get “404 – not found”: the file is missing on the server. Go to cause 3 →
  • The address starts with http:// while your site uses https://: the browser blocks the image. Go to cause 4 →
  • The image opens fine in the new tab but is missing on the page: it’s more likely the cache, image optimisation or your page builder. Go to causes 5 to 7 →

Clicking through lots of pages gets tedious. Our free online check is faster. In under a minute it shows you which images your new site still loads from other servers or from the old domain.

Free check

Does your website load images from other servers?

Enter your domain. In under a minute you’ll see whether images, fonts or services come from other servers. If you like, we then check every page and email you the full report with every location found.

✓ Instant result in your browser✓ Full report by email✓ Free

Cause 1: The images still point to the old domain

WordPress stores image addresses as full links in your posts, for example https://old-domain.com/wp-content/uploads/2024/05/photo.jpg. When you move to a new domain, these links stay as they are. The tricky part: as long as the old site is still online, you keep seeing the images. They only disappear when the old domain is switched off, often weeks after the migration.

How to fix it: Replace the old address with the new one in the database. Use a plugin such as Better Search Replace or, if you have command-line access, wp search-replace. Both handle WordPress’s serialised data correctly. A plain search and replace in an SQL file, on the other hand, can break that data. Make a backup first.

Cause 2: The images were never on your server

This is the most common case after moving from Wix, Jimdo, Blogger or a site an agency looked after. The text was copied over, but the images were only linked. They keep loading from the old provider, which is called hotlinking. As soon as the old contract ends or the provider blocks access, the images are gone. Why this is also a privacy issue is explained on our page about hotlinking.

How to fix it: Bring the images into your own media library while they are still available at the old address. The free plugin Replace External Images does this in one go: make a backup, install the plugin, click “Import all” above the post list. The plugin downloads every image, adds it to your media library and replaces the addresses in your content. More in our guide Import external images into WordPress.

Cause 3: The uploads folder was not copied completely

The links are right, but the files are missing. This happens when a migration plugin stops because of a size limit, when media were excluded from the export, or when only the database was copied during a manual migration.

How to fix it: Connect to the old server via FTP or your host’s file manager and copy the whole wp-content/uploads folder to the same place on the new server. If only small thumbnails are missing after that, recreate them with a plugin such as Regenerate Thumbnails.

Cause 4: Mixed content (http and https)

If the new site runs on SSL but the images are still linked with http://, many browsers block them as “mixed content”. You’ll see a “Mixed Content” warning in the console of the developer tools (F12).

How to fix it: Under Settings › General, switch both addresses to https://. Then, as in cause 1, replace http://your-domain.com with https://your-domain.com in the database.

Cause 5: File permissions or a wrong upload path

If the files are on the server but it won’t deliver them (error 403), the permissions are usually wrong. Another classic is a hard-coded upload path that still points to the old server’s directory. Then new uploads end up nowhere too.

How to fix it: Set the permissions via FTP to 755 for folders and 644 for files. Also check whether the upload_path entry in the wp_options database table contains an old path. Normally this field is empty.

Cause 6: Cache, CDN or image optimisation

If you can see the images but your visitors can’t, or the other way round, a cache is often to blame. Plugins for WebP or lazy loading can also trip up after a migration because their rules in the .htaccess file did not move with the site.

How to fix it: Clear the cache of your caching plugin, of Cloudflare or another CDN, and of your browser. Then open the settings of your image optimisation plugin and save them once. Many plugins write their .htaccess rules back when you do.

Cause 7: Your page builder doesn’t know the new addresses

Elementor, Divi and other page builders store background images in their own CSS files and addresses in a special format that a normal search and replace often misses. Typical sign: images in the text are there, but section backgrounds are missing.

How to fix it: In Elementor, go to Elementor › Tools, use “Replace URL” first (enter the old and new address) and then “Regenerate Files & Data”. If the background images were on someone else’s server, our Elementor add-on imports them too.

Finally: check and prevent

Once you’ve fixed the cause, run the online check again. If your old domain or a former provider no longer shows up, you’re on the safe side, even when the old site is eventually switched off. Still planning a migration? Our guides include a checklist for images after a WordPress migration, so it doesn’t get this far.

Frequently asked questions

Why can I see the images but my visitors can’t?

Usually your browser still has the images in its cache, or you are logged in and see an uncached version. Open the page in a private window to see it the way your visitors do.

The old site is already offline. Can I still rescue the images?

The plugin needs the images at their old address. If that is no longer reachable, ask your old host for a backup. Sometimes individual images can also be found in the Internet Archive (web.archive.org). That’s why it pays to import the images before you cancel the old contract.

Do I have to edit every post by hand?

No. Search and replace in the database and the import with Replace External Images work across all posts and pages. At most, you’ll need to touch images that sit in widgets or theme settings.

Does this also work after moving from Wix or Jimdo?

Yes. Images there are often only linked during the import. The online check shows you whether your new WordPress site still loads images from static.wixstatic.com or similar servers, and the plugin brings them into your media library.

All external images into your Media Library at once

Replace External Images does it in one run, with a progress bar and a log. Free for posts and pages.