Broken Link Checker — find dead links and 404s on any page
Every link on a page — and on up to five of its internal pages — checked live: 404s, dead domains and redirect chains, with the anchor text and where each link sits.
How it works
-
Paste a page
Your homepage, a blog post, a client's site. Optionally crawl up to five internal pages and include images, scripts and stylesheets.
-
Every link is checked live
Each link is requested from our server, redirects are followed hop by hop, and bot walls are told apart from pages that are really gone.
-
Fix what's broken
Filter by broken, redirect or unverifiable, see the anchor text and the part of the page each link sits in, and download the list as a CSV.
What counts as a broken link
A broken link points somewhere that no longer answers with a page: a 404 Not Found or 410 Gone, a 5xx server error, a domain that no longer resolves (expired, sold or mistyped), a server that refuses the connection, or a redirect loop that never arrives anywhere. Every one of them is a dead end for a visitor. For search engines they are wasted crawl budget and lost link equity, and on your own site they are a sign of neglect that both people and quality raters notice. Links rot steadily — other sites restructure, products are discontinued, a CMS migration changes every URL — so a site that was clean last year rarely still is.
How this checker works
- It reads the page like a crawler. The page is fetched through Monity's relay and parsed in your browser: every
<a href>, and optionally every image, script, stylesheet, icon, video and embed. - It records where each link sits. Anchor text (or alt text), and whether the link is in the navigation, header, footer, sidebar or main content — what you need to find it again in your CMS.
- It can go a level deeper. With crawling on, it opens up to five internal pages — navigation and main-content links first — and checks their links too, up to 250 unique links per run.
- Every link is checked live. A HEAD request first, a small ranged GET for servers that refuse HEAD, and redirects followed one hop at a time so you see the full chain.
Broken, redirect, unverifiable: what the verdicts mean
Broken
The destination is gone or failing: 404 and 410, server errors, dead domains, refused connections and redirect loops. On your own site, a 401 or 403 also counts — visitors are refused too, unless the page sits behind a login. Fix internal broken links by pointing them at the right page (or redirecting the old URL), and update or remove external ones.
Redirect
The link works, but only after one or more hops. The checker says what changed — HTTP to HTTPS, a
trailing slash, www, or a different page — and whether the redirect is permanent (301, 308)
or temporary (302, 307). Internal links should point straight at the final URL: each hop costs a round
trip and some crawl budget, and long chains are where links eventually break. To trace one chain in detail — every hop, as different crawlers see it — use the redirect checker.
Unverifiable
The server answered, but not in a way that proves anything. LinkedIn returns 999 to every robot; X and many Cloudflare-protected sites answer with a 403 bot check; busy sites rate-limit with 429; and a timeout or certificate error seen from a server can be temporary. These links usually work for people, so the checker lists them separately, with the reason, instead of crying "broken" — a list full of false alarms is a list nobody acts on.
Soft 404s and missing anchors
Two kinds of broken link never show up as an error code. A soft 404 is a page that
answers 200 OK but says "page not found" — Google treats it as an error, while status-code checkers call
it fine. When the checker crawls a page whose title or main heading says it can't be found, it flags it.
And in-page links like #pricing break silently when someone renames a heading: the checker
looks for the target id on the page and lists every anchor that points at nothing.
Fixing broken links, fastest first
- Navigation and footer links. They appear on every page, so one fix removes hundreds of broken links at once.
- Links in the main content of your top pages. They're the ones readers actually click.
- External links to dead domains. Expired domains get bought and filled with spam or malware — a link to one is a risk, not just a dead end.
- Images, scripts and stylesheets that 404. They break layouts and features without any visible error message.
- Internal redirects. Update links to the final URL so visitors and crawlers skip the hops.
Download the CSV to work through the list: there's one row per link per page it appears on, with the status, the reason, the redirect chain, the anchor text and the page section.
Stay ahead of link rot
A one-off check is out of date the day another site moves a page. Monity rechecks your pages on a schedule, from a real browser — so links added by JavaScript are covered and bot walls aren't mistaken for dead pages — and alerts you in Slack, Teams or email when a link breaks. Only links that are newly broken trigger an alert, never the same dead footer link every hour. While you're here, run the free SEO & AI visibility audit for the rest of the page's technical health, or the meta tag checker to see how it appears in Google.
FAQ
Common questions
How does the broken link checker work?
It fetches the page's HTML the way a search engine crawler does, collects every link (and, if you ask, every image, script and stylesheet), and checks each unique URL live: a HEAD request first, then a small GET for servers that refuse HEAD. Redirects are followed one hop at a time, up to five, so you see the whole chain. With crawling on, it also opens up to five of the page's internal pages — navigation and main-content links first — and checks their links too, up to 250 unique links per run.
Why are some links "unverifiable" instead of broken?
Because they probably work. LinkedIn answers every robot with status 999, X and many Cloudflare-protected sites answer with a 403 challenge, and busy sites rate-limit with 429 — while serving people normally. Timeouts and certificate errors seen from a server aren't proof either. Calling those "broken" is how link checkers lose people's trust, so we list them separately with the reason, for you to open yourself. On your own site, a 401 or 403 does count as broken, unless the page needs a login.
Are redirects a problem?
A redirect isn't a broken link, but on your own site it's worth fixing. Every hop adds a round trip for visitors and wastes crawl budget, and long chains are where links eventually break. Point internal links straight at the final URL — the checker shows it, along with what changed: HTTP to HTTPS, a trailing slash, www, or a different page. Use permanent redirects (301 or 308) for content that has moved for good.
What is a soft 404?
A page that answers "200 OK" but says "page not found". Status-code checkers report it as working; Google treats it as an error. When the checker crawls a page whose title or main heading says it can't be found, it flags it as a possible soft 404. Fix it by returning a real 404 (or redirecting the old URL), then update the links that point at it.
Does it find links added by JavaScript?
No — like most crawlers, it reads the HTML the server sends. Links a script adds after the page loads (some menus, single-page apps, widgets) aren't seen. Monity's monitors load pages in a real browser, so they check those links too.
Is it free, and is anything stored?
It's free, with no account. Nothing about the page or its links is stored. The checker shares a fair-use limit per network with Monity's other free tools — if you hit it, the results so far stay on screen and you can resume a few minutes later.
Can I get an alert when a link breaks?
Yes. Monity rechecks your pages on a schedule and alerts you in Slack, Teams or email when a link breaks — only links that are newly broken, never the same dead footer link every hour, which is what makes the alerts worth reading. The free plan includes 3 monitors.
Links break after you check them.
Monity notices the day they do.
Monity rechecks your pages on a schedule and alerts you in Slack, Teams or email when a link breaks — only the new ones, never the same dead footer link every hour.
- Free 7-day trial
- No credit card
- 3 monitors free, forever