October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
CDN

Why Images Don’t Load on Websites and How to Fix Them

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

An image that will not appear is a symptom, not a diagnosis. The cause may be a browser extension, stale cache, a wrong file URL, a 404 response, a server rewrite rule, a CDN cache, a Content Security Policy (CSP), or a cross-origin restriction in code. Start with reversible visitor checks, then inspect the actual image request if you manage the site.

First, define the failure

Before changing settings, record the pattern. Note whether:

  • one image is missing or every image is missing;
  • the problem affects one page, one site, or many sites;
  • it occurs in one browser, every browser, one device, or every device;
  • it appears only on one network;
  • the image area is blank, shows a broken-image icon, or displays an error message; and
  • the browser console or Network panel reports a status code or policy violation.

This scope prevents a local browser problem from being confused with a broken upload or server configuration. Save the page URL, the failing image URL (if you can obtain it), your browser and device, and any visible error text before making changes.

Visitor fixes: quick and reversible checks

1. Reload once, then use a private window

Reload the page once. If the image remains absent, open the same URL in a private or incognito window. Google lists private browsing as an initial troubleshooting step for Google Images, where images may otherwise appear missing or slow to load. A private window starts with a different cookie and extension state, so it is a useful isolation test; it does not prove that every website image problem is browser-side. Google’s troubleshooting guidance is specifically for Google Images.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

2. Clear cache and site data

If the image works privately but not in your normal window, clear the affected site’s cookies and cached files, then reload. A stale cached document or image can preserve an old URL or failed response. Browser menus differ, but the usual path is the site information icon beside the address, followed by site data or cookies, then remove the data and reload. Test after this step so you know whether it changed the result.

3. Temporarily disable extensions and toolbars

Content blockers, privacy tools, antivirus browser modules, download managers, and accessibility extensions can block image requests or rewrite pages. Disable extensions temporarily, reload, and re-enable them one at a time. If one extension restores the images when disabled, keep it disabled for that site or adjust its per-site rule rather than turning off browser security globally.

4. Confirm JavaScript when the page depends on it

Some galleries and image viewers insert the final src only after JavaScript runs. Verify that JavaScript is enabled for the site, reload, and check again. This is relevant to script-rendered experiences; a plain HTML image with a valid URL does not require JavaScript to display.

5. Try another browser or network as an isolation test

Open the page in another browser, on another device, or on a different network such as mobile data. A difference points toward browser state, an extension, DNS, filtering, or the network path. It is an isolation result, not a guaranteed fix. If only one site fails everywhere, send its owner the URL, one failing image URL, your browser/device, and the exact error.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Find the failing layer in developer tools

If you own the site or can inspect it, open the browser’s developer tools (usually F12 or Ctrl/Cmd+Shift+I). In Network, reload with the panel open and filter by “Img” or search the filename. Select the failed request and record its URL, status, response headers, and timing. In Console, copy the first relevant error, especially a CSP or CORS message.

What you observe Likely layer Next check
404 or another missing-resource status URL, upload, routing, or rewrite Open the URL directly and verify the file and server path.
200 response but blank/broken rendering Wrong content, decode, or processing Inspect the response headers and file bytes; confirm the response is actually an image, not an HTML error page.
403, 401, or denied response Permissions, authentication, hotlink or access rules Check server/CDN rules and whether the request needs credentials.
Network, TLS, DNS, or timeout error Connectivity or certificate Test the direct URL from another network and inspect certificate and DNS configuration.
CSP violation in Console Security policy Compare the image host with the policy’s img-src directive.
CORS error while code reads bytes Cross-origin fetch policy Distinguish scripted byte access from ordinary image display and configure the server accordingly.

This table is a diagnostic guide, not an exhaustive status-code reference. The request and console message are more reliable than the visual symptom alone.

Site-owner checks: URL, file, and template

Open the image URL directly

Copy the exact URL from the rendered HTML or Network panel and open it in a new tab. Check spelling, capitalization, path, hostname, protocol, and file extension. Confirm that the server returns the intended image rather than an error document. If the direct URL fails, fix the resource or routing before changing page markup.

Verify the upload and generated variants

Check that the original file exists in storage and that the thumbnail, responsive-size, or WebP/AVIF variant referenced by the page was generated. Re-save or regenerate the image only after confirming the source file and destination path. A template can also point to an old directory or an empty variable, so inspect the final HTML rather than only the editor’s media field.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Review browser, plugin, and site caches

Clear the browser cache, the application or plugin cache, and any page-cache layer that may still serve old markup. A stale cache can make a correct fix appear ineffective. Purge only the affected entries when possible, then test in a private window to avoid reusing local state.

Migration and 404 failures: inspect rewrites

If images stopped working during a domain move, host change, or permalink change and the requests now return 404, review web-server rewrite configuration. WordPress documents mod_rewrite as one possible cause in certain Apache, migration, and shared-hosting situations; it is not a universal explanation for WordPress image failures. In WordPress, resave Settings → Permalinks to regenerate rules, and compare the site’s document root and upload path with the server configuration. If editing server files is unfamiliar, ask the host to check the rewrite rules and error logs. WordPress’s Apache guidance describes the relevant cases.

Rank #3
The New Real Book
  • Used Book in Good Condition

CDN and optimization caches

A CDN can cache a failed image response just as it caches a successful one. If you use Cloudflare image optimization or another CDN, purge the individual image URL (rather than starting with a global purge), then retest in a private tab. Cloudflare’s troubleshooting procedure includes URL-specific purging and private testing. Follow Cloudflare’s missing-image guide for its current controls. Also check whether an image optimization rule is rewriting the path, format, or query string.

Content Security Policy can block an otherwise valid image

A Content Security Policy controls which origins a page may load. If the image host is not permitted by img-src (or by the policy’s applicable default), the browser blocks the request and reports a violation. The W3C specification states: “Whenever the user agent fetches a URL in the course of one of the following activities, if the URL does not match the allowed image sources for the protected resource, the user agent MUST act as if there was a fatal network error and no resource was obtained, and report a violation.” See the CSP image-source rule.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Read the exact Console message, identify the blocked origin, and update the policy deliberately. Do not solve a single missing image by removing CSP or allowing every origin. Validate the header in a staging environment before deploying it.

CORS: important for scripts, not usually for display

Cross-Origin Resource Sharing (CORS) chiefly matters when JavaScript fetches an image’s bytes for processing, such as drawing it to a canvas, resizing it, or passing it to an editor. A normal <img> element can often display a cross-origin image even when a script cannot read those bytes. The error context matters: inspect whether the failing request is an image element or a scripted fetch/XMLHttpRequest.

For a browser-side fetch, configure the image server’s Access-Control-Allow-Origin response appropriately, subject to your security requirements. If a WordPress editor or plugin needs to import a remote file, WordPress documents a server-side sideload route that avoids relying on a user browser’s cross-origin read. WordPress HTTP request guidance and its media sideload documentation describe those approaches.

Check formats only when the evidence points there

Do not switch formats simply because an image is missing. First establish that the URL, response, and policy are correct. Then investigate decode, upload, or processing errors. WordPress’s current media documentation lists JPEG, PNG, WebP, AVIF, GIF, and HEIC among formats used by its processing workflow, but that list is not a guarantee that every browser, server library, or plugin supports every format in every context. Confirm your actual browser and processing pipeline, and keep a fallback format when a target environment cannot decode the original.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Performance and reliability checks

  • Use the Network panel’s timing details to distinguish a slow origin, stalled connection, and fast policy rejection.
  • Check whether lazy loading waits for a selector or viewport event that never occurs; test the image URL directly to separate loading logic from file availability.
  • Keep cache invalidation predictable when replacing files. Versioned filenames or query strings can prevent old variants from surviving, but purge the corresponding CDN entry.
  • Test authenticated, geolocated, or cookie-dependent images in the same context as real visitors. A URL that works in an administrator session may return 403 for everyone else.
  • After each change, retest the direct URL, the embedded page, a private window, and at least one alternate network when practical.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If your goal is a dependable page image or PDF capture rather than diagnosing your own browser, ScreenshotNeo makes one request to its screenshot API. Before capture it accepts cookie/consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each step can be disabled. Only clean shots are billed: bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and response headers identify the page verdict and billing result. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.

See the complete parameter reference in the ScreenshotNeo documentation. The following calls are runnable; replace the URL and key.

cURL

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

ScreenshotNeo includes full-page capture with lazy images loaded, CSS-selector element capture, dark mode, 12 device presets and custom viewports, retina scale, PDF paper sizes/margins/landscape/page ranges, custom CSS and JavaScript, click-before-capture, selector hiding, waits for selectors/delays/network idle, ad/tracker/request/resource blocking, custom headers/cookies/user agents/Authorization, timezone and geolocation, transparent backgrounds, resizing, chosen cache TTLs, signed links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API, an OpenAPI specification, and compatibility with parameter names used by other screenshot APIs.

Every feature is available on every plan: Free includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots, with yearly billing giving two months free. Create a free ScreenshotNeo account to try it without a card.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Troubleshooting branches

Only one image is missing

Open its direct URL, verify the upload and filename, then inspect the request for a 404, 403, CSP violation, or decode error. Do not reset the whole site before checking that single resource.

Every image on one site is missing

Test privately and in another browser, then inspect one representative request. A site-wide CSP, CDN rule, broken image host, or rewrite configuration is more likely than dozens of simultaneous bad uploads.

Images fail only after a deployment

Compare the generated HTML and asset paths before and after deployment. Check environment variables, build output, storage permissions, rewrite rules, and cache invalidation. Purge the affected CDN URL after correcting the origin.

Images display, but an editor cannot process them

Inspect the editor’s fetch request for CORS errors. Configure the remote server or use a server-side import path; changing the page’s img-src policy will not grant JavaScript permission to read cross-origin bytes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

You cannot access the server or CDN

Provide the host or site owner with the direct URL, request status, Console message, timestamp, browser, and network. Those details let support distinguish a missing file from a policy or edge-cache failure.

Frequently Asked Questions

Why do images work in a private window but not normally?

The private test changes cookies, cache, and extension state. Clear the affected site data and re-enable extensions one at a time to identify the local cause.

Can a 200 status still produce a broken image?

Yes. The response may contain HTML, corrupted bytes, or a format the processing or browser path cannot decode. Inspect the response content and headers, not only the status.

Does CORS prevent every cross-origin image from appearing?

No. CORS is primarily a restriction on scripts reading cross-origin bytes. A standard image element may display the resource while a canvas or fetch operation is denied.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

When should I contact hosting or CDN support?

Escalate when the direct resource remains inaccessible, server rewrites or permissions are outside your control, or edge-cache and TLS logs are needed to identify the failure.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Read next

Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.