How to Find and Fix Broken Links on Your Website

A broken link is any hyperlink that fails to deliver the user to a working page. Click one and you hit a dead end -- a 404 error, a server timeout, or an endless redirect loop. Every site accumulates them over time. Pages get deleted, URLs change during redesigns, external sites go offline. The question is not whether your site has broken links. It does. The question is how many, how important they are, and what you are doing about them.

Broken links directly affect your search rankings through three things that determine your visibility: how efficiently search engines crawl your site, how ranking authority flows through your pages, and whether users trust your content enough to stay and convert.

404 Not Found

The most straightforward type. The URL returns a 404 status code, meaning the server explicitly says the page does not exist. This happens when a page is deleted, a URL is changed without a redirect, or someone types a URL incorrectly when creating a link. The real damage is to any internal links pointing to that URL -- they are dead ends leaking link equity into nothing.

5xx Server Errors

A 500, 502, or 503 error means the server itself is broken or overloaded. Unlike 404s, these are often transient -- the page might work fine an hour later. But persistent server errors cause pages to be dropped from the index. The danger is that server errors tend to affect entire sections at once. A database connection failure does not break one page -- it breaks every page that queries the database.

Redirect Chains

A redirect chain occurs when URL A redirects to URL B, which redirects to URL C, which may redirect further. Each hop adds latency and loses a small amount of link equity. Redirect chains typically accumulate during site migrations -- you redirect old URLs to new ones, then restructure again, and the original redirects now point to URLs that themselves redirect.

Example: An e-commerce site migrated from /products/widget-123 to /shop/widgets/widget-123 in 2023. In 2025, they reorganized to /store/home-widgets/widget-123. Now any old backlink goes through two redirects before reaching the actual page.

Soft 404s

The most insidious type. The server returns a 200 OK status code, but the page content is empty or useless -- a generic "page not found" message or an empty search results page. Google specifically identifies soft 404s in Search Console and treats them as 404s, but with less certainty and slower processing. Soft 404s waste crawl budget because the crawler keeps revisiting them.

Common causes include CMS platforms that render a "no results" template for deleted content instead of returning a proper 404 status code.

Timeout Errors

Some links do not return any HTTP status code at all -- the connection simply times out. This happens with external links to servers that are down, slow, or blocking your IP. Timeouts are harder to track because they behave differently depending on network conditions and geographic location.

Wasted Crawl Budget

Search engines allocate a finite crawl budget to each site. Every request spent on a broken URL is a request not spent on a page that matters. For large sites with thousands of pages, this compounds significantly. If Googlebot spends 15% of its crawl budget on 404s, that is 15% less capacity for indexing your actual content.

Internal links distribute ranking authority throughout your site. When a link points to a broken URL, that authority disappears -- it does not redistribute to other links on the page.

Consider a blog post with strong external backlinks that links to three product pages. If one internal link is broken, roughly one-third of the authority that post would pass is wasted. Across dozens of broken internal links, the cumulative loss becomes significant.

User Experience and Engagement Signals

A user who hits a 404 has three options: use the back button, navigate elsewhere, or leave. Most leave. Higher bounce rates and lower time-on-site send negative engagement signals. A visitor who encounters two or three broken links starts questioning whether the content is maintained and whether they should trust you with their email address or credit card.

Indexing Problems

Broken links in your navigation or XML sitemap mislead search engines about your site's structure. If your sitemap lists broken URLs, Google will flag this in Search Console and may reduce the trust it places in your sitemap data overall.

Not all broken links deserve the same urgency. Understanding the difference between internal and external broken links helps you prioritize your fixing efforts.

Internal broken links -- links within your site that point to other pages on your site -- are entirely within your control. They indicate structural problems: pages that were deleted without redirects, URL slugs that were changed, or template errors generating incorrect links.

Internal broken links are more damaging than external ones for two reasons. First, they break your site's internal link structure, which is the primary mechanism you control for distributing ranking authority. Second, they affect every single visitor who encounters them, not just those who happen to click a specific outbound link.

Prioritize internal broken links by:

External broken links -- links from your site to other websites -- are partially outside your control. The linked site might have restructured, gone offline, or moved content. You cannot fix someone else's server.

External broken links matter less for technical SEO because they do not break your internal link structure. However, they still affect user experience and can signal a poorly maintained site. A resource page full of dead links is not helpful content.

Prioritize external broken links by:

Manual Spot-Checking

Click links on your most important pages and see what happens. Tedious and unscalable, but worth doing occasionally on your homepage and top-performing content. Human spot-checking sometimes reveals issues that automated tools miss -- like a link that returns a 200 but leads to an irrelevant page.

Browser Developer Tools

Open Chrome DevTools (F12), go to the Network tab, reload a page, and filter by status codes in the 400-599 range. This shows broken resources on that specific page. It only checks one page at a time, but it is immediate and requires no setup.

Google Search Console

Search Console's Pages report (under Indexing) lists URLs that Google encountered but could not index. Filter for "Not found (404)" and "Soft 404" errors. This shows you exactly which broken URLs Google's crawler has found.

The limitation: Search Console only shows URLs that Googlebot attempted to crawl. It is reactive, showing problems after Google has found them. You want to find them first.

Browser Extensions

Extensions like Check My Links or Broken Link Checker scan a single page for broken links. Useful for content editors checking pages before publishing, but they do not scale to site-wide audits.

Crawl-Based Tools

The most thorough approach is a site-wide crawl that follows every internal link, checks every URL, and reports the results. SEO Monitor crawls your pages and checks up to 60 internal links per page, reporting broken links alongside other on-page SEO signals like missing titles, thin content, and indexing directives. Because it runs as part of a broader technical SEO audit, broken link data is contextualized -- you see not just that a link is broken, but which pages contain it and what other issues those pages have.

A crawl-based approach finds issues before Search Console discovers them and before users encounter them.

Log File Analysis

For large sites, server access logs reveal which URLs return 404 status codes. This captures broken links from all sources -- crawlers, users, social media, and external sites. The downside is that log analysis requires server access and technical skills to parse the data.

Automated Monitoring

Finding broken links once is useful. Keeping them found is what matters. A broken link audit from January is stale by March. Automated monitoring -- through scheduled crawls or a tool like SEO Monitor that re-crawls on a configurable schedule -- ensures new broken links are caught within days, not months.

301 Redirects: The Default Fix

When a page has moved to a new URL, set up a 301 (permanent) redirect from the old URL to the new one. A properly implemented 301 passes approximately 95-99% of the original page's link equity to the new URL and tells search engines to update their index.

Implementation depends on your stack -- .htaccess on Apache, rewrite directives on Nginx, a Redirection plugin on WordPress, Page Rules on Cloudflare, or config files on Vercel/Netlify.

Common mistakes with redirects:

Redirects handle external links and bookmarks you cannot control. But for internal links, the better fix is updating the link itself to point directly to the correct URL -- a redirect adds an extra HTTP round-trip that a direct link avoids.

After setting up redirects, search your CMS or content database for the old URL and replace it. Most platforms have search-and-replace functionality for this.

Sometimes there is no appropriate redirect target. The linked content simply does not exist anymore and nothing equivalent has replaced it. In these cases, remove the link entirely.

If the broken link was providing context or supporting a claim in your content, replace it with a link to an alternative resource that serves the same purpose. Do not leave a parenthetical reference to something the reader cannot access.

You cannot fix someone else's website, but you can fix your side:

  1. Check the Wayback Machine. The Internet Archive may have a cached version, and sometimes the content simply moved to a new URL.
  2. Search for the content. Paste the page title into a search engine -- it may have been republished elsewhere.
  3. Find an alternative. If the original is gone, link to a comparable resource.
  4. Remove the link. If no alternative exists, remove it. A dead link is worse than no link.

Fixing Redirect Chains

Redirect chains require a specific approach. You need to identify every redirect in the chain and repoint each one directly to the final destination.

Example chain: /blog/old-post/blog/2023/old-post/blog/posts/old-post/articles/old-post

Fix: Update all three redirects to point directly to /articles/old-post:

Then update all internal links to use /articles/old-post directly, eliminating the need for any redirect at all for your own visitors.

Fixing Soft 404s

Soft 404s require a two-part fix:

  1. If the page should not exist: Configure your server or CMS to return a proper 404 status code for pages with no content. In many CMS platforms, this means customizing the error handling for deleted or empty content.
  2. If the page should exist: Add meaningful content. An empty category page, a search results page with zero results, or a product page with only a title and no description -- these need content or should return a 404 if the content truly does not exist.

Site Migrations

A site migration -- changing domains, restructuring URLs, or moving to a new CMS -- is the largest source of broken links. The typical failure mode: you create a redirect map for your top 500 pages, but your site has 3,000 URLs including old blog posts, PDFs, and image URLs. The 2,500 URLs not in your map all break simultaneously.

Prevention: Before migrating, crawl your entire site and export every URL. Map each one to either a new URL or a deliberate 404. Crawl the new site immediately after launch and compare.

Deleted Products or Content

E-commerce sites delete product pages when items go out of stock permanently. Content sites archive outdated articles. Any internal links to those pages break, and external backlinks lose their value.

Prevention: Never delete a URL without a redirect. For products, redirect to the parent category or a similar product. For blog posts, redirect to a related article.

Changed URL Structure

Switching from /blog/post-title to /articles/2026/post-title changes every URL on your site. Without comprehensive redirects, every internal and external link breaks.

Prevention: Avoid changing URL structure unless there is a compelling reason. When you must, generate redirects programmatically -- do not create redirect maps manually.

CMS Updates and Template Changes

A CMS update might change how URLs are generated. A template change might alter navigation links. These changes are subtle and often go unnoticed because they happen at the template level, affecting every page.

Prevention: After any CMS or template update, run a crawl and compare broken link counts to your baseline. SEO Monitor's scheduled crawls catch these regressions automatically -- if Wednesday's crawl finds 12 broken links that were not there Monday, something changed mid-week.

External links break at a rate of roughly 6-7% per year. A three-year-old blog post with 20 external links can expect 3-4 to be dead.

Prevention: Audit external links on your highest-value content annually. Quarterly for sites where citations are central to the content's value.

Establish a Monitoring Baseline

Run a full site crawl, fix everything you find, and record the result. This is your baseline. Any future crawl above zero means something changed. Tools like SEO Monitor send periodic crawl results so you can spot new broken links before they affect search performance. The goal is not perfection -- it is early detection.

Pre-Launch and Pre-Publish Checks

Before launching a new site or major update: - Crawl the staging site and check for broken internal links - Verify all redirects from the old URL structure are in place - Test navigation and footer links on every major template - Check XML sitemap URLs against actual live pages

Before publishing new content: - Verify all links in the article resolve correctly - Use developer tools or a link-checking extension to scan the page

Redirect Management

Maintain a redirect log -- a spreadsheet of every redirect, when it was created, and why. This lets you check whether a source URL already redirects somewhere (preventing chains) and decide whether old redirects can be retired.

URL Hygiene

Practices that reduce broken link risk from the start:

CMS Plugins and Guardrails

Install plugins that warn editors when deleting a page with inbound internal links, suggest redirects when a URL slug changes, and validate links before publishing. WordPress plugins like Yoast SEO and Redirection offer these capabilities.

Developer Workflow Integration

For sites managed through version control:

Knowing how to fix broken links is one thing. Making it a repeatable process is another. Here is a practical workflow:

Step 1: Audit

Run a full site crawl. Export all broken links with their HTTP status codes and the pages they appear on. Group them by type: 404s, redirect chains, server errors, soft 404s, timeouts.

Step 2: Prioritize

Sort by impact:

  1. Global navigation or footer links -- these affect every page. Fix immediately.
  2. High-traffic pages -- broken links there waste the most link equity.
  3. Pages with multiple broken links -- a page with five broken links is a worse user experience than five pages with one each.
  4. Broken URLs that had external backlinks -- these represent lost link equity from external sources.
  5. Everything else -- fix in batches as time allows.

Step 3: Fix

Apply the appropriate fix for each type:

Step 4: Verify

After fixing, re-crawl to confirm. SEO Monitor tracks page-level SEO signals across crawls, so you can compare results and confirm the broken links are gone.

Step 5: Monitor

Set up recurring crawls as part of your broader SEO monitoring workflow -- weekly for active sites, monthly for stable ones. A sudden spike means something broke in production. A gradual increase means link rot is accumulating faster than you are fixing it.

Measuring Success

Track these metrics to gauge progress:

Broken links are not a one-time problem. They are a maintenance obligation, like monitoring page speed, updating dependencies, or renewing SSL certificates. The sites that rank well are not the ones that never have broken links -- they are the ones that find and fix them fast.

Try SEO Monitor Free

Run a technical SEO audit in minutes. Monitor content changes 24/7. Track rankings across Google, Yandex, and Bing.

Get Started Free