Free tool
Broken Link Checker
Crawl a site and check every link it finds, separating broken links from ones that merely refuse an automated request.
The check could not be completed
Link check results
| Destination | Result | Status | Found on |
|---|
A link that answers 401, 403, or 429 is listed as restricted rather than broken. Those responses mean the server refused an automated request, which is common for sites behind a login or a bot filter, and the link usually works perfectly well for a person in a browser. Check a restricted link yourself before editing it.
What This Tool Does
The link checker crawls a page or a small part of a site, collects every link it finds, and then requests each unique destination to see what answers. It records the source page, the anchor text, whether the link is internal or external, the status returned, where a redirect ended up, and how many hops it took.
Destinations are deduplicated before they are checked, so a navigation link that appears on every page is requested once, while every page that contains it is still listed against the result.
How to Use It
Enter a page or a site address, choose how many pages to crawl, and decide whether to check external links as well as internal ones.
- Fix internal breakages first. They are entirely within your control and they waste crawl budget as well as reader patience.
- Open a broken external link before deleting it. Some sites answer a plain request with an error and a browser with a page, which is a configuration decision on their end rather than a dead link.
- Read the redirected group as maintenance rather than as breakage. Every redirected link is a link that could point at its destination directly.
- Export the CSV when you are handing the work to somebody else. It carries the source page and anchor text, which is what makes each row findable in a content management system.
How the Tool Calculates or Retrieves Data
Each destination is requested with HEAD first, because it returns headers without the body. Servers that reject or mishandle HEAD are retried with GET, so a site that answers HEAD with a 405 is not reported as broken.
Statuses are classified rather than judged. A 401, 403 or 429 is recorded as restricted or temporarily unavailable, not broken, because a login wall or a rate limit is not a dead page. Confirmed 4xx and 5xx responses, DNS failures, redirect loops and timeouts are reported as broken or timed out, with the reason kept.
External checking is capped and run at low concurrency to stay polite and to fit within shared hosting limits. When the cap is reached, the remaining destinations are marked as not checked and the result says so.
Understanding Your Results
Broken means a definite failure: a 404 or 410, a server error that persisted, a host that does not resolve, or a redirect that never settles. These are worth fixing.
Restricted means the destination refused this request but is probably fine for a reader: a login page, a paywall, or a bot filter. Timed out means the server did not answer in time, which can be temporary and is worth rechecking before acting on.
Not checked means exactly that. It is shown rather than hidden, because a result that quietly omits what it skipped is worse than one that admits it.
Frequently Asked Questions
Because it means the server refused this particular request, not that the page is missing. Bot filters return 403 to anything that is not a browser. Reporting those as dead links would send you to delete links that work.
Destinations are deduplicated so the same address is not requested dozens of times. Every source page that contains it is still recorded, so you can find each place that needs editing.
Not urgently. It works. Pointing the link at its final destination removes a hop and keeps the link working if the redirect is ever removed, which is worth doing during other edits.
The run reached its external-link limit. The limit keeps the tool polite towards other people's servers and within the time a shared host allows. Reduce the page count or check the remainder in a second run.