Broken Image Link? 9 Reasons Images Don't Show
Why images show as a broken icon or will not load, from expired links and hotlink blocks to wrong URLs and mixed content, and how to fix each one.
By Ahsan Khowaja (CEO) · · 8 min read
Facts checked against official sources on
On this page
- How to test a broken image link
- 1. A mistake in the URL
- 2. The link expired or the image was deleted
- 3. Hotlink protection
- 4. A page link instead of a direct link
- 5. HTTP on an HTTPS page (mixed content)
- 6. A format the browser can't show
- 7. Blocked in a region or on a network
- 8. A stale cache
- 9. The page or app strips the image
- Getting a link that works
A broken image link means the browser asked for a picture and got something else back: an error page, a web page, a blocked response, or a file it can't display. One test tells you where to look. Open the image address on its own in a new tab. No picture there means the fault is in the link or at the host. A picture that loads fine means the fault is in the page that embeds it. The nine causes below are in the order worth checking.
How to test a broken image link
Right-click the broken icon and copy the image address, or take it from your HTML, BBCode or Markdown. Paste it into a new tab and look at what comes back.
| What the new tab shows | Likely cause |
|---|---|
| Nothing, or a browser error | A mistake in the URL (cause 1) |
| "Not found" or "removed" | The image expired or was deleted (cause 2) |
| A web page with the picture on it | A page link, not a direct link (cause 4) |
| A download, or a file that won't display | An unsupported format (cause 6) |
| The picture, with nothing wrong | The embedding page: causes 3, 5, 7, 8 or 9 |
The test works because an image in a page is a second request. Your page holds only the address, and each reader's browser fetches the file from it separately. Asking for that address yourself shows you exactly what the browser was handed.
Take a forum post written as [img]https://picturetolink.com/v/abc123[/img] that shows a broken icon. In a new tab, that address opens a page with the picture on it. The table's third row applies, so the cause is number 4, and swapping in the direct link https://picturetolink.com/i/abc123.jpg fixes the post.
1. A mistake in the URL
Small errors in the address are the most common cause and the easiest to fix. One wrong letter in a random image ID is enough.
Copying is where most of them creep in. A trailing space, a quote mark or a closing bracket gets pasted along with the address. Extensions catch people too: photo.jpg and photo.jpeg are different addresses, and so are Photo.JPG and photo.jpg on many servers.
A local path can't work at all. An address like C:\Users\me\Pictures\cat.png or file:///... exists only on your computer, so nobody else can load it.
Sometimes the address is right and the markup around it is broken. In HTML, check that src is spelled correctly and the quotes close. Markdown's syntax is , with no space between ] and (. In BBCode, [img] must be closed with [/img]. Our guides to Markdown image syntax and BBCode image tags show the correct form.
To fix an address, copy it again from the source and confirm the picture opens in a new tab before you use it anywhere.
2. The link expired or the image was deleted
Images don't stay online forever. The uploader may have deleted the file, or set it to expire: many hosts, including ours, let you choose an auto-delete time. The host may have removed it under its retention rules. PictureToLink removes an image after 12 months without a single view, and Imgur's terms say it may remove old, unused anonymous uploads. A host will also take down an image that breaks its rules.
Nothing brings the old address back. Upload a copy again and update the link. It's the best argument for keeping your own original of anything you share.
3. Hotlink protection
Some websites stop other sites from displaying their images. The server checks which site the request came from (the Referer header) and refuses images requested from other domains.
Cloudflare's Hotlink Protection, for one, denies requests when the referrer does not include the site's own domain but allows requests with a blank referrer. That produces a confusing symptom: the image opens fine when you paste the address into your browser, and shows as broken on your page.
People read that symptom the wrong way round. "It opens for me, so the link is good" feels like proof, yet the link was never the problem. What changed between the two requests is who appeared to be asking.
Don't embed images from sites that don't want you to. Ask for permission and host your own copy, or upload your own image to a host built for embedding. Our explainer on what hotlinking is covers when it's acceptable.
4. A page link instead of a direct link
Many image hosts and cloud drives give you a link to a web page that shows the image. That link is right for sending to a person. An img tag, a BBCode [img] tag or a Markdown image can't display a web page, though. Each one expects the address of the file itself.
| Link type | Typical look | Use it for |
|---|---|---|
| Direct link | Ends in .jpg, .png, .gif, .webp or .avif | Embedding in HTML, forums, Markdown, apps |
| Viewer or share page | No extension; opens a page with the image on it | Sending to a person to click |
| Cloud drive share link | Opens a preview with download buttons | Sharing files, not embedding |
Use the direct link. On PictureToLink that's the "Direct link" format, the one ending in the file extension. The share page link (/v/...) is meant for people. Our guide to direct links, viewer links and embed codes explains which format works where.
Reddit behaves the same way: a link to a page shows as a link, not a picture. Our guide on how to post images on Reddit covers that case.
5. HTTP on an HTTPS page (mixed content)
A page served over HTTPS with an image address that starts with http:// is mixed content. MDN explains that browsers auto-upgrade image requests from HTTP to HTTPS. If the image server doesn't offer the same file over HTTPS, the upgraded request fails and you see a broken image. MDN also notes that addresses using an IP number instead of a domain name are not upgraded.
Change the address to https:// and check that it loads. A host with no HTTPS version is a host to leave, so move the image to one that has it.
6. A format the browser can't show
The link can be perfect and the browser still unable to display the file type.
HEIC is the usual culprit. It's the iPhone's default photo format, and according to Can I use only Safari 17 and later support it. Chrome, Firefox and Edge show nothing. Camera RAW files, PSD and other editing formats are not web image formats at all. A wrong extension can do it as well, because a file named .jpg that is really something else can fail to display.
Convert the image to JPG, PNG or WebP and upload the converted copy. For iPhone photos, our guide on what HEIC is explains how to share one as JPG, and the HEIC to JPG converter does it in your browser.
7. Blocked in a region or on a network
When an image works for some people and not for others, look at where they are and how they connect.
The host may block a whole country. Since 30 September 2025, Imgur says that content embedded on third-party sites will not display for UK users. Closer to home, a workplace or school network may filter image hosts, and browser extensions such as ad or tracker blockers stop images from certain domains.
A login has the same effect. Images in private albums or behind a sign-in won't load for visitors who aren't signed in.
Test from a different network (mobile data instead of Wi-Fi) or in a private window with extensions off. When the host is blocked for part of your audience, re-host the image somewhere that works for everyone.
8. A stale cache
Caches keep copies of images to speed up loading, and they can go on showing an outdated picture or an old error.
Your own browser is the first suspect. It may hold an old version after the image was changed or fixed. Platforms that proxy images keep copies of their own. GitHub serves external images through a proxy, and its page on anonymized image URLs explains how caching headers affect when updated images appear. Link previews in chat apps and social networks are often generated once and reused.
Reload without the cache (Ctrl + Shift + R on most desktop browsers, Cmd + Shift + R on Mac) and test in a private window. That clears your side only. You can't empty a platform's cache from outside, so when you replace an image, give the new file a new address instead of overwriting the old one.
9. The page or app strips the image
Some places don't display external images at all. Many email apps hide images until the reader allows them. Some forums accept images only from approved hosts, or only from members above a certain rank. Some comment systems remove image tags entirely.
No link will get past that. Check the platform's help pages or rules for what it allows, and where external images aren't allowed, upload the image through the platform's own uploader.
Getting a link that works
For a dead address that needs a replacement, upload the image to PictureToLink and copy the direct link, BBCode or Markdown version. It needs no account, and other sites are allowed to display it.
That isn't the right fix every time. A forum or app with its own uploader keeps the picture for as long as the post exists, which a second site can't promise. We remove images after 12 months without views, and no free host can offer permanent storage. Keep your original file whichever way you go.
