External images are images that appear in your posts but aren’t stored in your WordPress Media Library; they live on someone else’s server. They tend to creep in almost unnoticed: during a migration, when pasting from Google Docs or through old domains. Here’s how to find them and secure them for good.
How to recognize external images
Open a post in the editor, click an image and look at the image address. If it starts with your own domain and contains /wp-content/uploads/, the image is stored on your site. If it shows a different domain, for example static.wixstatic.com, googleusercontent.com or the address of an old website, the image is external.
A second clue: the image doesn’t show up in the Media Library. You can’t crop or compress it, and image optimization plugins ignore it.
Why you shouldn’t ignore them
- They can disappear at any time. You have no say in whether the other server will still deliver the image tomorrow.
- They slow down your site. Every third-party server needs its own connection, and you can’t optimize the images.
- They transmit data. When the image loads, the other server learns your visitors’ IP addresses.
- They’re missing from your backup. Your website backup only contains what’s stored on your server.
Three ways to get rid of them
1. By hand
Download the image, upload it to the Media Library, swap it in the post. That works for a handful of images. With 50 posts of five images each, that’s 250 repetitions.
2. On save
Some plugins import external images as soon as you save a post. That’s handy for new content, but it doesn’t help with existing posts, because you’d have to open and save each one individually.
3. In bulk for existing content
For existing content, a bulk import is the most efficient approach: select all affected posts, start the import, check the log. That’s exactly what we built Replace External Images for. It scans the selected posts, downloads every external image, checks that it really is an image and replaces the address in the content.
Step by step with Replace External Images
- Search for the plugin under Plugins → Add New Plugin and activate it.
- Create a backup.
- Under Posts, select all entries and choose the bulk action “Replace External Images”.
- Follow the progress in the import dialog.
- Use the “Problems only” filter to review skipped images.
If an image isn’t imported: Usually the other server blocks the download (HTTP 403) or returns an error page instead of the image. The plugin then saves nothing and tells you why. Download and upload those images manually once.
Conclusion
External images are a silent risk. The sooner you bring them into your Media Library, the more images you can still save. With a bulk import, it takes minutes instead of days, even on large websites.
