Broken Link Checker

Broken link checker: find broken internal links

Paste a page below and this broken link checker checks its links on the spot, free and with no account. Sign up and we crawl your whole site, surfacing every broken internal and outbound link, redirect chain and broken redirect, with the exact source page each one lives on so you can fix them fast.

Instant free check of one page. Sign up to crawl the whole site.

More than a 404 finder

Broken links waste crawl budget, leak link equity, and frustrate users. We find them all and show you where each one is referenced.

Broken internal links

Dead links between your own pages, with the referrer pages listed for each.

Broken outbound links

External links that now return errors and quietly hurt user trust.

Redirect chains

Links that bounce through multiple hops before resolving - slow and crawl-wasteful.

Broken redirects

Redirects that point to dead destinations.

Links to non-indexable pages

Internal links pointing at noindex or canonicalized-away URLs.

Broken images & scripts

Missing image and JavaScript references that break pages.

Find and fix broken links in 3 steps

1

Add & verify your site

Confirm ownership with DNS, a meta tag, or a file upload.

2

Run a crawl

We follow every internal and outbound link and record each destination's status.

3

Fix at the source

Every broken link lists the pages that reference it, so you fix once and clear many.

How to find and fix broken links (the right way)

Broken links are the highest-return, lowest-effort technical fix. Here's the process we use on every site.

1Crawl the whole site, not just the homepage

Broken links hide on deep pages you rarely open - old blog posts, paginated archives, footers. A homepage check misses 90% of them. Crawl every internal URL and record the HTTP status of each destination so nothing slips through.

2Fix at the source, not the symptom

One broken URL is often linked from dozens of pages. Instead of editing each page, identify the source pages that reference it and fix the link once at the template or content level. Our report lists every referrer for each broken link so you fix once and clear many.

3Add a 301 redirect for moved pages

If a page genuinely moved, don't just delete the link - add a 301 redirect from the old URL to the new one so existing links and any external backlinks keep their value. Then update the internal links to point at the new URL directly (a direct link beats a redirected one).

4Collapse redirect chains

A link that goes A→B→C wastes crawl budget and slows the page. Update it to point straight at C. Watch especially for chains created by HTTP→HTTPS migrations layered on top of old folder-rename redirects.

5Re-crawl after fixing

Broken-link cleanup is iterative - fixing one batch often reveals more, and a bad fix (a redirect to another dead page) creates new issues. Re-crawl after each round until the report is clean, then re-check after every deploy that touches links or redirects.

Go deeper: read why broken links hurt SEO, how to fix orphan pages, and the full internal links SEO guide.

Where to actually fix a broken link, by platform

Knowing which link is broken is half the job. Here is where you change it in the most common setups.

WordPress

For a link inside a post or page, open it in the editor and update or remove the link on the offending text. For a moved page, add a 301 with a redirect plugin (Redirection, or Rank Math / Yoast Premium's redirect manager) from the old URL to the new one. Links in menus are under Appearance → Menus; links baked into a theme or widget are in the template files or the widget settings, not the post.

Shopify

Product and collection links in body content are edited in the admin under Products or Collections. For a deleted product or a changed handle, add a redirect under Online Store → Navigation → URL Redirects (Shopify keeps the link value with a 301). Links hard-coded in the theme live in the .liquid templates under Online Store → Themes → Edit code.

Wix and Squarespace

Click the element with the broken link and edit its link target in the panel that opens. Both platforms have a built-in URL-redirect manager (Wix: SEO tools; Squarespace: Settings → Advanced → URL Mappings) for pages that moved. Navigation links are edited in the site menu, not on the page.

Framework sites (Next.js, Astro, Hugo, custom)

Fix the link in the component, template, or markdown where it is written; a single template edit clears the link everywhere it renders. Handle moved pages with a redirect in your framework config or at the edge (next.config.js redirects, an nginx rule, or your CDN), so old and external links keep their value.

Internal vs outbound broken links: what to fix first

A broken internal link checker should separate the two, because they cost you differently and you fix them differently.

Broken internal links (fix these first)

These are links between your own pages that now 404. They are fully in your control, they waste crawl budget, and they leak the link equity that should flow to your real pages. Every broken internal link is a fix you can make today, so clear these before anything else.

Broken outbound links

These point at external sites that removed or moved a page. You cannot fix the destination, so either update the link to the page's new home, point it at an archived copy, or remove it. They erode reader trust even when they do not directly cost rankings.

Links to non-indexable pages

Internal links that point at noindex or canonicalised-away URLs are not 404s, but they still send crawlers down dead ends. Repoint them at the canonical, indexable version of the page.

Causes, impact and how often to re-check

What a broken internal link is

A broken internal link is a link from one page on your site to another page on your site that no longer returns a working response, usually a 404 because the target was deleted, renamed, or moved without a redirect. Since both ends of the link are yours, these are entirely within your control, which is why they are the first thing to fix.

Where broken links come from

Most trace back to a small set of causes: deleted or renamed pages, URL typos, content moved without a redirect in place, and external sites taking their own pages down. Redirect chains add a second layer, often created when an HTTP to HTTPS migration is layered on top of older folder-rename redirects.

A site-wide crawl is the only reliable way to catch them all, because the majority hide on pages you rarely open: old blog posts, paginated archives, and footer links that have not been reviewed in years.

The SEO cost of leaving them

Broken internal links waste crawl budget and leak the link equity that should be flowing to your real pages. Broken outbound links do not damage rankings in the same direct way, but they erode reader trust when someone clicks through to nothing. Between the low effort and the direct effect on how your site is crawled, fixing them is one of the highest-return technical SEO tasks available.

Finding them across the whole site

Add and verify your site, then run a crawl. We follow every internal and outbound link, record each destination's HTTP status, and list the exact source pages that reference each broken URL, so one edit at the template or content level can clear dozens of pages at once.

The crawl also flags redirect chains, links that bounce through several hops before resolving, and redirects pointing at dead destinations. Both slow down crawling and page loads, and both are worth collapsing to a direct link.

Running it free

You can check any URL instantly with no account. That free check looks at the single page you paste. Create a free account to crawl your whole site and get the complete broken internal and outbound link report with every source page listed.

How often to re-check

Re-check after every deploy that touches URLs, redirects or navigation, and run a full crawl at least monthly. Links rot as you publish, prune and reorganise content, so a one-time cleanup drifts back out of date. Cleanup is also iterative: fixing one batch often reveals more, and a bad fix such as a redirect pointing at another dead page creates fresh issues, so re-crawl after each round until the report is clean.

What is a broken link checker, and is it free?

A broken link checker requests every link on a site and reports the ones that fail. That is the whole idea. What separates them is scope, and scope is what the price usually reflects.

What the tool actually does

It collects the links, follows each one, records the status the server returns, and reports anything in the 4XX or 5XX range along with the page that linked it. That last part is what makes a report usable: a list of dead URLs tells you what is broken, while a list of dead URLs with their referrers tells you where to go and fix it.

Two categories need care. Redirects are not broken, though a chain of them is worth shortening. A 403 usually means the destination blocks automated requests rather than that the page is gone, so links to sites behind aggressive bot protection appear broken to every checker while working fine in a browser. A tool that reports both as failures produces a list you learn to ignore.

Free, and where free ends

Checking one page is cheap, so single-page checks are widely free and need no account. Checking a whole site is a different proposition: auditing ten thousand pages means at least ten thousand requests, plus every outbound link those pages contain, and that cost scales with your site rather than with the tool.

That is why free tiers cap something, usually URLs per crawl, crawls per month, or how much history is kept. The cap that matters is whichever your site is about to hit. If you also want to prove a fix worked, history is the feature to check for, because a single snapshot cannot show that anything changed.

How do you work a broken link report efficiently?

Work the report by destination rather than by page. A dead link in a shared footer or navigation block appears on every page that renders it, so per-page it reads as hundreds of errors and per-destination it is one fix. Sorting by how many pages reference each dead URL puts the template-level faults at the top, and clearing those collapses the total before you touch an individual article.

Then re-check after fixing. The point of the second run is not the number: it is catching fixes that did not deploy, and links that were repointed at another URL which is also broken.

Related SEO tools

Working a broken-link report without wasting effort

Finding broken links is the easy half. The half that saves time is fixing them at the source, because a single dead URL is usually referenced from many pages at once.

What counts as broken, and what only looks broken

A link is broken when its destination returns a 4XX or 5XX status, or fails to resolve at all. That definition is narrower than it sounds, and several things that look like failures are not. A 301 or 302 resolves fine for a user and passes value, so it is not broken, though a chain of them is worth shortening. A 403 often means the destination blocks automated requests rather than that the page is gone, which is why links to sites behind aggressive bot protection frequently appear broken to any crawler while working perfectly in a browser.

The genuinely damaging cases are quieter. A soft 404 returns 200 with a page saying the content no longer exists, so no status-code check will catch it. A link to a page that redirects to the homepage is technically fine and practically useless, because the user asked for something specific and got the front door instead.

Fix at the source, not at the symptom

The reason a broken-link report should list referrer pages rather than just dead URLs is that the ratio between them is rarely one to one. A dead link in a shared footer, navigation block or related-articles template appears on every page that renders that template. Reported per-page, that is hundreds of errors. Reported per-destination, it is one fix.

So work the list by destination, sorted by how many pages reference each one. The top of that list is almost always template-level, and clearing it collapses the total error count dramatically before you touch a single article. Only once the templates are clean does it make sense to work through links that genuinely appear on one page each.

Choosing the right fix for each link

For an internal link, the destination is yours, so you have options. If the page moved, update the link to the new URL rather than relying on a redirect, because a direct link is faster and does not depend on a redirect rule surviving future migrations. If the page is genuinely gone, either point the link at the closest surviving equivalent or remove the link and rewrite the sentence around it.

For an outbound link, the destination is not yours and will keep changing. If the target moved, update the URL. If the resource is gone entirely, decide whether the claim it supported still needs a citation: replace it with an equivalent source if it does, and remove it if it does not. Leaving a dead outbound link because "it used to work" is the most common way reference sections rot.

Redirect chains and why they matter less than they seem

A chain of two redirects is a minor inefficiency, not an emergency. Each hop adds latency for the user and a request for the crawler, and long chains risk being abandoned before resolving. The practical rule is to fix chains longer than two hops and to leave single redirects alone unless you are already editing that link for another reason.

Chains matter most when they are systematic: an http to https redirect followed by a non-www to www redirect followed by a trailing-slash redirect means every link on the site pays three hops. That is a server configuration fix rather than a link-editing job, and it clears the whole class at once.

Clean up your links today

Free to start. Crawl your site and get the full broken-link report.

Check for broken links