Broken Link Checker

Loading tool…

About Broken Link Checker

Enter a page URL (a homepage is best for a sweep), pick 25, 100, 250, or 500 pages, and click Check links. We crawl like the sitemap generator: start URL, robots.txt, sitemaps, then internal links. Unique http(s) hrefs are collected (hash stripped, query kept), capped at 500. The button shows crawled n of N, then checked n of M.

Each unique URL is probed with HEAD first, then GET if HEAD is refused, times out, or returns a method-not-allowed or 5xx status. Broken here means status 0, 404, 410, or 500 and above. 401, 403, and 429 are not listed as broken. Noscript or js-disabled trap URLs that 403 or 404 are marked Manual, not broken.

When to use it

Run it when a catalog import, a retired blog, or a rewritten nav leaves hrefs that editors can still click in the HTML. The table is for that moment: one dead target, listed once, no matter how many documents still point at it.

Also run it when a partner flags outbound 404s on a resources page. It is not Ahrefs, not Screaming Frog's full crawl export, and it does not read Search Console coverage.

How to use Broken Link Checker

  1. 1Enter a page URL. Homepage is best for a site sweep.
  2. 2Choose pages to crawl. 25 is fast. 100, 250, or 500 take longer.
  3. 3Click Check links. The button shows crawled n of N, then checked n of M.
  4. 4Filter the table. Broken, timed out, and manual rows first. Fix or nofollow, then re-run.

What counts as broken

Working covers 2xx and 3xx. Timed out is a probe that hit the 10 second limit. Skipped covers empty, fragment-only, and non-http(s) hrefs. Partial results appear when the first HTML looks like a captcha, a JavaScript shell, or a block page.

Login walls that return 200 or 302 are not broken. Hosts that block our user agent can still look broken. Re-check a suspect URL in your own browser before you treat it as a content bug.

How to read the results

Count boxes are Checked, Broken, Timed out, Manual, Working, and Skipped. The chip is Broken for 404, 410, 500+, or status 0; Warning if the origin blocked the sweep, a probe hit 10 seconds, or Manual rows exist; Notice if the HTML had no http(s) hrefs; Pass if every probe is Working.

Link list filters: All, Broken, Timed out, Manual, Working, Skipped. The table opens on Broken when that count is above zero. Columns are Status, Anchor, and URL. A one-page origin with a single IANA href shows Pass. mailto, tel, and hash-only values sit under Skipped.

Why this matters

Bots request every href they can see. A dead footer target is hit from every document that still includes that footer, so crawl budget is spent on a path that cannot be a result. Deduping hrefs, hard-capped at 500 unique, is how you see the destination once.

HEAD then GET exists because many hosts reject HEAD and would otherwise look dead. 401, 403, and 429 stay off Broken because those answers mean a login, a WAF, or a throttle, not a missing file. Treating them as 404s sends people to rewrite working destinations.

Limits and privacy

Five runs per hour, keyed by your network. Hard caps: 500 documents and 500 unique hrefs. Reserved and loopback addresses are rejected before a request is sent. Scan only origins you may test. There is no login and no stored report.

Common mistakes

Calling every 403 broken. Those rows are omitted on purpose. A login or bot wall is not a missing file.

Reading an empty Link list as a healthy origin. If the first HTML is a shell, the banner says results may be incomplete. A static one-href page is the opposite: one Working row, chip Pass.

Expecting mailto, tel, or in-page hashes to be probed. Those are Skipped. Only http and https destinations, hash stripped and query kept, are checked.

FAQs

Why 500 unique links?
Unique URLs across the crawled pages, capped at 500 so one run cannot hammer the host.
Is 403 a broken link?
No. 401, 403, and 429 are not listed as broken. 404, 410, 500+, or a failed request are.
Why HEAD then GET?
Some hosts reject HEAD. We fall back to GET, and retry GET once on a 5xx.
What is Manual?
A noscript or js-disabled URL that returned 403 or 404. Automated checkers cannot verify it the way a browser with JavaScript can.
JavaScript or bot wall?
If the first HTML looks like a captcha or a JS shell, the verdict is partial. We do not treat that as a healthy crawl.
Why does it say 0 links when I can see them?
Only http and https hrefs in the first HTML are collected. A menu painted later never appears. mailto, tel, and hash-only values are Skipped. A blocked sweep or an empty document also leaves the Link list blank.
Can Check links crawl more than 500 documents?
No. Presets are 25, 100, 250, or 500 documents, and unique hrefs stop at 500 as well. Five runs per hour. Split a large origin by folder. The ~min chip beside Pages to crawl is a planning hint, not a clock.
What does Timed out mean?
HEAD or GET hit the 10 second limit. That is not a 404. The chip is Warning when something timed out and nothing is Broken. Open the destination yourself. A slow or firewalled host can expire here and still load in a browser.