Finding Broken Links, and Deciding Which Ones Matter
Enter a page and this pulls out every link on it and requests each one, reporting what came back — working, redirecting, 404, server error or timeout. Each result carries the anchor text, so you can find the link on the page rather than hunting for a bare URL.
It checks one page rather than crawling a whole site, which is a deliberate limit. A real crawler needs a job queue and a way to resume, and offering one inside a single request would be a promise this cannot keep. What it does instead, it does properly: every link is requested, not guessed at.
At a glance
- Links are actually requested. Nothing is inferred from the URL's shape.
- Internal and external links can be checked separately.
- Redirects are reported but are not failures — they are worth tidying, not fixing urgently.
- Some sites block automated requests, so a 403 usually means the link is fine and the server refused us.
How to Use This Tool
Enter the page URL
The page is fetched and its links extracted. Only links in the HTML the server returns are seen — anything a script adds after load is invisible here, as it is to a crawler on first pass.
Choose the scope
All links, internal only, or external only. External is the usual choice for old articles, where rot happens on other people's sites; internal is the one to run after a migration.
Wait while each link is requested
Five at a time, deliberately unhurried. Running it faster would make the tool a load generator pointed at someone else's server.
Start with the problems filter
Broken and errored links are pre-filtered when there are any. Redirects sit in their own group because they are a different, milder problem.
Export if the list is long
The CSV includes the anchor text, link type, status and note for every link, which is easier to work through than a screen when there are dozens.
What Broken Links Actually Cost
The SEO damage is usually overstated. A handful of dead outbound links will not tank your rankings, and Google does not hand out penalties for link rot — it is an ordinary consequence of the web changing.
The real costs are elsewhere and larger. A visitor who clicks a link and lands on a 404 leaves, and often leaves the site rather than the page. On a page whose whole job is to be a trustworthy reference, dead links quietly undermine exactly the thing it was written to establish.
Broken internal links are the more serious case. They waste crawl budget, they strand pages that were only reachable through that link, and they usually indicate something structural — a URL pattern that changed without redirects, or a template linking to a page that no longer exists.
There is also a slow-burn version worth knowing about: a link that still resolves but now points somewhere else entirely. Expired domains get bought and repurposed, and a citation in a five-year-old article can end up pointing at something you would not want to be associated with. Status codes do not catch that; only reading the destination does.
Reading the Results Properly
- 404 and 410 — genuinely gone. 410 means removed deliberately, so there is no point waiting for it to come back.
- 403 — the server refused us. This usually means the link is fine and the site blocks automated requests. Check it in a browser before removing anything.
- 429 — rate limited. The site is throttling, not broken. Try again later.
- 5xx — a server error at the other end. Often temporary, so re-check before acting; a link that 500s twice a day apart is a different matter.
- Timeout — no response in eight seconds. Sometimes a dead server, sometimes just a very slow one, and worth confirming manually.
- Redirect — the link works but goes through a hop. Not broken. Worth updating to the destination, particularly for internal links.
Why 403 Is the Most Misleading Result
A meaningful share of the web now blocks automated requests, and there is no way for any link checker to distinguish that from a genuinely broken page. The server returns a refusal either way.
Cloudflare and similar protection layers are the usual cause, along with sites that block anything without a browser-shaped fingerprint. LinkedIn, Amazon, and many news sites will refuse a checker while serving a browser perfectly.
The practical rule: never delete a link on a 403 without opening it yourself. This is the one result that regularly means the opposite of what it appears to mean, and acting on it automatically is how good links get removed.
Redirects Are Not Broken
A redirect means the link works. Someone clicking it arrives at a page. There is no urgency here, and treating redirects as failures produces busywork.
They are still worth tidying, for two reasons. Each hop is a round trip added before the page starts loading, which is a small real cost on mobile. And a chain of several redirects is fragile — remove one link in the chain and everything after it breaks at once.
For internal links this matters more, because you control both ends. A site that redirects internally at scale is usually one where a URL structure changed and the links were never updated, which is worth fixing at the template level rather than link by link. Our Redirect Chain Checker will trace any single URL through its full chain.
Why This Checks One Page
Whole-site crawling is a different kind of job. It needs a queue that survives between requests, a way to resume after a failure, politeness controls per host, and somewhere to store partial results — none of which fits inside a single HTTP request that has to return an answer.
Plenty of free tools advertise site-wide crawling and then quietly stop after a few dozen pages, or run for an hour and lose everything on a timeout. Offering a limit that is honest seemed better than a promise that degrades.
In practice, page-by-page covers most of the real need. Link rot concentrates in old articles with lots of outbound citations, and those are exactly the pages you would check individually anyway. For a genuine site-wide audit, a desktop crawler is the right tool.
Fixing What You Find
For external links, the options are to update the URL if the page moved, point at an archived copy if it is gone but worth citing, or remove the link and rewrite the sentence around it. Leaving a dead link because removing it means editing the paragraph is the wrong trade.
For internal links, fix the link if it was a typo, or add a redirect if the page genuinely moved and other sites might link to the old URL too. If the same broken internal link appears across many pages, it is in a template and belongs fixed there.
Then check what else the page is telling crawlers. Our Internal Link Analyzer reports the internal and external split and flags empty or generic anchor text, and the HTTP Header Checker will show the redirect chain for any single URL in full.
If the broken links came from a sitemap rather than a page, the XML Sitemap Validator checks sitemap entries the same way — a sitemap full of 404s is a more damaging version of the same problem, because you are repeatedly inviting crawlers to pages that are gone.
Frequently Asked Questions
Do broken links hurt SEO?
Less than commonly claimed. There is no penalty for link rot, and a few dead outbound links will not move your rankings. Broken internal links matter more because they waste crawl budget and can strand pages. The bigger cost is trust: a reference page full of dead links stops being a reference.
Why does a link show 403 when it works in my browser?
The site is blocking automated requests — Cloudflare and similar protection are the usual cause. No link checker can distinguish that from a genuinely broken page, because the server refuses either way. Always open a 403 yourself before removing the link.
Are redirects broken links?
No. A redirect means the link works. It is worth updating to the destination, because each hop adds a round trip and long chains are fragile, but there is no urgency and it is not a failure.
Why does this only check one page instead of the whole site?
Site-wide crawling needs a job queue, resumability and per-host politeness controls, none of which fit inside a single request. Tools that promise it usually stop quietly after a few dozen pages. Checking one page properly seemed better than crawling a site badly.
Why does it check links so slowly?
Five at a time, on purpose. Every check is a real request to someone else's server, and firing them off in parallel to finish faster would make this a load generator rather than a checker.
Does it find links added by JavaScript?
No. It reads the HTML the server returns, which is also what a crawler sees on its first pass. Links injected by scripts after load are invisible to both.
What should I do about a 5xx result?
Re-check before acting. Server errors are often temporary, and a site that is briefly down is not a dead link. If it fails again a day later, treat it as broken.
Can a link be broken even with a 200 status?
Yes, and no checker catches it. Expired domains get bought and repurposed, so an old citation can return 200 while pointing at something completely different. Status codes tell you the URL resolves, not that it still says what you cited it for.
Related Tools
Internal Link Analyzer
See the internal and external split, nofollow links and weak anchor text.
Redirect Chain Checker
Trace a single URL through its full redirect chain.
XML Sitemap Validator
Check the URLs in your sitemap resolve, not just the links on your pages.
HTTP Header Checker
Inspect the full response for any single URL that looked wrong.