Broken image checker
Paste a page's HTML, or a list of image URLs, and each one is loaded to see whether it actually resolves. Runs on this device.
This runs in your browser, which is why it asks for a paste rather than a web address. A browser is not allowed to fetch someone else's page and read it back - that is the same-origin policy, and working around it needs a server every URL you check would have to pass through. Loading an image is not restricted the same way, so the checking half works here perfectly well.
What it looks at
img src and srcset
Every candidate in a srcset, not just the default - a responsive image can be whole at one size and missing at another.
Lazy-loading attributes
data-src, data-original and data-lazy-src, where scripts park the real URL. A checker that ignores these reports working images as missing.
picture and source
The WebP and AVIF alternatives a modern page serves first, which is exactly where a bad deploy leaves a gap.
CSS background images
url() in style attributes and style blocks. These break as often as content images and are invisible to anything that only reads img tags.
Redirects and timeouts
An image that 301s to a 404, or a host that never answers, is a broken image to a reader. Both are reported as failures.
Actual dimensions
Working images report the size they really are, which is how you spot a 4000px original being served into a 300px slot.
How to use it on a whole page
Open the page, view source (Ctrl+U in most browsers, or Cmd+Option+U on a
Mac), select all, copy, and paste it in. Put the page's own address in the
Base URL box so relative paths like /images/hero.jpg can be resolved.
That is the whole method, and it takes about fifteen seconds. The result is the same list a server-side crawler would give you for that page.
What it will not do
It will not crawl a site. One page at a time, from a paste. A crawler needs a server, and a server means every address you check passing through somebody else's machine and sitting in their logs.
It will not see images added by JavaScript after load, because view
source gives you the HTML the server sent. If a gallery builds itself in
the browser, copy the rendered DOM out of developer tools instead - right
click the page, Inspect, right click the <html> element, Copy outer HTML.
A 403 counts as broken here. Some hosts refuse images requested from another site. That is not necessarily a fault on the page you are checking
- it just cannot be distinguished from a genuine failure without a server, and reporting it as fine would be the more misleading of the two.
Why broken images matter more than they look
A missing image is not only an ugly box. It is a request that fails on every page view, so it costs a round trip and a timeout on the slowest connections, and it usually means something else is wrong underneath - a migration that moved a media folder, a CDN that expired, a plugin uninstalled with its uploads still referenced.
If you run WordPress and want this checked continuously rather than once, there is a free plugin that does it from inside the admin.