Broken link checker: how to find and fix broken links on any website (2026 guide)

Every website accumulates broken links over time. Pages get deleted. External sites go offline. CMS migrations change URLs. Content editors update slugs without checking what links to them. This guide covers how to find broken links, why they happen, what they cost you, and how to fix them — with five detection methods compared and a process for keeping links healthy long-term.

What is a broken link?

A broken link is a hyperlink that no longer leads to its intended destination. When a user or a search engine follows the link, the server returns an error — most commonly a 404 Not Found, but also 410 Gone, 500 Internal Server Error, or a DNS failure that prevents the page from loading at all.

Broken links fall into two categories that need different handling:

Both kinds hurt user experience. Both kinds hurt SEO. And both kinds compound over time if you do not catch them.

Why broken links happen (5 root causes)

Understanding why broken links appear helps you prevent them. In our experience scanning thousands of sites, the same five causes account for almost every broken link in production:

1. Pages deleted without redirects

A team member deletes an old blog post, product page, or campaign landing page. Nobody adds a redirect. Every link to that page — including external backlinks from other sites — is now broken. This is the single most common cause in CMS-based sites.

2. CMS migrations and URL structure changes

A site moves from WordPress to Webflow. URL patterns change from /2024/03/post-name to /blog/post-name. If the migration does not include a redirect map covering every old URL, all internal links and external backlinks pointing to the old structure break overnight.

3. External sites going offline or restructuring

You link to a useful resource on someone else's site. Two years later, that company pivots, sells the domain, or simply restructures their content. Your link still works syntactically but now points to a 404 page, an unrelated topic, or a parked domain.

4. Slug edits without updating internal links

An editor renames a page from /services/web-design to /services/website-design. The CMS adds a redirect (sometimes). But the navigation menu, footer, sidebar widgets, and inline links inside other posts still point to the old URL. Even if the redirect catches them, every redirect is a small performance and SEO hit.

5. Typos in href attributes

A developer writes <a href="/contat"> instead of <a href="/contact">. A copywriter pastes a URL with a stray space or a stripped protocol. These typos go unnoticed until a real user clicks and gets a 404. The fix is simple — finding them is the hard part.

We covered the technical breakdown of each cause in detail in our companion post on what causes broken links on websites — including DNS failures, redirect chain breakage, and case-sensitivity issues on Linux servers.

The real SEO cost of broken links

Broken links hurt SEO. The question is how much, and through what mechanisms. Here is what actually happens when search engines find broken links on your site:

Wasted crawl budget

Googlebot allocates each site a finite amount of crawl activity. When the crawler follows internal links to 404 pages, that crawl request is wasted — it could have been spent indexing your real content. On large sites, accumulated broken internal links can measurably slow indexing of new pages.

Split link equity

When you delete a page that had backlinks pointing to it and do not redirect, all the SEO authority those backlinks passed to your site is lost. A page with five quality backlinks deleted without a 301 redirect is five strong ranking signals thrown away.

Lower quality signal

Google's ranking systems include signals for site maintenance quality. A site with hundreds of broken internal links signals neglect. A site with zero broken links signals professionalism. This is not the largest ranking factor, but it compounds with everything else.

Lost user trust and conversions

The most measurable cost is not SEO at all — it is user behavior. A broken link in a checkout flow loses sales. A broken link in a contact form loses leads. A broken link in a navigation menu loses every visitor who clicks it. Bounce rates spike. Time on site drops. Both are SEO signals indirectly.

In practice

Most sites we audit have between 5 and 50 broken internal links they did not know about. The largest single cause: pages renamed in the CMS years ago, with no audit since.

How to find broken links: 5 methods compared

Detecting broken links sounds simple — follow every link and check the HTTP response. In practice, the method matters enormously. Here are the five most common approaches with their real trade-offs:

Method 1: Manual browser checking

Click every link in a real browser and see what happens. This is reliable but does not scale. A small site with 100 links takes hours. A medium site with 1,000 links is a full day. A large site is impossible. Manual checking is useful for final verification of high-stakes pages, not as a primary method.

Method 2: Command-line tools (curl, wget)

Scripts that fetch URLs and check status codes. Fast and free, but produce massive false positives. Sites behind Cloudflare, Akamai, or other WAFs frequently return 403 Forbidden to non-browser requests while serving the same URL normally to real users. Your script reports broken, the link is fine. This is the worst method for accuracy.

Method 3: Free online checkers (W3C, Dead Link Checker)

Web-based tools where you paste a URL and wait. Reliable on small sites. Slow, queue-based, and often hit rate limits on larger sites. Most do not handle JavaScript-rendered links — single-page applications and React sites with client-side routing get missed entirely.

Method 4: Desktop crawlers (Screaming Frog, Sitebulb)

Local applications that crawl your site and produce detailed reports. Very thorough. Best for one-time deep audits of complex sites. Downsides: paid (Screaming Frog free version caps at 500 URLs), require local installation, do not run scheduled scans automatically, and need manual export to share results with clients or teammates.

Method 5: Browser-based scanners (Lintry)

Cloud tools that launch a real Chromium browser per scan and check every link the way a user would. Handles JavaScript rendering, follows redirects properly, and gets the same response real visitors get from WAF-protected sites. Fast (under 60 seconds for most pages), shareable reports, schedulable for ongoing monitoring.

This is the method we built Lintry around — and the reason every link check produces a result that matches what a human visitor would see, not what a stripped-down HTTP client would see.

Quick comparison

MethodSpeedAccuracyJS supportBest for
Manual browserVery slowPerfectYesFinal verification
curl / wget scriptsVery fastPoor (false positives)NoInternal-only sites
W3C / Dead Link CheckerSlowOKNoSmall static sites
Desktop crawlersMediumGoodPartialOne-time deep audits
Browser scanners (Lintry)FastExcellentYesOngoing monitoring

We compare each of the leading specific tools in detail in the best free broken link checker tools for 2026, including which ones we actually trust and which ones to avoid.

Why most broken link checkers give false positives

If you have used a broken link checker before, you probably saw it flag links as broken that you knew worked. The reason is almost always one of the following:

WAFs blocking automated requests

Cloudflare, Akamai, Imperva, AWS Shield, and similar Web Application Firewalls explicitly block requests that look automated. They check user agents, TLS fingerprints, request patterns, and behavior. A simple curl request gets a 403 Forbidden or a JavaScript challenge page. The link is fine — the checker just cannot reach it the way a human can.

JavaScript-rendered content

Many modern sites render their main content (including links) via JavaScript on the client. A fetch-based checker sees the empty initial HTML and misses every link that would appear after JS runs. The checker reports "no links found" or misses entire navigation menus that exist in production.

Rate limiting and temporary failures

A site under heavy load returns a temporary 503 Service Unavailable. The checker marks it broken. Five seconds later the same URL would have loaded normally. Aggressive checkers that do not retry produce dozens of false positives during normal traffic spikes.

Geographic blocking

Some sites only serve responses from specific countries. A checker running in the US gets a different response than one running in Europe. Your geographically-restricted link might be flagged broken because the checker tested from the wrong region.

Why we use real Chromium

Every link check Lintry runs goes through a real headless Chromium browser. It sets a normal user agent, executes JavaScript, waits for the page to settle, and reports the final HTTP status. The result is the same response a human visitor would see — no false positives from anti-bot measures.

How to fix broken links: the process

Once you have a list of confirmed broken links, the fix depends on the cause. Here is a process that handles every common case:

Step 1: Triage by impact

Not every broken link is equally urgent. Sort your list by impact:

Fix top-down. A single broken navigation link fixed is worth a hundred broken links in archived blog posts.

Step 2: For internal broken links — add redirects or update

If the destination page was moved, add a 301 permanent redirect from the old URL to the new one. The redirect preserves SEO authority and seamlessly forwards users. On most platforms this is one line of configuration:

// Next.js example
async redirects() {
  return [{
    source: '/old-page',
    destination: '/new-page',
    permanent: true,
  }]
}

If the destination page was deleted permanently and has no equivalent, decide between:

Step 3: For external broken links — update, archive, or remove

External broken links cannot be redirected (you do not own the destination). Your options:

Step 4: Verify the fix

After deploying fixes, re-scan the page. Confirm that the previously broken links now resolve correctly. This step matters — sometimes a redirect rule has a typo, a CMS cache hides the change, or the new destination is also broken.

Step 5: Document what you fixed

Keep a record of what was broken, what you did, and when. For agencies managing client sites, this becomes part of your monthly reporting. For internal teams, it builds institutional knowledge about which kinds of changes tend to break links so you can prevent them next time.

Preventing broken links long-term

Finding and fixing broken links is reactive. The real win is preventing them from accumulating in the first place. Three practices make this manageable:

Pre-deploy link checks

Run a broken link scan before any production deployment. Catch the breakage in staging instead of in front of users. This takes 60 seconds with a browser-based scanner and prevents the vast majority of new broken links from ever shipping.

Scheduled monitoring

External links go bad on their own schedule, not yours. A site you linked to two years ago might go offline next week — and you have no way to know unless someone tells you or you scan. Set up weekly automated scans on production. When new broken links appear, you get notified before users do.

Redirects as part of every page change

Make it a hard team rule: any URL change includes a redirect from the old URL. Any page deletion includes either a redirect to a relevant alternative or an explicit decision to let it 404. This single discipline prevents most internal broken links from ever happening.

The agency workflow

For agencies managing client sites, the pattern that works is: pre-launch scan on every project, weekly monitoring on every active client, monthly QA report including the broken-link count over time. This turns broken link checking from a manual chore into a service deliverable.

FAQ

What is the best free broken link checker?

For one-off scans, Lintry runs in your browser without signup and produces a full report including broken links, redirects, and HTTP statuses in under 60 seconds. For scheduled monitoring with email alerts, Lintry's free plan covers up to 10 scans per month. We compare alternatives in detail in our broken link checker tools roundup.

Do broken links hurt SEO?

Yes. Broken internal links waste crawl budget, split link equity, and signal poor maintenance. Broken external links reduce content authority and trustworthiness. While neither is the largest ranking factor, both contribute to lower rankings — and the bigger cost is usually user behavior: bounce rate spikes, conversions drop, time on site falls.

How often should I check for broken links?

Before every deploy, after major content updates, and on a recurring schedule. Most teams set up weekly automated scans on production. High-traffic sites benefit from daily checks. The cost of catching a broken link automatically is far lower than discovering one through a customer complaint.

What is the difference between a 404 and a 410?

A 404 Not Found means the URL is currently unavailable — it might come back. A 410 Gone explicitly tells search engines that the page is permanently removed. Use 410 to make Google drop the URL from its index faster. For SEO purposes, both behave similarly to users, but 410 sends a stronger removal signal.

Why do bot-blocking sites cause false positives in link checkers?

Many sites use Web Application Firewalls (Cloudflare, Akamai, Imperva) that block or challenge automated requests. A simple curl-based checker gets a 403 Forbidden or a CAPTCHA, marks the link as broken, but a real browser visiting the same URL would see the page normally. Browser-based checkers like Lintry use a real Chromium instance — they get the same response a human visitor would.

Can I find broken backlinks pointing to my site?

Yes — but this is a different process than finding broken links on your own site. Broken backlinks are external sites linking to URLs on your site that no longer exist. They are recoverable SEO value: redirect the URL the backlink points to, and you reclaim the link equity. We cover the full process in how to find broken backlinks pointing to your site.

Does Google Search Console show broken links?

Partially. Google Search Console shows URLs Googlebot tried to crawl and received 404 responses for, under "Pages → Not indexed → Not found (404)." This is useful but limited: it only shows pages Google has tried to crawl, only on your own domain, and the data lags by days. For comprehensive broken link detection — especially external broken links pointing out of your site — you need a dedicated scanner.

What causes broken links on websites?

The five most common causes are: pages deleted without redirects, CMS migrations changing URL structures, external sites going offline or restructuring, slug edits that miss internal links, and typos in href attributes. We break down each cause and how to detect it in what causes broken links on websites.

Putting it together

Broken links are inevitable. Sites change, the web changes, and entropy wins on a long enough timeline. The difference between a site that ranks and converts well and a site that bleeds traffic and trust is not zero broken links — it is knowing your broken links and fixing the ones that matter.

The process is straightforward: scan on a schedule, triage by impact, fix internal breaks with redirects, replace or remove external breaks, document what you did, prevent the next round by checking before every deploy. Sites that follow this pattern have measurably better SEO and lower support costs than sites that do not.

"Broken links are not a sign of incompetence. They are a sign that nobody is looking. The fix is not perfection — it is regular attention."

If you ship websites professionally — for clients or your own products — and you have not scanned in the last 30 days, that is the next 60 seconds well spent. Run Lintry against any URL, see what is broken, and start with the highest-impact fixes.

Find broken links on your site — free

Real Chromium browser. No false positives. Results in under 60 seconds.

Run a free scan →