A broken link checker that explains every failure
This broken link checker reads one web page and tests every address on it — links, images, scripts, stylesheets, frames, video and audio files. Each is requested by this site’s server, redirects are followed hop by hop, and the answer is sorted into plain results: OK, redirect, redirect loop, client error (such as 404), server error (5xx), timeout, blocked or not checked. Jump links such as #pricing are tested on the page itself.
Use it before a post goes live, after a site migration, or when a reader reports a missing image. Paste the HTML of an unpublished page and only its links are checked — the page itself is never fetched.
How to check a page for broken links
- Enter the Page address, or choose Paste HTML and paste the source, adding the page address so relative links like
/about/can be resolved. - Under What to check, untick what you don’t need. Links on this site go first, then links to other sites, images, and finally scripts, styles, frames and media.
- Press Check links. Results arrive four at a time; Stop ends early and keeps what is done.
- Work through the prioritised list, then the table with the Broken, Redirects and Blocked & timeouts filters.
- More than 100 addresses? Press Check the next …. Finish with Download CSV or Copy broken links.
Broken Link Checker features
Every kind of reference
Links, image src and srcset, picture sources, media files, scripts, stylesheets, icons, canonical and alternate links, iframes and embeds — resolved against any <base href>.
Whole redirect chains
Each hop is followed one at a time (up to 10), so a 302 → 301 → 200 chain, a loop or a redirect to the home page is shown exactly.
Jump links checked locally
A link to #section is matched against the page’s ids and <a name> anchors without any request.
Mixed content
Images, scripts and frames loaded over http:// on an https page are flagged, because browsers upgrade or block them.
CSV report
One row per address with result, status code, final address, redirect chain, anchor or alt text, rel values and the explanation.
Worked example: the built-in sample page
Show the example runs the checker on a sample hiking-boots guide without any requests. It reports 6 broken addresses, 3 redirects and 2 that could not be verified; the email, phone and print links are listed as not checked. Some rows:
| Address on the page | Result | What the checker says |
|---|---|---|
| /guides/old-socks-guide/ | Client error · 404 | The page does not exist — fix the link or 301-redirect the old address |
| #care | Missing #id | No element has id="care", so the jump link goes nowhere |
| https://partner.example.org/deal | Redirect · 302 → 301 → 200 | Two redirects — link to the final address |
| /boots-2019/ | Redirect · 301 → 200 | Lands on the home page — possible soft 404 |
| https://store.example.com/sale | Redirect loop | Browsers show “too many redirects” |
| https://social.example.com/hikers | Blocked · 403 | Refused the automated check — confirm in a browser |
What the results mean, and what Google does with them
Google’s page on HTTP status codes and network errors (updated 4 February 2026) says its crawlers follow up to 10 redirect hops, treat every 4xx except 429 as content that doesn’t exist, and slow down when a server answers 5xx. A redirect still works, but updating the link to the final address saves every visitor a round trip. Blocked (401, 403, 429, or LinkedIn’s 999) and timeout results are not proof of a broken link: many sites refuse automated requests from data centres, so open those yourself.
Its link best-practice guide (updated 10 December 2025) explains that Google only crawls links that are <a> elements with an href, which is why javascript: links are listed rather than checked. The crawling-errors guide (updated 18 December 2025) defines a soft 404 as an address that says the page doesn’t exist but answers 200 — and recommends 404 or 410 for removed content and a 301 to the new address for moved content. Redirecting retired pages to the home page tends to be read the same way, so the checker flags redirects from a deeper address to a site’s root. It reads status codes only, so an error message served with 200 at the original address is not detected.
Limits of the free checker
- Checks run from this site’s server on Cloudflare: each visitor may make 120 status checks and 60 page fetches per 10 minutes. A run checks up to 100 addresses, four at a time; the “left” figure is an estimate kept in your browser, and other checkers on this site share the allowance.
- If the allowance runs out mid-run, finished checks stay on screen, the rest are marked “Waiting”, and the message says how many minutes to wait.
- Pages are read as HTML without running JavaScript, so links a script adds later are not seen.
- For a whole site’s internal links use the Internal Link Checker; for a list of URLs, the HTTP Status Checker; to redirect old addresses on Apache, the .htaccess Redirect Generator.
Broken Link Checker FAQ
How do I find broken links on my website?
Enter a page address in this broken link checker and press Check links: every link, image and file on the page is tested and broken ones are listed first. For a whole site, check the home page and main templates, or crawl the internal links with the Internal Link Checker.
Why is a link that works in my browser reported as blocked?
Some sites answer automated requests with 403, 429 or a login wall while showing the page to people. Blocked and timed-out links are listed separately for that reason.
Do broken links hurt SEO?
Google doesn’t describe a penalty for them, but a dead link wastes the visitor’s click and the crawler’s visit, and broken internal links can leave pages hard to discover.
What does “Missing #id” mean?
The link points to a spot on the same page, such as #care, but no element has that id (or an with that name), so clicking it does nothing.
Can I check a page that isn’t published yet?
Yes. Choose Paste HTML: the page itself is not sent anywhere — only the addresses of its links are checked.
Why are only 100 links checked at a time?
To keep the free service fair. The rest wait in the table; press Check the next … to continue within the 10-minute allowance.