A PNG that is present in your project can still appear broken because the browser is receiving the wrong URL, an error response, incorrect metadata, or a security-policy rejection. Open your browser’s developer tools, inspect the image request in Network, read the HTTP status and response headers, then check the Console for CSP, CORS, or mixed-content errors. That evidence usually identifies the fix faster than changing HTML at random.
Start with the request, not the broken-image icon
The broken-image symbol is only a symptom. Right-click the page, choose Inspect, open Network, reload the page, and filter for Img. Select the PNG request and record:
- The exact requested URL, including directory names, spelling, capitalization, query strings, and file extension.
- The HTTP status, such as 200, 404, 403, or 304.
- The response
Content-Typeheader. - Whether the request was blocked, redirected, or served from a CDN.
Then open the image URL in a new tab. If it does not load directly, the problem is in the URL, deployment, server, storage, or access policy rather than in the <img> element. Keep the Console open as you reload; it will expose CSP, CORS, and mixed-content failures that may not be obvious in Network.
Use the HTTP status to narrow the cause
| What you see | Most likely class of failure | What to check |
|---|---|---|
| 404 Not Found | Wrong path, missing deployment, or filename-case mismatch | Resolved relative URL, deployed files, exact capitalization |
| 403 Forbidden | Permissions, private object, hotlink protection, or access policy | Origin permissions, CDN-to-origin access, signed URLs, authentication |
200 but wrong Content-Type |
Server or object metadata is incorrect | Set the response to image/png |
| Blocked in Console | CSP, CORS, or mixed-content policy | Allowed image origins, HTTPS, and cross-origin configuration |
| Works only in one browser | Cache, extension, security software, or local settings | Private window, cleared cache, extensions, and endpoint security |
Fix a wrong URL, path, or filename case
Relative URLs are resolved from the document’s URL, not necessarily from your project root. An image written as src="images/logo.png" on /about/team.html requests /about/images/logo.png. If the file is actually at /images/logo.png, use src="/images/logo.png" (for a site-root path) or the correct relative path.
#1 Best Overall
Check the deployed name exactly
Linux hosts and many object stores are case-sensitive. Logo.PNG, logo.png, and logo.PNG are different names. Compare the request URL with the deployed filename character by character. Also check whether your build process excludes the asset, rewrites it, or places it under a hashed filename.
Verify after deployment
- Copy the URL shown in Network.
- Open it directly in a new tab.
- Confirm the server returns the intended file rather than an HTML error page.
- Deploy the missing or renamed asset, then purge or bypass stale browser and CDN caches.
Return the correct PNG MIME type
A standards-compliant web server should send PNG files as Content-Type: image/png. The obsolete image/x-png type should not be used. When metadata is wrong, browsers can download the file, refuse to render it, or interpret the response inconsistently.
Server configuration
For Apache, the PNG mapping is commonly expressed as:
AddType image/png png
Equivalent configuration depends on your server or framework. Check the actual response in Network rather than assuming a file extension controls the header.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallObject storage and CDNs
When a PNG is stored in a bucket, set its object metadata to Content-Type: image/png. For CloudFront-style delivery, verify that the CDN can read the origin and that the cached object carries the corrected metadata. Purge the old object or invalidate the relevant path after changing metadata; otherwise the CDN may continue returning the previous header.
Correct Content Security Policy (CSP) blocks
A Content-Security-Policy can restrict image origins with img-src. If img-src is absent, the browser uses default-src. When the image URL is not allowed, the browser treats the load as a fatal network error even when the URL and file are valid.
Read the Console violation
The message identifies the blocked origin and the policy directive. Add the actual image host, CDN host, or permitted scheme to the policy, for example by allowing your image CDN in img-src. Keep the policy as narrow as your architecture permits; do not replace it with an unrestricted wildcard merely to hide the error.
Retest policy changes
Reload with Network disabled-cache enabled, confirm the response is now present, and test a page that uses images from every required origin. A policy delivered by a reverse proxy or hosting platform may override the header you edited in application code.
Rank #3
Resolve CDN, storage, permissions, and CORS failures
A CDN introduces another permission and caching boundary. For a 403, confirm the origin object is public when it should be, or that the CDN uses the correct identity to read private content. Check whether cache behavior forwards the headers, cookies, or query strings required for authorization. A 404 can mean the CDN is pointing at the wrong origin path even though the object exists in storage.
CORS is different from ordinary display
Cross-origin images can often be displayed without the same permissions required to read their pixels from JavaScript. Problems appear when your application uses the image with canvas, fetch, or another operation that requires a CORS response header. If the Console reports a CORS error, configure the storage or CDN response for the requesting origin and ensure the CDN forwards the relevant Origin header. Do not diagnose a CORS message as a missing file until the Network status and direct URL have been checked.
Mixed content
If the page is HTTPS but the PNG URL is HTTP, the browser may block it as mixed content. Change the asset URL and origin to HTTPS, and check redirects so the final request remains secure.
Handle browser-only failures
If the same URL works in another browser or a private window, investigate local state:
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problems- Clear the site’s cached files and reload with the DevTools “Disable cache” option enabled.
- Temporarily disable ad blockers, privacy extensions, and script-filtering extensions.
- Check antivirus or endpoint-security web filtering.
- Restore modified browser settings and test another user profile.
If every browser fails, return to the HTTP response, origin, and policy checks instead of continuing to clear local data.
Edge cases that look like PNG problems
An HTML error page returned with status 200
Some hosts return a branded error document with status 200. In Network, inspect the response preview and headers. If the body is HTML, fix the rewrite or routing rule so the PNG path reaches the asset instead of your application fallback.
Redirect loops or unexpected redirects
Authentication middleware, HTTP-to-HTTPS redirects, and locale routing can send an image request somewhere unintended. Expand the request’s redirect chain and make sure the final URL is an image with the correct status and MIME type.
Lazy loading and timing
For images inserted by JavaScript or lazy-loaded with data-src, verify that code eventually assigns a real src. A valid file cannot load until a request is actually made.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Best Value
- Used Book in Good Condition
A repeatable repair checklist
- Inspect the PNG request in Network and read the Console.
- Classify the response as path (404), access (403), metadata, or policy failure.
- Open the exact deployed URL directly.
- Correct path and capitalization, deployment, permissions, metadata, or policy.
- Purge or bypass browser and CDN caches.
- Retest in another browser and, if cross-origin behavior matters, with the production hostname.
Or skip the browser setup
If you need dependable screenshots while diagnosing a page, ScreenshotNeo provides a website screenshot API and MCP server. A single GET request can return PNG, JPEG, WebP, or PDF. Before capture it accepts the cookie or consent banner like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing result.
Use the documented parameters and options in the ScreenshotNeo API documentation. A minimal cURL request is:
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 also offers an MCP server for Claude, Cursor, and other MCP clients, with take_screenshot, get_page_info, and capture_pdf tools. Every plan includes features such as full-page and element capture, device and retina settings, custom CSS and JavaScript, waits, request blocking, headers and cookies, geolocation, caching, signed links, asynchronous webhooks, bulk capture, usage data, and HTML/CSS-to-image. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Create a free ScreenshotNeo account.
FAQ
Why does the PNG download instead of displaying?
Check the response Content-Type. Set it to image/png and replace obsolete or generic download-oriented metadata.
Recommended Free Tools
Can a valid PNG still be blocked?
Yes. CSP, mixed-content rules, permissions, or a CDN policy can block a valid file. The Console and Network status distinguish these cases.
Should I clear the CDN cache after fixing the file?
Yes. A CDN can continue serving an old 404, permission response, or incorrect MIME header until its cached object expires or is invalidated.
Frequently Asked Questions
Why does the PNG work locally but fail after deployment?
Deployment commonly changes the base URL, filename case, build output, permissions, or CDN metadata. Compare the production Network request with the local one and fix the first differing status or header.
Is a 403 the same as a CORS error?
No. A 403 is an HTTP access response. CORS is a browser policy concerning cross-origin use; inspect both the status and Console message before choosing a fix.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
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.




