Skip to content

WordPress Images Not Showing or Upload HTTP Error? How to Fix It

Broken images, missing thumbnails, or an "HTTP error" on upload? Check image URLs, caching, files, upload limits, the image library, and folder permissions.

Designer working on a website layout at a desktop computer

Your WordPress images have stopped working. Maybe the Media Library shows grey boxes instead of thumbnails, pages show broken image icons, or uploads fail with a vague “HTTP error” or “The server cannot process the image”. These problems look similar but have different causes, so it helps to first work out which one you have.

This guide covers the two main situations: images that exist but do not display, and new uploads that fail.

First: which problem do you have?

  • Old images are missing on the site, but uploads work: usually a URL problem after a migration or HTTPS change, a caching or lazy-loading issue, or missing files. Start at Step 1.
  • New uploads fail with “HTTP error” or a similar message: usually server limits, image processing, or file permissions. Jump to Step 5.
  • Thumbnails are missing in the Media Library only: usually missing image sizes or permissions. See Steps 4 and 7.

Step 1: Check the image URL

Right-click a broken image and choose Open image in new tab (or Copy image address). Look at the URL:

  • It points to an old domain or a staging site, such as staging.yoursite.com or oldsite.com: the site was moved without updating image URLs in the database.
  • It starts with http:// while your site uses https://: browsers block or warn about these as mixed content.
  • It opens a 404 page: the file is missing from the server, or the path is wrong.
  • It opens a 403 Forbidden page: permissions or a security rule is blocking it.

Step 2: Fix old or HTTP image URLs

If URLs point to an old domain or to http://, replace them in the database. Do not use a plain text search-and-replace on an SQL file, because WordPress stores some data in a serialized format that breaks if lengths change. Use a tool that handles this:

  • A plugin such as Better Search Replace. Run a dry run first to see how many changes it will make.
  • WP-CLI, which is serialization-safe and fast:
wp search-replace 'http://oldsite.com' 'https://yoursite.com' --all-tables --dry-run

Remove --dry-run to apply the changes, after taking a database backup. For HTTPS problems specifically, our guide to fixing mixed content after moving to HTTPS walks through every step.

Step 3: Clear caches and test lazy loading

Image optimization, lazy-loading, and CDN features can stop images from appearing when they are misconfigured or after an update:

  • Clear your caching plugin, server cache, and CDN cache, then check in a private browser window.
  • Temporarily turn off lazy loading, WebP conversion, or “CDN URL rewriting” in your optimization plugin, and reload. If images return, adjust that setting or exclude the affected images.
  • If you use a CDN, check that its URL still works and that its origin points to your current server.
  • Open the browser console (F12, then Console). A JavaScript error can stop a lazy-loading script from swapping in the real images.

Step 4: Check that the files exist

Open wp-content/uploads in File Manager or over SFTP and find the year and month folders that match the broken images. If the files are missing, they were not copied during a migration, or something deleted them. Restore the uploads folder from a backup or from the old server.

If the original files exist but thumbnails do not, install Regenerate Thumbnails, or run this with WP-CLI:

wp media regenerate --only-missing

Step 5: Fix “HTTP error” when uploading

The “HTTP error” message hides the real problem. Try these in order:

  • Retry and refresh. Log out, log back in, and try again. A session timeout can cause a one-off failure.
  • Try a smaller image. Resize a photo to around 2000 pixels wide and try again. If it uploads, the server is struggling with large images.
  • Check the file name. Rename files to simple names with letters, numbers, and hyphens, such as team-photo.jpg. Some special characters cause problems.
  • Check upload limits. Media → Add New shows the maximum upload size. If your file is larger, raise upload_max_filesize and post_max_size in your hosting panel’s PHP settings.
  • Raise the memory limit. Resizing large images needs memory. See our guide to fixing the allowed memory size exhausted error.
  • Disable plugins that process images on upload, such as optimization or watermark plugins, and test again.
  • Check the error log. Your host’s error log or the WordPress debug log often shows the real cause, such as a timeout or a PHP image library error.

Step 6: Check the image library on the server

WordPress resizes images using the PHP Imagick or GD extension. Go to Tools → Site Health → Info → Media Handling to see which is in use. If neither is listed, ask your host to enable one. If Imagick is in use and large uploads fail, it may be limited by the server’s resources. You can ask WordPress to use GD instead by adding this to a small custom plugin or a code snippets plugin:

add_filter( 'wp_image_editors', function () {
	return array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' );
} );

WebP and AVIF uploads also depend on server support. If WebP uploads fail but JPEGs work, the server’s image library may not support WebP. Your host can tell you.

Step 7: Check folder permissions

WordPress must be able to write to wp-content/uploads and the year and month folders inside it. Folders should normally be 755 and files 644. If uploads fail with “Unable to create directory” or “Is its parent directory writable by the server?”, the permissions or file ownership are wrong, which is common after a migration. Avoid setting 777; ask your host to correct the ownership instead.

Also check Settings → Media and, on older sites, the upload_path setting. If uploads are going to an unexpected folder, an old custom path may be set.

When to call an expert

Get help if images went missing after a migration and you do not have the original files, if a search-and-replace would touch thousands of rows and you have no tested backup, or if uploads keep failing after you have raised the limits. These often need access to server logs and settings that only a developer or your host can change safely.

Want your images back without the guesswork? Our WordPress Fix service finds why images are missing or uploads fail, fixes URLs safely, restores thumbnails, and corrects server settings. Fixed price of $49, confirmed before any work starts, with our Service Guarantee. Request a fix.

Frequently asked questions

Why do images show in the editor but not on the live site?

This usually points to caching, lazy loading, or a CDN. The editor loads images directly, while the live page goes through those layers. Clear the caches and test with lazy loading turned off.

Will regenerating thumbnails change my images?

It recreates the resized copies from your original uploads. The originals are not changed. It can take a while on large libraries, so run it during a quiet time.

Can I upload HEIC photos from an iPhone?

Support depends on your WordPress version and on the server’s image library. If HEIC uploads fail, convert the photos to JPEG or set your iPhone to save photos in a “Most Compatible” format.

Still Stuck? We Can Fix It for You

Tell us what is going on. We confirm the scope and price before any work begins.