Free Broken Link Checker

Enter any page and we’ll follow the links on it to see which ones are dead — with the status code, the reason, and the anchor text so you can find each one in your content. A free check covers up to 100 links per page and up to 10 per destination site, your own site included, so a long page is sampled rather than exhausted.

Example resultA sample result for example.com/blog/post — run the tool on your own URL above for live data.
Links found
38
Checked
21
Broken
2
Could not check
1
LinkStatusWhyWhere it appears
https://example.com/old-pricing404Page not found“see our pricing” · Internal link
https://partner.example.net/case-study410Deliberately removed“the full case study” · External link
https://news.example.org/report403Blocked to automated checks“their 2026 report” · External link · rel=“nofollow”

17 links skipped: 11 of them internal links past the 10-per-site cap — this page has 21 unique internal links and we check the first 10 — plus same-page anchors, a mailto: link, image and PDF files, and repeats. The 403 is listed under “Could not check”, not as broken — that site refuses automated requests but works for visitors.

What this checker does

Paste a URL and we fetch that page once, collect every <a href> on it, then request each destination — up to 100 links, and up to 10 per destination site — and record what it answers. You get the status code, a plain-English reason, the anchor text the link sits behind, and whether it points inside your site or out to someone else’s.

Your own site counts as a destination site. A page with a navigation and a footer usually links to itself more than ten times, so we check the first ten of those in the order they appear in the HTML and list the rest as skipped past the cap. The result says how many links the page had and how many we checked, so you can always see the difference.

Two details make the result more trustworthy than a raw status dump. First, we follow redirects: a link that 301s onto a missing page is reported broken at its real destination, not waved through because the first hop returned 301. Second, we separate “broken” from “could not check” — see below.

What counts as broken — and what doesn’t

  • Broken — 404, 410, any other 4xx, or a 5xx server error. The destination answered, and it answered with a failure.
  • Could not check — 401, 403, 429, 451 or no answer at all. The destination refused us, which is not the same as being dead.
  • Skipped — not fetched: #anchors, mailto:, tel:, javascript:, files (images, PDFs, CSS, JS, archives, Office docs), Cloudflare /cdn-cgi/ paths, duplicates, and any link past the caps below — on a page with a long navigation, the cap is usually the largest group.

That middle bucket is the honest part. Plenty of sites sit behind Cloudflare, Akamai or a WAF that answers automated requests with 403 Forbidden while serving the page normally to a person in a browser. Tools that count those as dead send you off deleting links that work. We list them separately and say so — open a “could not check” link yourself before you touch it.

What it cannot do

  • One page at a time. It reads the links on the URL you enter and stops there — it does not crawl your site. The free SEO audit crawls up to 500 pages if you need the site-wide picture.
  • Up to 100 links per page, and at most 10 per destination site — including your own site, so a page with more than ten internal links has the first ten checked and the rest skipped — inside a 20-second budget. When a cap bites, the result says how many links the page had and how many we checked, so you never get a quietly short list.
  • Links in the HTML only. Links injected later by JavaScript aren’t in the page we fetch, so they aren’t checked.
  • A snapshot, not monitoring. A 5xx can be a five-minute outage. Re-run the check before deleting a link over one.

How to read the results

Start with the Broken table and work down it: a 404 or 410 on an internal link is yours to fix immediately — correct the URL, or redirect the old one to its replacement. A 404 on an external link means someone else moved or deleted the page; update it to the new location, point it at an archived copy, or drop the link and keep the sentence. Leave 5xx rows until you have re-checked them once.

Then skim Could not check and open anything that matters in a browser tab. Finally, read the skipped count next to the note above the tables: a page with 40 links found but only a handful checked usually means the 10-per-site cap bit, because most of those 40 point back at your own site — files, mailto: links and repeats are the smaller part. Nothing in the skipped group was found broken; it was never fetched. For the links a single page cannot cover, the free SEO audit crawls up to 500 pages and reports the broken links it finds across them. The anchor text column exists so you can search your own content for the link instead of hunting through the HTML.

Frequently asked questions

What counts as a broken link?

A link is reported broken only when its destination actually answers with a failure: 404 (page not found), 410 (deliberately removed), another 4xx error, or a 5xx server error. We follow redirects first, so a link that 301s onto a 404 is caught at its real destination rather than counted as a healthy hop.

Why are some links listed as “Could not check” instead of broken?

Because we could not prove they are broken. A 401, 403, 429 or 451 means the destination refused our request — a Cloudflare rule, a bot filter or a login wall — and that page almost always works fine for a real visitor in a real browser. A link that never answered at all is in the same bucket. Calling those “broken” is the single most common false positive in link checkers, so we keep them in their own list and tell you to open them yourself.

How many links does it check?

Up to 100 unique links per page, and at most 10 per destination site, inside a 20-second budget. The per-site cap stops one host eating the whole run — and your own site is a destination site like any other, so on a page with 30 internal links we check the first 10 of them and count the other 20 as skipped. The result always tells you how many links the page had, how many were checked and how many were skipped, so you can see when a cap bit instead of getting a quietly short list.

Does it check my whole site?

No. This tool checks the links on the single page you enter — it does not crawl the rest of the site. For a site-wide view, run the free SEO audit from the homepage: it crawls up to 500 pages and includes a link report alongside the other checks.

Which links are skipped, and why?

Same-page #anchors (there is nothing to fetch), mailto: and tel: links, javascript: handlers, static files such as images, PDFs, CSS, JavaScript, archives and Office documents, Cloudflare’s /cdn-cgi/ paths (they return 404 to every automated request by design), hrefs mangled by stray whitespace, any link already checked once on the page, and any link past the 100-per-page or 10-per-site cap. The skipped count is part of every result, and when a cap is what pushed links into it, the note above the tables says how many of the page’s links we actually checked.

Do broken links hurt SEO?

Indirectly, and it adds up. Dead outbound links waste crawl budget and are a quality signal search engines notice, dead internal links strand pages that used to receive link equity, and either way a visitor who clicks one hits a dead end. Broken links in your navigation, footer or top-performing posts are the ones worth fixing first.

Related free tools

Want the full picture?

This tool checks one thing. Run a complete, free SEO audit across 26 factors in about a minute.

Run a free SEO audit