WordPress Images Not Displaying? 7 Ways to Fix It

You've uploaded images to your WordPress site — but instead of seeing your beautiful photos and graphics, you're looking at broken image icons, blank white spaces, or placeholder boxes where the images should be.

WordPress image display problems are incredibly common, and they show up in all sorts of ways:

  • Images appear broken on the front end but display fine in the Media Library
  • Featured images don't show on posts or the blog index
  • Images show in the editor but disappear after publishing
  • All images suddenly stopped displaying after an update or migration
  • Images load on desktop but not on mobile
  • Only some images are broken — others are fine

Each scenario has a different root cause — but all of them have clear, testable fixes. This guide covers the 7 most effective ways to resolve WordPress images not displaying.

What Causes WordPress Images Not Displaying?

  • Incorrect file permissions — WordPress image files need specific read permissions. If they're too restrictive, the server won't serve them to browsers
  • Broken or incorrect file URL — If your site URL has changed (after a migration, SSL switch, or domain change), image URLs in the database may point to the wrong location
  • Corrupted .htaccess file — A damaged .htaccess can block the server from serving media files correctly
  • Browser cache serving old broken data — Your browser may be caching a broken version of the page
  • Missing or regenerated thumbnail sizes — WordPress generates multiple thumbnail sizes for every uploaded image. If these were never created or deleted, they'll appear broken
  • Incorrect file ownership on the server — If image files are owned by the wrong server user, the web server process may not have permission to read them
  • CDN or caching plugin misconfiguration — A CDN serving stale or incorrect image URLs can cause images to appear missing
  • PHP memory limit too low — If WordPress runs out of PHP memory while generating image thumbnails during upload, thumbnails won't be created
  • Hotlink protection enabled incorrectly — Server-level hotlink protection configured too aggressively can block your own site from displaying its own images
01
Clear Your Browser Cache and Check in a Fresh Browser

Always start here — it takes 30 seconds and eliminates the most common false alarm. Your browser caches web pages and their resources aggressively. If images were temporarily broken and then fixed, your browser may still be serving the old broken version from cache.

Hard refresh the page:

  • Windows/Linux: Ctrl + Shift + R
  • Mac: Cmd + Shift + R

Clear your full browser cache:

  • Chrome: Settings → Privacy and Security → Clear browsing data → Cached images and files
  • Firefox: Settings → Privacy & Security → Clear Data → Cached Web Content
  • Safari: Preferences → Advanced → Enable Develop menu → Develop → Empty Caches

Test in a private/incognito window — This bypasses cache entirely and gives you a clean view of your site.

Test in a completely different browser — If images show in one browser but not another, it's definitively a browser cache or extension issue.

If images are still broken after clearing cache and testing in multiple browsers, the problem is on the server side. Continue to Fix 2.
02
Check and Fix File Permissions

WordPress image files need specific permissions to be readable by the web server. If permissions are set too restrictively — often after a manual FTP upload, a server migration, or a security hardening operation — the server will refuse to serve the images.

Correct permission values for WordPress media:

Item Correct Permission
/wp-content/uploads/ folder755
All subfolders inside uploads755
All image files (.jpg, .png, .gif, etc.)644

How to fix via FTP (FileZilla):

  1. Connect to your server via FTP
  2. Navigate to /wp-content/uploads/
  3. Right-click the uploads folder → File Permissions
  4. Set to 755 and check "Recurse into subdirectories"
  5. Select "Apply to directories only" → click OK
  6. Right-click the uploads folder again → File Permissions
  7. Set to 644 and check "Recurse into subdirectories"
  8. Select "Apply to files only" → click OK

How to fix via SSH:

Bash
# Fix folder permissions
find /path/to/wordpress/wp-content/uploads/ -type d -exec chmod 755 {} \;

# Fix file permissions
find /path/to/wordpress/wp-content/uploads/ -type f -exec chmod 644 {} \;
03
Fix Broken Image URLs After a Migration or Domain Change

This is the most common cause of all images suddenly breaking at once — especially after moving to a new domain, switching from HTTP to HTTPS, moving from a subfolder to the root, or migrating to a new server.

WordPress stores the full absolute URL of every image in the database. If your domain or URL structure changes, every single image URL becomes wrong.

How to identify this problem:

Right-click a broken image on your site and select "Open image in new tab". If the URL shows your old domain, old HTTP address, or wrong path — this is your problem.

How to fix it with Better Search Replace:

  1. Install and activate the Better Search Replace plugin
  2. Go to Tools → Better Search Replace
  3. In "Search for" enter your old URL (e.g., http://olddomain.com)
  4. In "Replace with" enter your new URL (e.g., https://newdomain.com)
  5. Select all database tables
  6. Run a dry run first to preview changes
  7. Uncheck "Run as dry run?" and click Run Search/Replace

Common URL replacements to run:

Search For Replace With
http://yourdomain.comhttps://yourdomain.com
http://www.yourdomain.comhttps://yourdomain.com
https://olddomain.comhttps://newdomain.com
http://localhost/mysitehttps://yourdomain.com
04
Regenerate WordPress Image Thumbnails

WordPress doesn't just store the original uploaded image — it automatically generates multiple resized versions (thumbnails) at specific dimensions defined by your theme and plugins. These are used for featured image boxes, gallery grids, archive pages, and more.

If these thumbnail files are missing or were never properly generated — which happens after theme switches, plugin changes, migrations, or PHP memory issues during upload — you'll see broken images wherever those specific sizes are expected.

How to regenerate thumbnails:

  1. Install and activate the Regenerate Thumbnails plugin (free)
  2. Go to Tools → Regenerate Thumbnails
  3. Click "Regenerate Thumbnails For All X Attachments"
  4. Wait for the process to complete — this can take several minutes on sites with large media libraries
  5. Refresh your site when done

Alternative: Use WP-CLI (for advanced users)

Bash
wp media regenerate --yes

When to use this fix:

  • Featured images appear broken on the blog index but display fine when you open the individual post
  • Gallery thumbnails are broken but full-size images work
  • Images broke after switching themes (new theme uses different thumbnail dimensions)
  • Images broke after adding a new plugin that registers custom image sizes
05
Check and Fix the .htaccess File

A corrupted or misconfigured .htaccess file can block the web server from serving image files — particularly if it contains overly aggressive security rules or broken rewrite conditions.

Check for hotlink protection rules:

Open your .htaccess file via FTP and look for a block like this:

Apache
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp)$ - [NC,F,L]

This is a hotlink protection rule that blocks other sites from embedding your images. If it's misconfigured — for example, if your domain in the rule doesn't match your actual domain exactly — it can accidentally block your own site from displaying images.

Check that the domain in the rule matches your current live domain exactly, including www vs. non-www and http vs. https.

Reset the .htaccess file:

  1. Rename it to .htaccess_old via FTP
  2. Go to Settings → Permalinks in WordPress and click Save Changes
  3. WordPress will generate a fresh, clean .htaccess file
If images now display after resetting .htaccess, your old file had a rule blocking image delivery.
06
Check PHP Memory Limit and Upload Settings

If images are breaking specifically during or after upload — thumbnails aren't generated, or uploaded images appear corrupted or blank — PHP memory and upload configuration are likely to blame.

PHP memory limit:

When you upload an image, WordPress uses PHP's GD or Imagick library to process and resize it into multiple thumbnail sizes. This requires significant memory. If PHP runs out of memory mid-process, thumbnails won't be created.

Fix — add this to wp-config.php:

PHP
define( 'WP_MEMORY_LIMIT', '256M' );

Upload file size and post size limits:

If large images fail to upload entirely, add to .htaccess:

Apache
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300

Or add to php.ini:

INI
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300

Check GD or Imagick is installed:

WordPress requires either the GD library or Imagick to process images. Check via Tools → Site Health → Info → Media Handling. If both show as unavailable, contact your hosting provider to enable one.

07
Disable CDN or Caching Plugin Temporarily

If your site uses a CDN (Cloudflare, BunnyCDN, KeyCDN) or a caching plugin (WP Rocket, W3 Total Cache, WP Super Cache) — these can occasionally serve stale or incorrect image URLs.

Test by bypassing your CDN:

Add ?nocache=1 to the end of a page URL and see if images display. If they do, your CDN or cache has stale data.

Clear your CDN cache:

  • Cloudflare: Log in → select domain → Caching → Configuration → Purge Everything
  • WP Rocket: Dashboard → WP Rocket → Clear Cache
  • W3 Total Cache: Performance → Dashboard → Empty All Caches
  • WP Super Cache: Settings → WP Super Cache → Delete Cache

Check CDN URL settings:

If your CDN rewrites image URLs to point to its own domain (e.g., cdn.yourdomain.com/wp-content/uploads/image.jpg), make sure:

  1. The CDN zone is active and correctly configured
  2. The CDN URL in your plugin settings matches your actual CDN domain
  3. SSL is properly configured on your CDN domain if your site uses HTTPS
Important: Temporarily disable the CDN or caching plugin to confirm whether it's the cause — if images display correctly without it, reconfigure the CDN/cache settings rather than leaving it disabled permanently.

Bonus: Check Image URLs Directly in the Browser

A quick diagnostic trick that works for any image display problem:

  1. Right-click a broken image on your site
  2. Select "Open image in new tab" or "Copy image address"
  3. Paste the URL directly in your browser's address bar and press Enter
What You See What It Means
404 Not FoundThe file doesn't exist at that path — wrong URL or file was deleted
403 ForbiddenFile exists but permissions block access — fix file permissions
The image loads fineURL is correct — browser cache or CDN was the problem
Redirected to homepage.htaccess rewrite rule is incorrectly catching image requests
Image loads but is wrong sizeThumbnail wasn't regenerated — use Regenerate Thumbnails plugin

Preventing WordPress Image Display Problems

  • Always regenerate thumbnails after switching themes. New themes often define different image sizes. Run Regenerate Thumbnails immediately after activating a new theme
  • Run a URL search-replace before going live after a migration. Never launch a migrated site without running Better Search Replace to update all URLs in the database
  • Set correct permissions after every FTP upload. If you manually upload files to wp-content/uploads/, always set permissions to 755 for folders and 644 for files
  • Keep PHP memory at 256 MB or above. Insufficient memory during image processing is a silent killer — thumbnails fail to generate with no visible error message
  • Clear CDN and plugin cache after making changes. After any significant change — new theme, plugin update, domain change — purge all caches before checking images

Quick Reference: Images Not Displaying Fix Summary

Symptom Most Likely Cause Fix
All images suddenly brokenDomain/URL changeRun Better Search Replace to update URLs
Images broken after theme switchMissing thumbnail sizesRegenerate Thumbnails plugin
Only thumbnails broken, full images fineThumbnail generation failedRegenerate Thumbnails plugin
403 Forbidden on image URLWrong file permissionsSet files to 644, folders to 755
404 on image URLFile missing or wrong pathFix URL mismatch or re-upload image
Images broken only in one browserBrowser cacheClear cache, test in private window
Images broke after migrationOld URLs in databaseRun Better Search Replace
Images broke after enabling CDNCDN serving wrong URLsClear CDN cache, check CDN settings
Upload works but thumbnail missingPHP memory too lowIncrease WP_MEMORY_LIMIT to 256M

Frequently Asked Questions

Q: Why do my images show in the WordPress Media Library but not on the front end?
A: This usually means the full-size image uploaded correctly but the thumbnail sizes WordPress needs for front-end display weren't generated. Run the Regenerate Thumbnails plugin to fix it.
Q: My images were fine yesterday but are all broken today. What changed?
A: The most common sudden causes are: a plugin or WordPress update that changed image handling, a CDN or caching issue, an SSL certificate activation that changed URLs from http to https, or a server-side change by your hosting provider. Start with Fix 3 (URL check) and Fix 7 (CDN/cache).
Q: Can I fix broken images without a plugin?
A: Yes. Most fixes in this guide — file permissions, .htaccess, wp-config.php edits, and URL fixes via phpMyAdmin — require no plugins. Regenerating thumbnails is the one task that's significantly easier with a plugin (or WP-CLI).
Q: Why do images load on desktop but not on mobile?
A: This is often a CDN or caching issue serving different content to different devices, or a theme that uses different image sizes for mobile that weren't generated. Check your theme's responsive image settings and clear all caches.
Q: How do I stop images breaking every time I migrate my site?
A: Run Better Search Replace as part of your standard migration checklist — before launch, not after. Also verify your wp-config.php has the correct WP_HOME and WP_SITEURL values for the new domain.

Final Thoughts

WordPress image display problems are almost always fixable without losing any content — in most cases, images are still physically on the server, they're just being served incorrectly or pointed to the wrong URL.

Work through the seven fixes in order: clear cache first, check permissions, fix URLs if you've recently migrated, regenerate thumbnails, inspect .htaccess, check PHP memory, and rule out your CDN or caching plugin.

Get in touch with us today and we'll get your images back
Views: 249