/about/blog/home404/tools/seo301 redirect/old-url/new-urlBroken Links Found47Links Fixed47/47

Technical SEO Guide

How to Find and Fix Broken Links on Your Website

Technical·19 min read

How to Find and Fix Broken Links on Your Website in 2026

Broken links are one of the most overlooked technical SEO problems. Every 404 error on your site wastes crawl budget, leaks link equity, and frustrates users. This guide walks through the complete process of finding broken links using free and premium tools, then fixing them with the right strategy for each situation.

A study by Semrush found that 42 percent of websites have broken internal links. That is nearly half of all sites on the web leaking ranking potential through dead-end URLs. The problem gets worse over time as content is updated, pages are reorganized, and external sites change their URL structures.

Finding and fixing broken links is one of the highest-impact, lowest-effort technical SEO tasks you can perform. Unlike complex algorithm changes or content strategy overhauls, broken link fixes are straightforward and their impact is immediate. Once you set up a system for regular monitoring, the process becomes almost automatic.

This guide covers everything from understanding why broken links damage your SEO to implementing redirects in various platforms. We will use our Internal Link Analyzer and Redirect Chain Checker as diagnostic tools alongside Google Search Console and Screaming Frog.

Fixing Broken Links with 301 Redirects

A 301 redirect is the correct solution when content has moved to a new URL or when you need to capture link equity from broken inbound links. The 301 tells search engines that the move is permanent and that all ranking signals should transfer to the new URL.

Apache .htaccess Redirects

.htaccess - 301 redirect examples

# Single page redirect
Redirect 301 /old-page /new-page

# Redirect with full URL (useful for domain changes)
Redirect 301 /blog/old-post https://example.com/blog/new-post

# Pattern-based redirects using RewriteRule
RewriteEngine On

# Redirect an entire directory
RewriteRule ^old-section/(.*)$ /new-section/$1 [R=301,L]

# Redirect all URLs with a specific parameter
RewriteCond %{QUERY_STRING} ^id=123$
RewriteRule ^product$ /products/widget-name? [R=301,L]

# Redirect non-www to www
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

Nginx Redirects

Nginx - Server block redirect examples

server {
    # Single page redirect
    location = /old-page {
        return 301 /new-page;
    }

    # Redirect entire directory
    location /old-section/ {
        rewrite ^/old-section/(.*)$ /new-section/$1 permanent;
    }

    # Regex redirect for pattern matching
    location ~ ^/blog/(\d{4})/(\d{2})/(.+)$ {
        return 301 /blog/$3;
    }
}

Next.js Redirects

For Next.js applications (like this website), redirects are configured in the next.config.ts file:

next.config.ts - Next.js redirect configuration

import type { NextConfig } from 'next'

const nextConfig: NextConfig = {
  async redirects() {
    return [
      // Simple redirect
      {
        source: '/old-blog-post',
        destination: '/blog/new-blog-post',
        permanent: true, // 301 redirect
      },
      // Wildcard redirect for entire section
      {
        source: '/old-section/:slug*',
        destination: '/new-section/:slug*',
        permanent: true,
      },
      // Redirect with path parameter
      {
        source: '/products/:id(\\d+)',
        destination: '/shop/product/:id',
        permanent: true,
      },
      // Redirect based on query parameter
      {
        source: '/search',
        has: [{ type: 'query', key: 'category', value: 'seo' }],
        destination: '/blog/seo',
        permanent: true,
      },
    ]
  },
}

export default nextConfig

WordPress Redirects

For WordPress sites, the Redirection plugin is the most reliable option. It provides a GUI for creating redirects and automatically logs 404 errors so you can catch new broken links as they appear. For larger sites, managing redirects at the server level (Nginx or Apache) is more performant than PHP-based plugin redirects.

Finding and Fixing Redirect Chains

Redirect chains happen when one redirect leads to another. For example: /old-page redirects to /renamed-page which redirects to /final-page. Each hop adds latency (typically 50 to 200 milliseconds) and Google may drop a small percentage of link equity at each step. Use our Redirect Chain Checker to identify these on your site.

Redirect chain example and fix

# Problem: Redirect chain (3 hops)
/old-page     -> 301 -> /renamed-page
/renamed-page -> 301 -> /new-section/page
/new-section/page -> 301 -> /final-page

# Fix: Update all redirects to point directly to final destination
/old-page         -> 301 -> /final-page
/renamed-page     -> 301 -> /final-page
/new-section/page -> 301 -> /final-page

Redirect Loops

A redirect loop is worse than a chain. It occurs when page A redirects to page B, which redirects back to page A. The browser will try to follow the loop several times before giving up and displaying an error. This makes the page completely inaccessible to both users and search engines.

Identifying and fixing redirect loops

# Redirect loop (broken)
/page-a -> 301 -> /page-b
/page-b -> 301 -> /page-a
# Browser error: ERR_TOO_MANY_REDIRECTS

# Fix: Remove one of the redirects and decide which URL is canonical
# Keep /page-b as the canonical URL:
/page-a -> 301 -> /page-b
# Delete the /page-b -> /page-a redirect entirely

Common causes of redirect loops include conflicting rules in .htaccess and server config files, HTTP-to-HTTPS redirects that conflict with www-to-non-www redirects, and CMS plugins that create redirects without checking for existing rules. Always test your redirects after adding them using a tool like our Redirect Chain Checker or the curl command line utility:

Testing redirects with curl

# Follow redirects and show each hop
curl -IL https://example.com/old-page

# Expected output for a clean redirect:
# HTTP/2 301
# location: https://example.com/new-page
# HTTP/2 200

Preventing Broken Links from Occurring

The best approach to broken links is preventing them in the first place. Build these practices into your workflow to minimize the number of broken links that appear on your site.

Create Redirects Before Deleting Pages

Before removing any page from your site, check whether it has inbound links (both internal and external). Use Google Search Console and your backlink tool of choice. If the page has backlinks, create a 301 redirect to the most relevant replacement page before deleting the original. This should be a required step in your content management workflow.

Use Relative URLs for Internal Links

Relative URLs like /blog/seo-guide are less prone to breaking than absolute URLs like https://example.com/blog/seo-guide because they survive domain changes, protocol changes (HTTP to HTTPS), and subdomain changes without modification.

Set Up Automated Monitoring

Schedule a weekly or monthly crawl with Screaming Frog or a similar tool to catch new broken links before they accumulate. Many tools can email you a report automatically. For continuous monitoring, services like Little Warden or ContentKing check your site daily and alert you the moment a new 404 appears.

Build a Custom 404 Page

When broken links do occur, a well-designed 404 page minimizes the damage by keeping users on your site. Include a search bar, links to your most popular content, and a clear message that the page has moved:

Next.js - Custom 404 page (app/not-found.tsx)

export default function NotFound() {
  return (
    <div className="min-h-screen flex items-center justify-center">
      <div className="text-center max-w-lg px-6">
        <h1 className="text-6xl font-bold text-gray-900 mb-4">404</h1>
        <p className="text-xl text-gray-600 mb-8">
          This page has moved or no longer exists.
        </p>
        <div className="space-y-4">
          <a href="/" className="block bg-indigo-600 text-white
            px-6 py-3 rounded-lg font-semibold hover:bg-indigo-700">
            Go to Homepage
          </a>
          <a href="/blog" className="block text-indigo-600
            font-medium hover:text-indigo-800">
            Browse Our Blog
          </a>
          <a href="/free-seo-audit" className="block text-indigo-600
            font-medium hover:text-indigo-800">
            Get a Free SEO Audit
          </a>
        </div>
      </div>
    </div>
  )
}

A good 404 page reduces the bounce rate from broken link encounters by 30 to 50 percent. It also provides an opportunity to capture leads who might otherwise leave your site entirely. For a comprehensive overview of all link-related issues, consider running our full SEO audit which covers broken links alongside 50 other technical factors. You can also start with a free SEO audit to see how your site scores.

Frequently Asked Questions

How do broken links affect SEO?

Broken links hurt SEO in three ways. They waste crawl budget because search engines follow dead links and receive 404 errors instead of useful content. They create a poor user experience that increases bounce rates. And broken inbound links lose the link equity that was passed from referring domains, meaning you forfeit ranking power from those backlinks.

How often should I check for broken links?

Check for broken links at least monthly for small sites (under 500 pages) and weekly for large sites or sites with frequently changing content. Set up automated monitoring with a crawler scheduled on a regular basis. Also run a manual check after any major content migration, URL structure change, or site redesign.

Should I use a 301 redirect or fix the link directly?

Use a 301 redirect when content has moved to a new URL and you need to preserve link equity from external backlinks. Update the link directly when dealing with outbound links to external sites, internal links caused by typos, or links pointing to content that has been deleted with no equivalent replacement page.

What is a redirect chain and why is it bad?

A redirect chain occurs when one redirect leads to another redirect, creating multiple hops before reaching the final destination. Each hop adds 50 to 200 milliseconds of latency and can cause search engines to lose a small percentage of link equity. Fix chains by pointing all intermediate redirects directly to the final destination URL.

Do broken external links hurt my SEO?

Broken external links (links from your site to other sites that return 404 errors) do not directly hurt your rankings. However, they damage user experience and perceived content quality. Users who encounter dead links may question the reliability of your information. Fix broken external links as part of routine content maintenance.

How do I find broken links pointing to my site from other websites?

Use Google Search Console to find pages returning 404 errors that have inbound links. You can also use tools like Ahrefs or Semrush to check your backlink profile for links pointing to non-existent URLs. For each broken inbound link from a high-authority domain, create a 301 redirect to the most relevant existing page to recover that link equity.