Recommended Free Tools
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.
#1 Best Overall
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.
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.
Rank #2
| 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.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →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
- 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.
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.
Rank #4
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.
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.
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.
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.
Best Value
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.
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.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsWhen 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.
Quick Recap
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.




