When WordPress images stop displaying, visitors see blank spaces or broken image icons where your content should be. The cause is rarely obvious at first glance because several unrelated issues produce the same symptom.
This guide walks through the most common reasons WordPress images not displaying occurs and gives you a clear sequence of checks to follow. By the end, you will have identified the cause and restored your images.
yourdomain.co.uk/wp-admin.Before investigating server or configuration issues, confirm whether the image file itself is present and accessible. A missing or corrupted file in the media library means no amount of configuration changes will restore the image on the front end.

If the file is present and the URL loads correctly in the browser, the problem lies elsewhere. Continue to the next section.
File permissions control which users and processes can read, write or execute files on the server. If the permissions on your uploads folder or image files are too restrictive, the web server cannot read them and the browser receives no image data.
The correct permissions for WordPress are 755 for directories and 644 for files. You can set these via SSH or through your hosting control panel’s file manager.
To correct permissions via SSH, connect to your server and run the following two commands, replacing /home/username/public_html with the actual path to your WordPress installation:
find /home/username/public_html/wp-content/uploads -type d -exec chmod 755 {} \;
find /home/username/public_html/wp-content/uploads -type f -exec chmod 644 {} \;
The first command sets all directories inside uploads to 755. The second sets all files to 644. After running commands, reload the affected page to confirm images now display.
If you prefer not to use SSH, you can set permissions through cPanel’s File Manager. Navigate to public_html/wp-content/uploads, right-click a folder or file, select Change Permissions and enter the correct value.
Modern browsers block resources loaded over HTTP when the page itself is served over HTTPS. If your site was migrated to HTTPS after images were uploaded, those image URLs in the database may still reference http://, causing them to be blocked silently.
You can confirm this is the cause by opening your browser’s developer tools (press F12 in most browsers), clicking the Console tab and looking for mixed content warnings. They typically read: Mixed Content: The page was loaded over HTTPS, but requested an insecure resource.
http://yourdomain.co.uk replacing the domain with your own. In the Replace with field, enter https://yourdomain.co.uk.For a more detailed walkthrough of forcing HTTPS across your WordPress site, see our guide on forcing HTTPS in WordPress.
A caching plugin stores static copies of your pages to reduce server load. If an image was recently replaced or re-uploaded, visitors may still see the cached version of the page, which references the old file path. Clearing the cache forces WordPress to rebuild those pages with the current file references.
Ctrl + Shift + Delete on Windows or Cmd + Shift + Delete on macOS to open your browser’s clear browsing data panel. Select Cached images and files and clear them.If images still do not appear after clearing the cache, the problem is not cache-related. Continue to the next check.
A plugin or theme can interfere with how WordPress generates image URLs or outputs HTML. Security plugins, page builders and performance plugins are common sources of this type of conflict. The fastest way to confirm a conflict is to disable all plugins temporarily and switch to a default WordPress theme.

Once you have identified the conflicting plugin, reactivate the rest of your plugins and restore your original theme.
Hotlink protection prevents other websites from embedding your images directly by blocking requests where the referring domain does not match your own. If this setting is misconfigured, it can block your own site from loading images, particularly after a domain change or migration.
http://yourdomain.co.uk and https://yourdomain.co.uk should be present.For a full guide on configuring this feature, see our article on setting up hotlink protection in cPanel.
Lazy loading defers the loading of images until they scroll into the viewport, which reduces initial page load time. WordPress has included native lazy loading since version 5.5. When a performance plugin adds its own lazy loading on top of the native implementation, or when the configuration is incorrect, images may never load at all.
If disabling lazy loading resolves the issue, check whether an update is available for the plugin before re-enabling the feature.
This usually points to a theme conflict or a caching layer that is serving stale pages to visitors. The admin area bypasses most caching and theme output filters, so images appear there even when the front end is broken.
Ctrl + U on Windows) and inspecting the src attribute of the broken image tag.Migrations frequently leave old domain URLs hardcoded in the database. WordPress stores image paths as absolute URLs, so moving from one domain to another without updating the database leaves every image pointing to the old location.
wp-content/uploads folder was transferred correctly during the migration and that file permissions were preserved.Featured images are controlled by the active theme. If the theme does not declare support for featured images, WordPress will not display them even if they are set correctly in the post editor.
functions.php file includes add_theme_support( 'post-thumbnails' );. If it does not, add this line inside the theme’s setup function.If you cannot upload images at all, the problem is typically a full disk, incorrect folder permissions or a PHP upload limit that is too low.
wp-content/uploads directory has write permissions (755 for the directory).upload_max_filesize and post_max_size values. You can view current PHP settings using a phpinfo file.Image problems in WordPress often overlap with broader performance and security topics. Understanding how WordPress handles media, caching and HTTPS gives you a stronger foundation for diagnosing future issues.
If your site was recently compromised, malware can alter file permissions, delete files from the uploads directory or inject code that breaks image output. Our guide on removing malware from WordPress covers how to identify and clean an infected site.
Serving images in modern formats such as AVIF can significantly reduce file sizes without visible quality loss. Smaller files are less likely to time out on slow connections and reduce the chance of partial loads. See our guide on optimising WordPress with AVIF for a practical walkthrough.
If your site uses a CDN to deliver images, a misconfigured or stale CDN cache is a common cause of images not updating after re-uploads. Our guide on migrating your DNS zone to Cloudflare includes notes on cache purging that apply to image delivery.
For a broader look at WordPress performance, including how caching layers interact with media files, the WordPress developer documentation on performance provides authoritative reference material. The web.dev guide to image performance covers browser-level image loading behaviour, which is useful context when diagnosing mixed content and lazy loading issues.
You have worked through the main causes of WordPress images not displaying, covering missing files, file permissions, mixed content, caching, plugin conflicts, hotlink protection and lazy loading. Each check narrows down the cause so you can apply the right fix rather than guessing.
After restoring your images, review your site’s backup schedule to make sure you have a recent restore point in place. See our guides on backing up WordPress, installing a free SSL certificate and forcing HTTPS in WordPress to keep your site secure and your media loading correctly going forward.
Our WordPress hosting plans include server-level caching, SSL certificates and regular backups, reducing the likelihood of image issues caused by configuration problems.
Get fast, secure and reliable WordPress Hosting with optimised for performance with AccelerateWP.
Get WordPress HostingCreate fully isolated individual accounts for your clients and manage them all from one dashboard.
Get Reseller Hosting