What does a broken link checker do?
A broken link is invisible until somebody follows it. The page carrying the link is fine, so nothing in a crawl of the site reports a problem; the address in the `<a href>` stopped working two years ago and the page has been quietly sending visitors into a 404 ever since. This checker reads one page, collects every link on it, and asks each address for its status — HEAD first, and GET only where the server refuses HEAD.
It separates the three outcomes that look the same in a browser but are not. A 404 or 410 is a broken link and needs fixing. A host that does not resolve is a domain that has lapsed, which is a different problem with a different fix. An address that answers with a redirect is not broken, but if it redirects every time, the link should point at the target instead, so the tool lists those separately rather than counting them as healthy.
The target site's own robots.txt is read before anything is requested, and its rules are obeyed: a link to a disallowed page is reported as left alone rather than fetched. Checking links is still crawling, and a checker that ignores the file it is crawling is just a faster way to be rude.
How to check a page for broken links
- Enter the full address of the page whose links you want checked — not the site, the page. A homepage and a blog post have entirely different links on them.
- Choose how many links to check, from 20 to 80. A long page may have more than that, and the extra ones are left unchecked rather than reported as fine; the count of checked against found is shown with the result.
- Press Check links. The page is read once, its links are collected and resolved against the page's own address, and each one is requested. A line that starts with a fragment or a `mailto:` is skipped, because it is not an address that can be checked.
- Read the summary first: how many are broken, unreachable and redirecting. On most pages one or two of those is normal — the count matters less than which ones they are.
- Tick Only the ones needing attention to cut the healthy rows, then work down the table. A redirecting link shows the address it settles on, which is the one the link should be using.
- Download the CSV when the list is long or needs to be shared — for a client, a spreadsheet, or a ticket.
Broken link check limits and rules
| Item | Limit |
|---|---|
| Scope | One page, not a crawl. The links on it are checked; the pages they lead to are not followed for further links |
| Links checked | 40 by default, up to 80 on request |
| Request method | HEAD first, then GET with the body discarded only where HEAD is refused (405, 501) or fails |
| Sweep deadline | 26 seconds for the whole page; anything not reached in time is reported as unchecked rather than as working |
| robots.txt | Read for the target site and obeyed for its own pages; a disallowed link is reported, never fetched |
| Link text | First 120 characters, so a table of 80 rows stays readable |
| Not checked | `mailto:`, `tel:`, `javascript:`, `data:` and fragment-only links, which are not addresses a server can answer for |
| Rate limit | 40 checks per minute per visitor |
| Not verified | Some sites answer 403 to anything that looks automated. That is reported as the status it is, not as a broken link, because the page is usually fine in a browser |
When to use it
- Checking a homepage before a campaign goes out, so the traffic does not land on a 404 that has been sitting there since a site redesign.
- Auditing an old blog post that still gets search traffic: outbound links to sources that have moved or expired are the usual casualty of time.
- Confirming that an internal link still points at the right place after a page was renamed and the old address left a redirect behind.
- Finding which outbound links on a page go to a domain that has lapsed, where the fix is to remove the link rather than update the URL.
- Producing a CSV of what needs attention when the page is somebody else's responsibility.
Is it private?
Link checking runs on this site's server, and that is unavoidable: a browser will not let a page request dozens of other origins and read their status codes, and it hides the real status of a cross-origin request anyway. When you press the button, your browser sends the page address to this site's own endpoint, which reads that page, collects its links and requests each one with a crawler user agent. Every site linked from that page sees one request from this server and learns nothing about who asked. No cookies, credentials or browser details are forwarded. The page address and the links are not stored; your IP is only counted against a per-minute meter, and nothing is written to disk.
Frequently asked questions
Because a full-site link check is a crawl, and a crawl has to obey robots.txt, rate-limit itself, and take minutes rather than seconds — that is what the SEO Audit does, and it is the right shape for it. This tool answers the quicker question: is anything on this page broken, right now. Checking the pages that matter most, one at a time, usually finds the problems a full crawl would report anyway.
Probably not. A 403 means the server understood the request and refused it, and the usual reason is bot protection: Cloudflare, a WAF or a rate limiter answering anything that does not look like a browser. The page is usually fine when a person clicks it. Treat 403 as needing a manual look rather than as broken, and if the link matters, open it in a browser to confirm.
Because a working redirect still costs something: an extra round trip for every visitor, and a small amount of signal that a search engine follows rather than passes on. If the target is stable, the link should point at it directly. The row shows where the link settles, so updating it is a copy-and-paste job rather than a guess.
Because the site's robots.txt disallows them, and a link checker that ignores that is crawling a page the owner asked not to have crawled. The row is left in the table with the reason, so a disallowed link is visible rather than silently missing. If it is your own site, a disallowed link is usually a mistake worth fixing anyway — either the link should not exist, or the robots rule is too broad.
Almost always, and it is used because it asks for the status without downloading the page. A small number of servers do not implement HEAD properly and answer 405 or 501; those are re-requested with GET, and the body is discarded as it arrives rather than kept. A few sites answer differently to HEAD on purpose as a bot filter, which is another reason a 403 or 405 here is not proof that a link is dead.
The first ones in the order they appear in the HTML, up to the limit you chose, with internal addresses given priority as the page is read. The result always shows how many links were found and how many were checked, so the shortfall is visible rather than implied. If the unchecked remainder matters, raise the limit or check the page in sections.
Related tools
Written and maintained by Md. Nur Hossain Repon.