Broken Link Checker

Broken Link & Redirect Checker

Crawl a page for broken links (404s) and redirect chains with one click. Free, no API key.

Free · no API key · checks the first 60 links on the page · tells broken from bot-blocked

Broken Link Checker that tells 404 from bot-blocked noise

Paste a page and we check every link on it, not just the ones you're worried about — internal, external, nofollow, all of it. Every non-200 response comes back with its status code and one plain answer: genuinely broken, probably bot-blocked, or working exactly as intended. Most flagged links turn out to be the second kind.

Checks every link, internal and externalSeparates true 404/410/5xx from 403/429 noiseShows anchor text and nofollowFree, no signup

Built and reviewed by Sayed Hasan, founder of SEOs Hut · Updated 28 September 2026 · Free, no signup

Why does my link checker say 403 when the link works in my browser?

Because 403 usually means a bot defence, not a dead page. RFC 9110 defines 403 as the server refusing the request — it doesn't confirm the resource is gone, and a server may even use 403 (or 404) to hide a resource without admitting anything. Cloudflare's Bot Fight Mode is a documented example: it 403s link checkers while the page loads normally for a human in a browser.

A 403 in your report is not a broken link

Every competitor's checker counts 403 in the broken total. RFC 9110 says 403 means the server "understood the request but refuses to fulfil it" — the same spec notes a server may deliberately return 403 (or even 404) to hide a resource without confirming whether it exists. Cloudflare's own community forum documents a reproducible case of Bot Fight Mode returning 403 to link checkers while the page loads fine in a real browser. Read every 403 as "something blocked this checker," not "this page is gone."

Triage

This link returned a non-200 — now what?

Work down from the status code. Each branch tells you whether it's broken, blocked, or working as intended, and what to actually do about it.

1

The checker flagged a 4xx — which one?

404 Not Found
Genuinely broken, or moved without a redirectGoogle removes an indexed URL and stops treating it as new, but "4xx status codes, except 429, have no effect on crawl rate." Before deleting anything, check the Backlink Checker — a dead page with live backlinks should get a redirect, not silence. If you replace it, confirm the new URL is indexed with the Index Checker before retiring the old one.
410 Gone
Deliberately, permanently removedRFC 9110 reserves this for when removal is "likely to be permanent" — if you can't be sure, 404 is the more honest code.
403 Forbidden
Almost always a bot defence, not evidence of anythingOpen the URL in a real browser. If it loads, this is noise — a firewall or Bot Fight Mode-style rule blocking the checker, not the page being gone.
429 Too Many Requests
The server is rate-limiting the checker, full stopGoogle treats 429 "as a signal that the server is overloaded" — its own server-error category. Re-check later, slower. Nothing here is dead.
2

Not a standard 4xx — what did it actually return?

999 or another code outside 100–599
Not a real HTTP status, often a platform-specific blockRFC 9110 says an unrecognised code should be treated as the x00 of its class — 999 behaves like a 900-class error. Verify the link manually rather than trusting the number.
5xx Server Error
The destination is failing, not the link itselfAn already-indexed URL is preserved here "but eventually dropped" if it persists, and crawl rate falls in proportion to how many URLs return the error. Recheck in a few hours.
3xx Redirect
Not broken — it movedThe link works. Trace where it actually lands with the Redirect Checker and point the anchor straight at the final URL instead of the old one.
DNS failure or connection refused
The domain or host is unreachableConfirm the domain hasn't lapsed or changed host — check it with the domain age checker — then treat it like a 404 for remediation.
Same dead page, two codes

404 vs 410 on a page you deleted on purpose

Served as 404
HTTP/1.1 404 Not Found
Why: 404 just means "not found right now." Google keeps re-checking a URL that returns 404, which is wasted effort on both sides if it's actually gone for good.
Served as 410
HTTP/1.1 410 Gone
Why: 410 tells Google the removal "is likely to be permanent," per RFC 9110. Use it only when you mean that — if there's any chance the page returns, 404 is the honest signal, since the same rule says use 404 when permanence can't be determined.
The one number that matters

Google is explicit about which status code actually changes crawl behaviour

“The 4xx status codes, except 429, have no effect on crawl rate.”

<b>Google Search Central, HTTP and network errors documentation</b> &mdash; Google Search Central
Over time, not on the first check

What happens to a URL across repeated crawls

None of this happens on the first 404. It's the pattern across crawls that changes anything.

First crawl after the page goes 404

Not immediately dropped

If the URL was previously indexed, Google works towards removing it — but this isn't instant.

Repeated crawls

Crawl frequency gradually decreases

Google's own wording: "the crawling frequency gradually decreases." This is specific to 404 persisting, not a one-off response.

The whole time, for 429

Treated as a server error, not a removal signal

Google's crawlers treat 429 "as a signal that the server is overloaded" — a different category entirely, so it doesn't follow the same de-indexing path as a genuine 404.

For 5xx instead

Preserved, then eventually dropped

An already-indexed URL returning 5xx is preserved "but eventually dropped," with the crawl-rate decrease "proportionate to the number of individual URLs that are returning a server error."

Whether a broken link actually costs you rankings depends on which side of it you're on. Google's documentation about 4xx behaviour is written from the crawler's perspective, not as a ranking-factor list, and it concerns URLs on your own site — not links you happen to point at someone else's dead page. A dead internal link wastes your own crawl budget and strands users; a dead outbound link to someone else's page is mostly a trust problem for the person reading. Fix internal 404s first.

One more thing worth knowing before you go hunting: Google only counts an <a href="…"> element as a crawlable link. A <span href="…">, an <a onclick="goto(…)">, an <a routerLink="…"> and an href="javascript:…" are all documented as not crawlable — so some of what looks broken in a JavaScript-heavy template was never a link Google could follow in the first place, and some genuinely broken navigation won't turn up in a link scan at all.

If this check turned up more than a handful of dead links, that's rarely an isolated problem — it usually means a template changed or a migration missed a section. A full audit finds the pattern; this tool finds the individual symptoms.

Plain English

Five status codes, plainly

404
Not found. Google removes it from the index if it was there and stops treating it as new content — but persistent 404s only start affecting crawl rate over repeated crawls, not on the first one.
410
Gone, and meant to stay gone. RFC 9110: use it only when removal is "likely to be permanent"; otherwise 404 is the honest code.
403
Forbidden. The server refused the request — a statement about permission, not about whether the resource exists.
429
Too Many Requests, not in RFC 9110 at all — it comes from RFC 6585. Google treats it as a server-overload signal, its own category, separate from every other 4xx.
Crawlable link
An <a> element with an href. Google's documentation is explicit that onclick handlers, span href attributes and javascript: hrefs don't count, however they look to a human.

The most reliable broken-link list isn't from a scanner

A one-off scan catches what's broken today. Your own server logs show every 404 a crawler has actually hit over time, which is a better signal than any single crawl — the AI Crawler Log Analyzer separates those patterns out. And while you're in triage mode, remember every request for a dead asset — image, script, font — still costs load time on the way to a timeout; check that separately with the Core Web Vitals Checker.

Questions

Broken Link Checker FAQ

How can I check if a link is broken?
Run every link on the page through a checker and read the status code, not just whether it loaded. A genuine break is a 404, 410, 5xx, or a DNS failure. A 403 or 429 usually means something blocked the checker, not that the link is dead — confirm those by opening the URL in a real browser.
How can I fix a broken link?
If the destination moved, point the link at its new URL directly rather than through a redirect. If the content is gone for good, remove the link or replace it with the closest living equivalent. Check first whether any backlinks point at the dead URL — those are worth a redirect, not a deletion.
What happens if a link is broken?
For an internal 404, Google removes the URL from the index if it was there, stops treating it as new content, and — only if it persists across repeated crawls — gradually lowers crawl frequency. Google is explicit that "4xx status codes, except 429, have no effect on crawl rate" beyond that.
How can I fix broken links online?
Same process anywhere: identify the true breaks (404, 410, 5xx, DNS failure), separate them from bot-blocked noise (403, 429), then redirect or remove each one. There's no special online-only fix — the status code tells you what's actually happening regardless of platform.
Why does my link checker say 403 when the link works in my browser?
The site is blocking the checker specifically, not the page. RFC 9110 defines 403 as a refusal, which a server can also use to deliberately hide a resource — it isn't evidence the resource is gone. Cloudflare's Bot Fight Mode returning 403 to link-checking bots while serving the page normally to browsers is a documented, common cause.
Do broken outbound links hurt SEO?
Google's crawling documentation covers 4xx responses from a crawler's perspective on URLs on your own site, not links you happen to point at someone else's dead page. A stray broken outbound link is mainly a trust problem for readers; a broken internal link is the one with a documented crawl-and-index effect.

Primary sources used on this page

  1. Google: 4xx status codes (except 429) have no effect on crawl rate; behaviour of 429 and 5xx — developers.google.com
  2. RFC 9110 §15.5: 403 as refusal, 410 as likely-permanent removal — www.rfc-editor.org
  3. RFC 6585 §4: 429 Too Many Requests and Retry-After — www.rfc-editor.org
  4. Google: which link elements are crawlable (href required; onclick, span, javascript: excluded) — developers.google.com
  5. Cloudflare community: Bot Fight Mode returning 403 to legitimate link checkers — community.cloudflare.com
Keep going

Once you've triaged the list

Fixing broken links is the easy part. These confirm the fix actually worked.

Read the guide: How to Find the Sitemap of a Website, 5xx Server Errors: What They Mean and How to Fix Them and What Are Internal Links? Types, Benefits and Best Practices. Want it handled for you? See our website audit service.

Scroll to Top