Broken Link Checker
Enter a URL and the crawler follows internal links (up to 200 pages) and reports every one that fails: 404s and other 4xx, 5xx, timeouts and fetch errors. Each broken link comes with the pages that point to it and the anchor text, so you can fix the link or the page, not just know that something is wrong. Only your own site is requested — links to other sites are counted, never fetched. Download as CSV. Nothing is stored beyond 24 hours.
The crawl runs on our server: one request per second, robots.txt obeyed, no JavaScript. Only the start URL and this summary are kept, for 24 hours.
How it works
1. Our crawler (InsighthackerzBot, one request per second, no JavaScript) fetches robots.txt and any sitemaps it declares, then starts at the URL you give and follows internal links breadth-first — same host only, www and the bare domain counted as one site 2. Limits: 50, 100 or 200 pages per run, 2 MB per page, 15 s per request, 5 redirects per URL; URLs your robots.txt disallows for our user-agent are skipped and counted, pages marked nofollow are fetched but their links are not followed 3. Every HTML page goes through the same on-page engine as the on-page SEO checker: title, description, H1, canonical, robots directives, word count, images without alt — the warnings and fails are kept per page, the HTML is not 4. Internal links found broken during the crawl (4xx, 5xx, timeouts) are listed with the pages that link to them; links to other websites are counted per page but never requested — the crawler only talks to the site you gave it 5. The result is one job on our own server: it holds only the start URL and the summary, expires after 24 hours and is never used for anything else 6. A link counts as broken when the page it points to answers 4xx or 5xx, or the request fails (timeout, DNS, TLS, connection refused, page over 2 MB). Redirects to a working page are not broken; they are listed in the audit tab
About broken links and how the checker finds them
A broken link is a link whose target no longer answers: a 404 because the page was deleted or renamed, a 410, a 5xx because something behind it is down, or no response at all. For visitors it is a dead end; for search engines it is wasted crawl and a signal, however small, that the site is not maintained. Internal broken links are entirely yours to fix and usually come from a URL change nobody propagated — a renamed slug, a removed category, a migration that redirected most pages but not all.
The checker finds them by crawling. Every page it fetches is parsed for links; every internal link is queued; every queued URL that answers with an error is a broken link, and because the crawler got there by following links, it already knows which pages sent it. Links to other websites are counted per page (the internal-links tab shows them) but never requested: the crawler only talks to the site you pointed it at, so it cannot get your site rate-limited elsewhere, and its findings are things you can actually fix.
The source pages matter more than the broken URL itself. A 404 linked from one old blog post is a five-second fix; the same 404 linked from the footer is on every page and worth a redirect. The table lists up to five source pages per link and the anchor text, which is often enough to guess what the link was supposed to point at.
Some 'broken' links are not. A page behind a login answers 401 or 403; a page that took longer than 15 seconds shows as a timeout although it exists; a page over 2 MB is skipped as too large. The status and error columns say which it was — open the URL in a browser before deleting a link the checker flagged for a reason other than 404.
Frequently asked questions
- Does it check links to other websites?
- No. External links are counted per page — the internal-links tab shows how many each page sends out — but never requested. The checker crawls only the site you give it, which keeps it polite to everyone else's servers and keeps the report to things you can fix on your own site. For a link to another site that you suspect is dead, open it in a browser.
- Why does a link show as 403 or 401?
- The page exists but refused the crawler: a login wall, an IP rule or a bot-protection rule that does not recognise InsighthackerzBot. That is not a broken link for a visitor, but it is a page Google cannot crawl either — decide whether it should be linked from public pages at all.
- Does the checker follow redirects?
- Yes — a link to a URL that 301s to a working page is not broken. The redirect is listed in the audit tab so you can point the link at the final URL and shorten the chain; a redirect that ends on a 404 is reported as broken.
- Why does the checker not find a link I know is broken?
- Either the page that contains it was outside the crawl (beyond the page limit, disallowed in robots.txt, or not reachable by following links from the start URL), the link points to another website, or it is inserted by JavaScript — the crawler reads HTML as served and does not run scripts. The audit tab shows which pages were crawled.
- What about images, scripts and stylesheets?
- Only <a href> links are followed. A missing image or a 404 stylesheet is a real problem, but a different one; the on-page checker reports images without alt, and browser devtools show failed asset requests for a single page.
- How often should I check?
- Internal links break when URLs change, so check right after any migration, redesign, bulk rename or CMS update, and every month or two otherwise. Sites above 200 pages need a tool that can crawl them whole; this one gives you a sample — start from the section you changed.