Skip to main content

Broken Image Checker

See which images on a page fail to load.

Enter a page URL and see which images fail to load. The scan finds every img src, every srcset candidate and every CSS background image, requests each file, and reports the status code, the alt text and the file size.

Free, no signup Real status codes Backgrounds included

Images fixed? Keep them that way

Broken images are usually a hosting problem, not a content problem.

Most missing images come from media hotlinked to a service that changed its URLs, or from a migration that rewrote every upload path. Grigora serves your images from your own domain alongside the site, the newsletter and the store, so paths stay stable when the design changes.

How to find broken images on a page

Four steps from URL to a clean page.

1

Paste the page URL

Any public http or https page. The scan reads the HTML the server sends, so no login is possible.

2

Run the check

Every image reference is resolved to an absolute URL and requested, eight at a time.

3

Filter to broken only

Hide the healthy images and work through the failures and warnings.

4

Fix and re-run

Re-upload, correct the path or add a redirect, then scan the page again to confirm.

How to find broken images, step by step

Real screenshots of the current tool, using sample inputs. Long results are shown as a preview.

  1. 1

    Enter the page URL

    The page is fetched on the server, so you can check any public URL without installing anything or signing in.

    Broken Image Checker in its default state before the walkthrough
  2. 2

    Point it at a real page

    Any published page works, including a blog post or a category listing carrying dozens of images.

    Broken Image Checker with sample input or settings in place
  3. 3

    Review the result

    Select Check images to run the tool. This screenshot shows the result returned for the sample input.

    Broken Image Checker showing its actual result with sample inputs

When to run an image check

Six moments a missing image costs you something.

After a site migration

New platforms rewrite media paths. Old posts keep pointing at URLs that no longer exist.

Before a launch

A hero image that 404s on launch day is the first thing every visitor sees.

Auditing old blog posts

Images hotlinked from other sites disappear quietly, years after publishing.

Product pages that look empty

A missing product photo reads as an out of stock or untrustworthy listing.

Chasing a slow page

The scan reports file size, so the 3 MB banner nobody compressed shows up too.

Checking alt text coverage

Missing alt attributes are listed alongside the status of each file.

Fixing broken images by platform

Where the missing file usually went.

WordPress

  1. Broken images usually follow a media library move or a domain change.
  2. Run a search and replace on the old upload URL in post content.
  3. Re-scan the page here to confirm nothing is left.

Shopify

  1. Product images live on the Shopify CDN with a version query string.
  2. Re-upload the asset instead of editing the URL by hand.
  3. Check the theme settings for hard coded banner paths.

Webflow

  1. Check the Assets panel for files deleted while still in use.
  2. Background images set in the Style panel are the ones most often missed.
  3. Publish, then scan the live URL rather than the editor.

Grigora

  1. Open the page in the editor and re-link the image block.
  2. Images are served from your own domain, so paths survive a redesign.
  3. Publish and re-run this check on the live URL.

Grigora vs. other image checkers

Side by side.

CapabilityGrigoraBrowser extensionsCrawler suitesSite audit tools
Checks CSS background imagesYesRarelyNoNo
Checks srcset candidatesEvery candidateSometimesNoNo
Reports file sizeYesNoYesYes
Shows alt text alongsideYesNoNoSeparate report
Signup requiredNoNoYesYes
Page limitOne page, no cap on runsCapped free tierCrawl creditsPlan based

Common causes and how to fix them

Eight reasons an image stops rendering.

404 Not Found

Cause: The file was renamed, moved or deleted, but the page still points at the old path.

Fix: Re-upload to the original path or add a redirect. Renaming media is the most common cause after a redesign.

403 Forbidden

Cause: The file exists but the host refuses the request, usually hotlink protection or a signed URL that expired.

Fix: Host the image yourself, or allow your own domain in the referrer rules of the CDN.

Relative path broken on inner pages

Cause: A src like images/photo.jpg resolves differently on /blog/post/ than on the homepage.

Fix: Use root relative paths starting with a slash, or absolute URLs.

HTTP image on an HTTPS page

Cause: Mixed content. The file exists, but browsers block it before it loads.

Fix: Update the src to https. Browsers do not show a warning, they just show nothing.

Returns HTML instead of an image

Cause: A soft 404. The server answers 200 with an error page rather than the file.

Fix: Check the content type. A 200 with text/html is still a missing image to the browser.

Zero byte file

Cause: An upload was interrupted, so the file exists with no data in it.

Fix: Re-upload the original. The status code looks healthy, which is why this one hides for months.

Lazy loaded image never resolves

Cause: The real file sits in data-src and the script that swaps it in fails.

Fix: Keep a valid src as the fallback so the image survives a script error.

Image over 1 MB

Cause: An unoptimised export straight from a camera or design tool.

Fix: Resize to the displayed dimensions and export as WebP. This is a speed problem, not a broken one.

What one scan covers

The limits this checker works within, and why they exist.

200
Unique image URLs checked per scan
8
Requests running in parallel, so large pages finish quickly
9s
Timeout per image before it counts as unreachable
1 MB
Size above which an image is flagged as a speed problem

Frequently asked questions

Ten answers about checking images.

It loads a page, finds every image the markup references, and requests each file to see whether the server actually returns it.
A browser cannot read another site's HTML because of the same origin policy, and it cannot see the status code of a cross origin image either.
It checks what the server sends in the HTML, including common lazy loading attributes such as data-src and data-srcset. Images injected purely by client side script after render are not visible to this kind of scan.
Yes. URLs inside inline style attributes and inside style blocks in the page are extracted and checked.
Hotlink protection and signed CDN URLs often serve the file to a browser with the right referrer or cookie and refuse everything else.
A server that answers 200 OK but returns an HTML error page instead of the image file. The status looks healthy in a log, yet the browser still shows a broken icon, so the content type is checked as well as the code.
Up to 200 unique image URLs per page, requested eight at a time with a nine second timeout each. Pages with more than that are reported as truncated so you know the list is partial.
Indirectly. Google will not index an image it cannot fetch, so you lose image search traffic, and a page full of missing media raises bounce rate and hurts perceived quality.
Because the same scan already knows it. An image that loads but weighs several megabytes delays Largest Contentful Paint, which is a Core Web Vitals metric, so it is worth seeing next to the failures.
No. The scan makes an anonymous request, so pages that require a session return the login page instead.

Related free tools

Other utilities that pair with the Broken Image Checker.

Host the images on the site you own

Website, media, newsletter and store in one place. Try it free for 14 days, no card needed.

Start building free