How to Fix Broken Internal Links

How to Fix Broken Internal Links

Profile-Image
Bright SEO Tools in Technical SEO Feb 10, 2026 · 1 week ago
0:00

How to Fix Broken Internal Links: The Definitive Guide for 2026

Last Updated: February 8, 2026 | Published by Bright SEO Tools | Reading Time: 35 minutes

Quick Summary Broken internal links are hyperlinks on your website that lead to pages returning 404 errors or other HTTP error codes. They damage your SEO by wasting crawl budget, leaking link equity, and creating poor user experiences. This guide walks you through exactly how to find, fix, and prevent broken internal links using free and paid tools, manual methods, and automated monitoring solutions. According to a Semrush 2025 study, 42.5% of all websites have broken internal links, making this one of the most common and impactful technical SEO issues you can fix today.
42.5%
of websites have broken internal links
-15%
average organic traffic loss from unfixed broken links
10 sec
average time before users bounce from a 404 page
3.2x
more crawl budget wasted with broken links

Every website accumulates broken internal links over time. It is an inevitable side effect of a living, evolving website. Pages get deleted, URLs change, content gets reorganized, and CMS platforms get migrated. But while the cause is natural, the consequences can be severe for your search engine rankings, user experience, and overall site health.

According to Google's Search Central documentation, when Googlebot encounters broken internal links, it records these errors and may eventually reduce the crawl rate allocated to your site. That means fewer of your pages get indexed and ranked, directly impacting your organic traffic.

In this guide, we will cover everything you need to know about broken internal links: what they are, why they matter, how to find them efficiently, the best methods to fix them, and how to prevent them from appearing in the first place. Whether you run a small WordPress blog or manage a large enterprise website, the strategies in this guide will help you maintain a clean, healthy internal link structure that supports your SEO goals. You can also check our 10 Smart Ways to Fix Broken Links for a complementary list of actionable methods.

A broken internal link is a hyperlink on your website that directs users to another page on the same domain, but the destination page is unavailable. When a user or search engine bot clicks on a broken internal link, they receive an HTTP error response instead of the expected content. The most common error is a 404 Not Found status code, but broken links can also produce 410 Gone, 500 Internal Server Error, or timeout errors.

To understand broken internal links, it helps to distinguish them from broken external links. As explained by Moz's SEO learning center, internal links connect pages within the same domain, while external links point to pages on different domains. Both types can break, but broken internal links are entirely within your control to fix, making them a priority for any technical SEO strategy.

Types of Broken Internal Links

Type HTTP Status Code What It Means SEO Impact
404 Not Found 404 The page does not exist at the given URL High - wastes crawl budget, loses link equity
410 Gone 410 The page has been permanently removed Medium - Google removes from index faster
500 Server Error 500 Server-side error prevents page from loading High - signals server instability
Redirect Loop Varies URL redirects in a circle back to itself Critical - page becomes completely inaccessible
Timeout Error 408 / 504 Server takes too long to respond High - Googlebot may abandon the crawl
Redirect Chain 301 → 301 → 301 Multiple redirects before reaching final destination Medium - dilutes link equity at each hop
Warning: Soft 404 Errors A particularly tricky form of broken link is the soft 404. This occurs when your server returns a 200 OK status code, but the actual page content is an error message like "Page not found." Google specifically identifies soft 404s and treats them as errors. These are harder to detect with basic link checkers because the HTTP response looks normal. You should use our Spider Simulator tool to check how search engines interpret your pages and spot soft 404 issues.

How Internal Links Differ From External Links

Understanding this distinction matters because the fix strategies differ significantly. Broken internal links are entirely under your control. You own both the source page containing the link and the destination page (or the lack thereof). This means you can fix the issue at the source, at the destination, or both. With broken external links, you can only update or remove the link on your end since you have no control over the external website.

According to Backlinko's SEO guide on internal links, a well-structured internal linking architecture is one of the top five most impactful on-page SEO factors. That is why keeping your internal links healthy is so essential. For a deeper understanding of internal link strategies, our guide on Best Practices for Internal Linking in SEO covers the full picture.

Broken internal links create a cascade of negative effects that touch nearly every aspect of your site's SEO performance. Search Engine Journal's technical SEO guide identifies broken internal links as one of the top 10 technical SEO issues affecting organic rankings in 2026. Let us break down each impact area.

2.1 Crawlability and Indexing

Search engine crawlers like Googlebot discover your pages by following internal links. When they encounter a broken link, that crawl path ends abruptly. The destination page does not get crawled, and the crawler has to backtrack and find another path. As Google's crawler documentation explains, Googlebot has a limited crawl budget for each website, and every broken link consumes part of that budget with zero return.

For small websites with a few hundred pages, the crawl budget impact may be minimal. But for large websites with thousands or millions of pages, even a small percentage of broken internal links can prevent important pages from being crawled and indexed. Our 7 Powerful Fixes for Crawl Errors guide explains how crawl errors compound over time.

2.2 Link Equity Distribution

Internal links pass link equity (also called PageRank or link juice) from one page to another. This is the mechanism through which your site's authority flows to individual pages. When an internal link breaks, that equity flow stops completely. As Moz explains in their Page Authority guide, internal link equity is one of the primary factors determining how individual pages rank.

Think of your website's internal linking structure as a plumbing system. Each internal link is a pipe carrying authority from one page to another. A broken link is a burst pipe where authority leaks out and never reaches its intended destination. Learn more about this dynamic in our article on How Internal Linking Boosts SEO Score.

Impact of Broken Internal Links on Key SEO Metrics (% Negative Change)
Crawl Budget Efficiency
-78%
Link Equity Flow
-65%
Organic Traffic to Affected Pages
-52%
User Engagement (Time on Site)
-45%
Conversion Rate
-38%
Core Web Vitals Score
-22%

2.3 User Experience and Bounce Rate

When a user clicks an internal link and lands on a 404 error page, their experience is immediately disrupted. According to research published by HubSpot's marketing research, 88% of online users are less likely to return to a site after encountering an error. The user either leaves your site entirely (increasing bounce rate) or has to find another way to the content they wanted, which increases frustration and reduces trust.

This bounce rate impact sends a negative signal to Google. Search Engine Journal reports that while bounce rate is not a direct ranking factor, the behavioral signals associated with high bounce rates (short dwell time, pogo-sticking) do influence how Google evaluates page quality. For more strategies on keeping visitors engaged, see our guide on 8 Proven Tips to Reduce Bounce Rate.

2.4 Rankings and Organic Traffic

The cumulative effect of wasted crawl budget, lost link equity, and poor user experience is lower rankings. An Ahrefs study on broken links found that pages losing internal link equity due to broken links experienced a median ranking decline of 12 positions within three months. For competitive keywords, even a small ranking drop can mean significant traffic loss.

Number of Broken Internal Links Average Ranking Impact Average Traffic Impact Recovery Time After Fix
1-10 links -1 to -3 positions -5% to -8% 1-2 weeks
11-50 links -3 to -8 positions -8% to -15% 2-4 weeks
51-200 links -8 to -15 positions -15% to -30% 4-8 weeks
200+ links -15+ positions -30% to -50%+ 8-16 weeks

3. Common Causes of Broken Internal Links

Understanding why broken internal links occur helps you prevent them. Here are the most common causes, ranked from most to least frequent based on data from Semrush's analysis of over 100,000 websites.

3.1 Deleted or Removed Pages

The single most common cause of broken internal links is deleting a page without updating or removing the links that point to it. This happens constantly on e-commerce sites when products go out of stock, on blogs when outdated content gets removed, and on corporate sites when services or team members change.

3.2 URL Changes Without Redirects

Changing a page's URL slug, permalink structure, or directory path without setting up a proper 301 redirect creates instant broken links. This is especially common when teams change CMS settings, reorganize site architecture, or rename categories. Even changing a single character in a URL breaks every internal link pointing to the old address.

3.3 Typos in URLs

Manual entry of URLs in content, whether in blog posts, navigation menus, or CMS fields, introduces human error. A missing letter, an extra slash, a wrong character, or a case sensitivity issue can create a broken link that might go unnoticed for months.

3.4 CMS Migrations

Migrating from one CMS to another (for example, from Wix to WordPress, or from Drupal to a headless CMS) almost always changes URL patterns. If the migration does not include a comprehensive redirect map, hundreds or thousands of internal links can break simultaneously. Our 10 Technical SEO Secrets Revealed guide covers how to handle migrations safely.

3.5 Other Common Causes

Most Common Causes of Broken Internal Links (% of Occurrences)
Deleted/Removed Pages
34%
URL Structure Changes
25%
CMS Migration Issues
18%
Typos in Hardcoded Links
12%
Server Configuration Errors
7%
Plugin/Theme Conflicts
4%
Cause Risk Level Detection Difficulty Prevention Method
Deleted pages High Easy Always set up redirects before deleting
URL slug changes High Easy Use CMS auto-redirect features
Permalink structure changes Critical Medium Plan changes in staging, set up redirect rules
CMS migration Critical Medium Create a full redirect map before migrating
Typos Medium Hard Use link validation tools in your editor
HTTP to HTTPS migration High Easy Use server-wide redirect rules
Domain changes Critical Easy Set up domain-level 301 redirects
Plugin or theme updates Low Hard Test updates in staging environment first

You cannot fix what you have not found. Fortunately, there are many excellent tools available for detecting broken internal links, ranging from free built-in solutions to advanced enterprise crawlers. Here is a comprehensive look at each approach.

4.1 Google Search Console (Free)

Google Search Console is every webmaster's first stop for identifying broken link issues. In the updated 2026 interface, navigate to Indexing → Pages and look for URLs marked as "Not found (404)" or "Soft 404." These reports show you exactly which pages Googlebot tried to crawl but could not reach.

How to find broken links in Google Search Console:

1. Log in to Google Search Console
2. Select your property
3. Navigate to: Indexing → Pages
4. Click on "Not found (404)" under "Why pages aren't indexed"
5. Review the list of affected URLs
6. Click any URL to see referring pages (source of the broken link)
7. Export the full list by clicking the download icon

Pro Tip: Use the URL Inspection tool to check individual pages
and see how Google last crawled them.

The limitation of Google Search Console is that it only shows pages that Googlebot attempted to crawl. If a broken link points to a URL that Googlebot has not yet tried to reach, it will not appear in this report. For a complete picture, you need to supplement GSC data with a full site crawl.

4.2 Screaming Frog SEO Spider

Screaming Frog SEO Spider is the gold standard for desktop-based site crawling. The free version crawls up to 500 URLs, while the paid version (199 GBP/year as of 2026) handles unlimited URLs. To find broken internal links, start a crawl of your website and then filter the results by response code.

Screaming Frog: Finding Broken Internal Links

1. Open Screaming Frog SEO Spider
2. Enter your website URL in the address bar
3. Click "Start" to begin the crawl
4. Once complete, go to: Response Codes tab
5. Filter by: Client Error (4xx)
6. This shows all pages returning 404, 410, etc.
7. Click on any broken URL
8. Look at the "Inlinks" tab at the bottom
9. This reveals EVERY page that links to the broken URL

Export: Bulk Export → Response Codes → Client Error (4xx) Inlinks
This gives you a spreadsheet with source page, broken URL, and anchor text.

What makes Screaming Frog especially powerful is the "Inlinks" tab, which shows you every page on your site that links to the broken URL. This makes it efficient to fix the issue at every source location, not just the first one you find.

4.3 Ahrefs Site Audit

Ahrefs Site Audit is a cloud-based crawler that scans your site and presents broken links in a prioritized, actionable format. Ahrefs categorizes issues by severity and provides the context needed to fix them efficiently. The tool also tracks your progress over time, so you can see how your broken link count decreases after each fix.

4.4 Semrush Site Audit

The Semrush Site Audit tool provides detailed broken link reports with a site health score. It distinguishes between broken internal links and broken external links, and provides a severity ranking that helps you prioritize fixes. For a detailed walkthrough of running a full audit, see our guide on How to Do an SEO Audit for Your Website.

4.5 Other Tools and Methods

Tool Type Price (2026) Best For Max URLs
Google Search Console Cloud (Free) Free Monitoring Google-discovered 404s Unlimited
Screaming Frog Desktop Free / 199 GBP/yr Deep crawling and link analysis 500 (free) / Unlimited
Ahrefs Site Audit Cloud From $129/mo All-in-one SEO with link auditing Up to 1M
Semrush Site Audit Cloud From $139.95/mo Comprehensive site health monitoring Up to 500K
Sitebulb Desktop From $13.75/mo Visual site architecture and broken links Unlimited
Dead Link Checker Cloud (Free) Free Quick scans for small sites 2,000
Check My Links (Chrome) Browser Extension Free Checking individual pages Per page
Dr. Link Check Cloud Free / From $9/mo Scheduled monitoring 1,500 (free) / 250K
Bright SEO Score Checker Cloud (Free) Free Quick overall SEO and link health check Varies
Pro Tip: Use Multiple Tools No single tool catches every broken link. Neil Patel recommends using at least two different methods: Google Search Console for ongoing monitoring plus a dedicated crawler like Screaming Frog or Ahrefs for periodic deep audits. You can also verify your site's overall health quickly with our Online Ping Website Tool to ensure your server is responding properly before running a full crawl.

5. Proven Methods to Fix Broken Internal Links

Once you have identified your broken internal links, it is time to fix them. There are three primary methods, each appropriate for different situations. Forbes' digital marketing experts recommend a layered approach using all three methods for comprehensive coverage.

5.1 Method 1: Update the Link Directly (Best Option)

The ideal fix is to update the broken link in the source page to point to the correct, live URL. This is the cleanest solution because it eliminates any redirect overhead, preserves full link equity, and provides the best user experience.

1 Identify the source page - Find the page containing the broken link using your crawl report.

2 Determine the correct destination - Figure out where the link should point: the new URL for moved content, a related alternative page, or remove the link entirely if no suitable destination exists.

3 Edit the source page - Open the page in your CMS editor and update the href attribute to the correct URL.

4 Verify the fix - Click the updated link to confirm it works, and run a follow-up check with your broken link tool.

Example: Updating a Broken Link in HTML

<!-- BEFORE (Broken) -->
<a href="/blog/old-article-title">Read our guide</a>

<!-- AFTER (Fixed) -->
<a href="/blog/updated-article-title">Read our guide</a>

If the page was deleted entirely and no replacement exists:
<!-- Remove the link but keep the text -->
<p>Read our guide for more details about this topic.</p>

5.2 Method 2: Set Up 301 Redirects (Supplementary)

When you cannot update every link (for example, when the broken URL has external backlinks or is referenced in emails and documents you cannot edit), a 301 redirect is the next best option. A 301 redirect tells browsers and search engines that the page has permanently moved to a new URL.

According to Google's documentation on 301 redirects, a 301 redirect passes most of the link equity from the old URL to the new one. However, there is some loss at each redirect hop, which is why direct link updates are preferred for internal links.

Apache .htaccess Redirect Examples:

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

# Using mod_rewrite for pattern-based redirects
RewriteEngine On
RewriteRule ^blog/old-category/(.*)$ /blog/new-category/$1 [R=301,L]

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

Nginx Redirect Examples:

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

# Pattern-based redirect
location /old-directory/ {
  rewrite ^/old-directory/(.*)$ /new-directory/$1 permanent;
}
Warning: Avoid Redirect Chains A redirect chain occurs when URL A redirects to URL B, which then redirects to URL C. Each hop in the chain reduces the link equity passed through and increases page load time. Moz's guide on redirects warns that chains of three or more redirects can cause Googlebot to stop following the chain entirely. Always redirect directly to the final destination URL. Use our 10 Audit Tips to Fix SEO Issues Fast to catch redirect chain problems.

5.3 Method 3: Restore the Original Page

In some cases, the best fix is to restore the deleted page. This is especially true when the page had significant backlinks from external sites, was ranking well for target keywords, or was receiving consistent organic traffic. Check the Wayback Machine to find cached versions of deleted pages you want to restore.

Comparison of Fix Methods

Fix Method Link Equity Preserved Implementation Speed Scalability Best For
Direct Link Update 100% Moderate (manual) Low-Medium Internal links you control
301 Redirect ~90-99% Fast High External links, bulk fixes
Page Restoration 100% Moderate Low High-value pages with backlinks
Link Removal 0% (redistributed) Fast Medium Obsolete content with no alternative
Custom 404 Page 0% Fast (one-time) N/A (fallback) Safety net for unavoidable 404s

5.4 Creating an Effective Custom 404 Page

While not a fix for the broken link itself, a well-designed 404 page serves as a safety net that keeps users on your site when they encounter an error. HubSpot's guide to 404 page design recommends including a search bar, links to popular pages, and clear navigation back to the homepage.

Essential Elements of an Effective Custom 404 Page:

1. Clear message: "The page you're looking for doesn't exist."
2. Search bar: Let users search for what they need
3. Popular pages: Links to your most-visited content
4. Category navigation: Quick links to main site sections
5. Contact information: In case users need help
6. Brand consistency: Match your site's design and tone
7. Analytics tracking: Monitor 404 hits for ongoing broken link detection

<!-- Example 404 page snippet -->
<h1>Oops! Page Not Found</h1>
<p>The page you requested could not be found.</p>
<form action="/search" method="get">
  <input type="text" name="q" placeholder="Search our site...">
  <button type="submit">Search</button>
</form>
<h3>Popular Pages</h3>
<ul>
  <li><a href="/">Homepage</a></li>
  <li><a href="/blog">Blog</a></li>
  <li><a href="/contact">Contact Us</a></li>
</ul>

6. WordPress-Specific Broken Link Fixes

WordPress powers over 43% of all websites as of 2026, according to Forbes' WordPress statistics. Its plugin ecosystem makes broken link detection and fixing more accessible, but its dynamic nature also introduces unique challenges. Here is how to handle broken internal links specifically in WordPress.

6.1 WordPress Plugins for Broken Link Detection

Broken Link Checker Plugin: This free plugin monitors your WordPress site's content for broken links and missing images. It runs in the background and alerts you via the WordPress dashboard and email when broken links are found. You can fix broken links directly from the plugin's interface without opening each post individually.

Link Whisper: A premium plugin (from $77/year) that not only detects broken links but also suggests relevant internal linking opportunities. As Neil Patel discusses in his internal linking strategy guide, tools that suggest link opportunities while you write can prevent broken links from forming in the first place.

Rank Math SEO: Includes an internal link suggestions module and can detect 404 errors through its analytics integration. Search Engine Journal's comparison of WordPress SEO plugins rates its link management features highly.

6.2 Setting Up 301 Redirects in WordPress

Method 1: Using the Redirection Plugin (Recommended for Non-Developers)

1. Install and activate the "Redirection" plugin from the WordPress repository
2. Go to: Tools → Redirection
3. Under "Add new redirection":
  - Source URL: /old-page-slug
  - Target URL: /new-page-slug
  - Group: Redirections
  - HTTP Status: 301 Moved Permanently
4. Click "Add Redirect"

Method 2: Using functions.php (For Developers)

// Add to your theme's functions.php or a custom plugin
function custom_redirects() {
  $redirects = array(
    '/old-page/' => '/new-page/',
    '/removed-post/' => '/replacement-post/',
    '/outdated-guide/' => '/updated-guide/',
  );

  $request_uri = $_SERVER['REQUEST_URI'];
  foreach ($redirects as $old => $new) {
    if (strpos($request_uri, $old) !== false) {
      wp_redirect(home_url($new), 301);
      exit;
    }
  }
}
add_action('template_redirect', 'custom_redirects');

Method 3: .htaccess (For Apache Servers)

# Add before the WordPress rewrite rules
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page/?$ /new-page/ [R=301,L]
</IfModule>

6.3 Bulk URL Updates with Database Search and Replace

When you need to update many links at once, such as after a permalink structure change, a database search and replace tool is the fastest approach. The Better Search Replace plugin lets you search for a URL pattern and replace it across your entire WordPress database.

Warning: Always Back Up Before Database Changes Database search and replace operations are powerful but irreversible if done incorrectly. Always create a full database backup before running a bulk replace. Use the plugin's "dry run" feature first to preview changes before committing them. A single incorrect pattern can break your entire site.
Using Better Search Replace Plugin:

1. Install and activate "Better Search Replace"
2. Go to: Tools → Better Search Replace
3. Enter the old URL pattern: https://example.com/old-blog/
4. Enter the new URL pattern: https://example.com/blog/
5. Select tables to search (usually wp_posts and wp_postmeta)
6. Check "Run as dry run" first
7. Click "Run Search/Replace"
8. Review the dry run results
9. Uncheck "Run as dry run" and execute the real replacement

WP-CLI Alternative (For Developers):

# Preview changes first
wp search-replace 'https://example.com/old-blog/' 'https://example.com/blog/' --dry-run

# Execute the replacement
wp search-replace 'https://example.com/old-blog/' 'https://example.com/blog/'

# Target specific tables
wp search-replace 'old-url' 'new-url' wp_posts wp_postmeta --precise

6.4 Handling WordPress Permalink Changes

When you change WordPress permalink settings (Settings → Permalinks), every URL on your site changes. This is a common cause of mass broken internal links. If you must change your permalink structure, follow these steps to minimize broken links.

  1. Export a complete list of all current URLs using a sitemap or crawl tool
  2. Change the permalink structure in WordPress settings
  3. Use the Redirection plugin to set up pattern-based redirects from old URLs to new ones
  4. Run a database search and replace to update hardcoded URLs in content
  5. Run a full site crawl to verify no broken links remain
  6. Monitor Google Search Console over the following weeks for new 404 reports

For websites with thousands or millions of pages, checking links one by one is not feasible. You need bulk checking methods that can process large volumes efficiently. Here is how to approach broken link detection at scale, drawing from best practices shared by Search Engine Journal's site audit tools roundup.

7.1 Command-Line Tools

For developers and technical SEOs, command-line tools offer the fastest and most customizable approach to bulk link checking.

Using wget to Find Broken Links:

# Crawl the entire site and log broken links
wget --spider -r -nd -nv -H -l 3 -o broken_links.log https://example.com

# Filter only 404 errors from the log
grep -B 2 "404" broken_links.log > 404_errors.txt

Using Python with requests library:

import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin, urlparse

def check_internal_links(base_url):
  visited = set()
  broken = []
  to_visit = [base_url]

  while to_visit:
    url = to_visit.pop(0)
    if url in visited:
      continue
    visited.add(url)

    try:
      response = requests.get(url, timeout=10)
      if response.status_code == 404:
        broken.append(url)
        continue

      soup = BeautifulSoup(response.text, 'html.parser')
      for link in soup.find_all('a', href=True):
        href = urljoin(url, link['href'])
        if urlparse(href).netloc == urlparse(base_url).netloc:
          if href not in visited:
            to_visit.append(href)
    except Exception as e:
      broken.append(url)

  return broken

broken_links = check_internal_links('https://example.com')
print(f"Found {len(broken_links)} broken links")

7.2 Cloud-Based Bulk Checking

For non-technical users or teams that prefer a managed solution, cloud-based tools handle the infrastructure and present results in user-friendly dashboards. Ahrefs explains in their site audit guide that their cloud crawler can process up to 1 million pages per project, making it suitable for even the largest enterprise websites.

7.3 API-Based Solutions

For integration into existing workflows or CI/CD pipelines, API-based link checking lets you automate broken link detection as part of your development process.

Using Screaming Frog CLI for Automated Audits:

# Run a headless crawl and export broken links
screamingfrogseospider --crawl https://example.com \
  --headless \
  --output-folder /reports/ \
  --export-tabs "Response Codes:Client Error (4xx) Inlinks"

# Schedule via cron (Linux/Mac) for weekly checks
0 2 * * 1 /path/to/screamingfrogseospider --crawl https://example.com --headless --output-folder /reports/$(date +%Y%m%d)/

Using Ahrefs API for Broken Link Data:

curl -X GET "https://api.ahrefs.com/v3/site-audit/broken-links" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"target": "example.com", "mode": "domain"}'

8. Prioritizing Fixes by Page Authority

Not all broken internal links are equally damaging. Fixing a broken link on your homepage is far more impactful than fixing one buried in a five-year-old blog post that gets no traffic. Backlinko's technical SEO guide recommends a priority-based approach to maximize the impact of your broken link fixes.

8.1 The Priority Matrix

Evaluate each broken link using two dimensions: the authority and traffic of the source page (where the broken link sits), and the value of the destination page (what should have been linked to). Our Website SEO Score Checker can help you assess page authority for prioritization.

Priority Ranking for Broken Link Fixes (Impact Score: 1-100)
Navigation/Menu Links
95 - Critical
Homepage Links
92 - Critical
High-Traffic Page Links
85 - High
Cornerstone Content Links
80 - High
Category/Tag Page Links
70 - Medium
Blog Post In-Content Links
55 - Medium
Footer/Sidebar Widget Links
45 - Low-Med
Archived/Old Content Links
30 - Low

8.2 Prioritization Workflow

Follow this systematic approach to triage broken links effectively:

  1. Fix sitewide broken links first. These are broken links that appear in your header, footer, sidebar, or navigation menu. Since they appear on every page, they affect your entire site.
  2. Fix broken links on your highest-traffic pages. Check Google Analytics to identify your top 20 pages by organic traffic, then fix any broken links on those pages.
  3. Fix broken links pointing to high-value destinations. If the broken link's intended destination was a cornerstone page or money page, that fix restores important link equity.
  4. Fix broken links from pages with the most external backlinks. Pages with strong backlink profiles pass more equity through their internal links, so broken links on those pages represent a larger equity loss.
  5. Fix remaining broken links in bulk. After handling the priorities, clean up the remaining broken links using bulk methods.

For a systematic approach to site architecture improvements that support this prioritization, check our resource on 9 Site Architecture Tweaks That Work.

9. Impact on Crawl Budget

Crawl budget is the number of pages a search engine bot will crawl on your site within a specific timeframe. Google's official documentation on crawl budget explains that it is determined by crawl rate limit (how fast Google can crawl without overloading your server) and crawl demand (how much Google wants to crawl your site).

9.1 How Broken Links Waste Crawl Budget

Every time Googlebot follows a broken internal link, it uses one of its allotted crawl requests on a page that returns no useful content. This is a direct waste of crawl budget. For small sites with a few hundred pages, this waste is negligible because Google can easily crawl the entire site in a single session. But for large sites with 10,000+ pages, broken links can cause meaningful crawl budget problems.

Consider this scenario: your site has 50,000 pages and 500 broken internal links. If each broken link is referenced from an average of 3 source pages, Googlebot encounters 1,500 broken paths during a crawl session. That is 1,500 crawl requests wasted on dead ends, equivalent to 3% of your total pages not being crawled in that session.

Crawl Budget Waste by Site Size (% of Budget Lost to Broken Links)
Small Site (Under 500 pages, 10 broken links)
~2%
Medium Site (500-5K pages, 50 broken links)
~5%
Large Site (5K-50K pages, 200 broken links)
~12%
Enterprise Site (50K+ pages, 1000+ broken links)
~25%

9.2 Measuring Crawl Budget Impact

You can measure how broken links affect your crawl budget using Google Search Console's crawl stats report. Navigate to Settings → Crawl Stats to see how many pages Googlebot crawls per day and what response codes it encounters. A healthy site should show very few 404 responses in this report.

Analyzing Crawl Stats in Google Search Console:

Settings → Crawl Stats → Open Report

Key Metrics to Monitor:
- Total crawl requests per day (trending up = good)
- Average response time (should be under 500ms)
- Response codes breakdown:
  - 200 OK: Should be the vast majority
  - 301/302: Monitor for redirect chains
  - 404: Each one represents wasted crawl budget
  - 500: Server errors that may indicate deeper issues

Target: 404 responses should be less than 1% of total crawl requests

For a comprehensive understanding of how crawl optimization fits into your broader SEO strategy, review our 10 Technical SEO Secrets Revealed article.

10. Automated Monitoring Solutions

Finding and fixing broken links is essential, but without ongoing monitoring, new broken links will inevitably appear. The best approach is to set up automated systems that detect broken links as soon as they occur, rather than waiting for a periodic manual audit.

10.1 Continuous Monitoring Tools

Several tools offer continuous or scheduled monitoring specifically for broken links:

ContentKing (now part of Conductor) provides real-time SEO monitoring including immediate broken link detection. It crawls your site continuously and alerts you the moment a new broken link appears. This is especially valuable for large sites with frequent content changes.

Lumar (formerly Deepcrawl) offers enterprise-level continuous monitoring with customizable alert thresholds. You can set it to notify you when broken links exceed a certain percentage of your total internal links.

Sitebulb can be configured for scheduled crawls that automatically generate broken link reports and send them to your email.

10.2 Setting Up Automated Checks

GitHub Actions: Automated Weekly Broken Link Check

# .github/workflows/broken-links.yml
name: Check Broken Links
on:
  schedule:
    - cron: '0 6 * * 1' # Every Monday at 6 AM
  workflow_dispatch: # Allow manual triggers

jobs:
  check-links:
    runs-on: ubuntu-latest
    steps:
      - name: Check for broken links
        uses: lycheeverse/lychee-action@v1
        with:
          args: --verbose --no-progress https://example.com
          fail: true
      - name: Upload report
        uses: actions/upload-artifact@v3
        with:
          name: broken-links-report
          path: lychee/out.md

Node.js: Custom Monitoring Script

const { SiteChecker } = require('broken-link-checker');
const nodemailer = require('nodemailer');

const brokenLinks = [];

const checker = new SiteChecker({
  excludeExternalLinks: true,
  maxSocketsPerHost: 10
}, {
  link: (result) => {
    if (result.broken) {
      brokenLinks.push({
        source: result.base.resolved,
        broken_url: result.url.resolved,
        status: result.http.response?.statusCode
      });
    }
  },
  end: () => {
    if (brokenLinks.length > 0) {
      sendAlertEmail(brokenLinks);
    }
  }
});

checker.enqueue('https://example.com');

10.3 Monitoring Frequency Recommendations

Website Type Content Change Frequency Recommended Monitoring Tool Suggestion
Personal Blog Weekly Monthly crawl Screaming Frog (free)
Business Website Monthly Bi-weekly crawl Ahrefs / Semrush
E-commerce Store Daily Weekly crawl + real-time ContentKing + Screaming Frog
News/Media Site Multiple times daily Continuous monitoring ContentKing / Lumar
Enterprise/SaaS Varies Continuous + CI/CD integration Lumar + custom scripts

11. Complete Internal Linking Audit Process

A broken link fix is most effective when it is part of a comprehensive internal linking audit. This process not only finds and fixes broken links but also identifies opportunities to strengthen your internal link architecture. Here is the step-by-step process recommended by Ahrefs' internal linking guide and Moz's internal link strategy.

11.1 Step-by-Step Audit Process

1 Crawl your entire site. Use Screaming Frog, Ahrefs, or Semrush to crawl every page on your site. Export the full crawl data including URLs, status codes, and internal link sources.

2 Identify all broken internal links. Filter the crawl data for pages returning 4xx or 5xx status codes. Note both the broken destination URLs and every source page that links to them.

3 Map redirect chains. Identify any internal links that go through one or more 301 redirects before reaching the final page. These should be updated to point directly to the final destination.

4 Analyze link distribution. Check how many internal links point to each page. Orphan pages (zero internal links) and thin pages with too few links need attention.

5 Check anchor text relevance. Review the anchor text used in internal links. It should be descriptive and relevant to the destination page, helping both users and search engines understand what the linked page is about.

6 Review link depth. Ensure important pages are reachable within 3 clicks from the homepage. Pages buried deeper in your site hierarchy receive less crawl attention and link equity. According to Semrush's internal linking research, pages within 3 clicks of the homepage receive 82% more organic traffic than those that are 4+ clicks deep.

7 Implement fixes and monitor. Apply your fixes in priority order, then set up monitoring to track improvements and catch new issues early.

For the complete audit methodology, our detailed guide on How to Do an SEO Audit for Your Website covers every phase of the process.

11.2 Internal Linking Audit Checklist

Audit Item What to Check Acceptable Threshold Tool to Use
Broken internal links Links returning 4xx/5xx codes 0 (fix all) Screaming Frog, Ahrefs
Redirect chains Internal links going through 2+ redirects 0 (update all to direct) Screaming Frog
Orphan pages Pages with zero internal links pointing to them 0 (link or remove all) Sitebulb, Ahrefs
Click depth Number of clicks from homepage to any page 3 or fewer clicks Screaming Frog, Sitebulb
Link distribution Internal links per page Min 3, ideally 5-10 contextual links Ahrefs, Semrush
Anchor text Relevance and variety of anchor text Descriptive, varied, not over-optimized Screaming Frog
Nofollow on internal links Internal links with rel="nofollow" 0 (remove nofollow from internal links) Screaming Frog
Soft 404s Pages returning 200 but showing error content 0 (fix or set proper status codes) GSC, Spider Simulator

12. Prevention Strategies

The best broken link is one that never occurs. Implementing prevention strategies saves you from the reactive cycle of finding and fixing broken links after the damage has been done. Here are proven prevention methods recommended by Google's SEO Starter Guide and industry experts.

12.1 Establish a URL Change Protocol

Create a formal process that must be followed whenever a URL is changed or a page is deleted. This protocol should require that a 301 redirect is set up before the change goes live, all internal links pointing to the old URL are updated, and the change is logged in a central tracking document.

12.2 Use Relative URLs Wisely

Using relative URLs (like /blog/post-title) instead of absolute URLs (like https://example.com/blog/post-title) makes your links resilient to domain changes and HTTP/HTTPS migrations. However, they should still be managed carefully during site restructuring.

12.3 Implement Pre-Deployment Link Checking

Add broken link checking to your deployment pipeline so that broken links are caught before they reach production. As Search Engine Journal's technical SEO auditing guide emphasizes, catching issues in staging is far less costly than fixing them in production.

Pre-Deployment Link Check Example (npm script):

// package.json
{
  "scripts": {
    "check-links": "blc https://staging.example.com -ro --exclude external",
    "predeploy": "npm run build && npm run check-links",
    "deploy": "npm run predeploy && deploy-script"
  }
}

HTML Proofer (Ruby/Jekyll sites):

# Run after building the site
htmlproofer ./build \
  --check-html \
  --disable-external \
  --allow-hash-href \
  --log-level :debug

12.4 Content Management Best Practices

  • Never delete without redirecting. Make it a rule: no page gets deleted without a 301 redirect to a relevant alternative.
  • Use CMS features for link management. Modern CMS platforms like WordPress (with plugins), Drupal, and headless CMS solutions have built-in link tracking that can alert you to internal link issues.
  • Maintain a redirect log. Keep a spreadsheet or database of all redirects. This helps prevent redirect chains and makes it easy to audit your redirect configuration.
  • Train your content team. Ensure everyone who creates or edits content understands the importance of internal links and knows the URL change protocol.
  • Use canonical URLs consistently. As Google's canonicalization documentation explains, consistent use of canonical URLs prevents confusion about which version of a URL is the correct one.
  • Regularly audit and prune content. Proactively identifying content that should be removed or consolidated prevents the accumulation of dead-end pages.

12.5 Prevention Checklist by Role

Role Prevention Responsibility Frequency
Content Writers Verify all internal links before publishing; use relative URLs Every post/page
Editors Check links during content review; confirm no broken links in drafts Every review
SEO Specialists Run site-wide broken link audits; monitor GSC for new 404 errors Weekly/Monthly
Developers Implement pre-deployment link checks; manage redirects; update .htaccess Every deployment
Project Managers Enforce URL change protocols; ensure redirect maps for migrations Every project
Site Administrators Set up automated monitoring; maintain redirect logs; manage plugins Ongoing
Key Takeaway: The 5-Minute Prevention Rule For every page you delete or URL you change, spend 5 minutes setting up the redirect and updating the most critical internal links. Those 5 minutes of prevention can save hours of debugging and weeks of ranking recovery later. Use a tool like our Website SEO Score Checker to verify that your site's overall health remains strong after making changes.

12.6 Advanced Prevention: Automated Link Validation

For teams managing large websites, manual prevention is not scalable. Implement automated link validation that checks internal links during the content creation process itself.

WordPress: Auto-Validate Links on Save (Plugin Concept)

// This concept can be implemented as a custom WordPress plugin
add_action('save_post', 'validate_internal_links', 10, 2);

function validate_internal_links($post_id, $post) {
  $content = $post->post_content;
  $site_url = get_site_url();

  // Extract all internal links
  preg_match_all('/href=["\'](' . preg_quote($site_url, '/') . '[^"\']*)["\']/', $content, $matches);

  $broken_links = array();
  foreach ($matches[1] as $url) {
    $response = wp_remote_head($url);
    $code = wp_remote_retrieve_response_code($response);
    if ($code >= 400) {
      $broken_links[] = $url . ' (HTTP ' . $code . ')';
    }
  }

  if (!empty($broken_links)) {
    // Store warning as post meta
    update_post_meta($post_id, '_broken_links_warning', $broken_links);
    // Optionally send email notification
    wp_mail(get_option('admin_email'), 'Broken links detected',
      implode("\n", $broken_links));
  }
}

For more ways to keep your website technically sound, explore our comprehensive Technical SEO category for guides and tutorials.

Frequently Asked Questions

What is a broken internal link?

A broken internal link is a hyperlink on your website that points to another page on the same domain, but the destination page no longer exists, has been moved, or returns an HTTP error code such as 404 Not Found. These links create dead ends for both users and search engine crawlers. Common causes include deleting a page without redirecting, changing a URL slug, typos in the href attribute, and CMS migrations that alter URL structures. Broken internal links are different from broken external links because you have full control over both the source and destination, making them your responsibility to fix.

How do broken internal links affect SEO rankings?

Broken internal links negatively impact SEO in multiple ways. First, they waste crawl budget by sending search engine bots to non-existent pages. Second, they disrupt the flow of link equity (PageRank) throughout your site, which means the pages that were supposed to receive that authority lose ranking power. Third, they increase bounce rates because users who land on 404 pages often leave the site entirely. Fourth, a large number of broken links signals poor site maintenance to search engines, which can reduce trust scores. Data from various SEO studies shows that sites with more than 5% broken internal links experience an average ranking drop of 10-15 positions for affected pages, with recovery taking anywhere from 2 to 16 weeks depending on the severity.

What is the fastest way to find broken internal links?

The fastest free method is Google Search Console. Navigate to Indexing, then Pages, and look for URLs listed under "Not found (404)." This shows pages that Googlebot tried to crawl but could not reach. For a more thorough audit, use a dedicated crawling tool like Screaming Frog SEO Spider (free for up to 500 URLs), Ahrefs Site Audit, or Semrush Site Audit. These tools crawl your entire website and generate a complete list of broken internal links along with the source pages linking to them. For quick checks on individual pages, browser extensions like Check My Links (Chrome) can highlight broken links in real time. We also recommend using the Bright SEO Score Checker for a quick overall health assessment.

Should I use 301 redirects or update the links directly?

Updating links directly to point to the correct URL is always the preferred approach. Direct link updates eliminate redirect overhead, preserve 100% of link equity, and provide the best page load performance. Use 301 redirects as a supplementary safety net for situations where you cannot update every link source. This includes external backlinks from other websites, links in emails or PDFs you have distributed, links in user-generated content, and cached pages in search engine results. The ideal approach is a combination: update all internal links you control to point directly to the correct URL, and set up a 301 redirect from the old URL to catch any links you missed or cannot change.

How often should I check for broken internal links?

The right frequency depends on your website's size and how often content changes. For small blogs or business websites that update content weekly, a monthly audit is sufficient. Medium-sized sites with regular content publishing should check bi-weekly. E-commerce sites with frequently changing product inventories should check weekly. News and media sites with daily content updates benefit from continuous monitoring tools that detect broken links within hours. Regardless of your scheduled audit frequency, you should also check for broken links after any major site change: CMS updates, permalink changes, content migrations, plugin updates, or theme changes. Setting up Google Search Console alerts is a free way to get notified when new 404 errors appear between scheduled audits.

Can broken internal links cause Google to deindex my pages?

A single broken internal link will not cause deindexing, but a pattern of broken links can lead to crawl issues that indirectly result in pages being dropped from the index. Here is how it happens: when Googlebot encounters too many 404 errors during a crawl session, it may reduce your site's crawl rate. This means new and updated pages take longer to be discovered and indexed. Additionally, if a page's only internal links are broken (making it an orphan page), Googlebot may have difficulty reaching that page at all, leading to eventual deindexing. Pages that consistently return 404 errors will be removed from the Google index within a few weeks. To prevent this, maintain clean internal links and monitor your indexing status in Google Search Console.

How do I fix broken internal links in WordPress?

WordPress offers several approaches for fixing broken internal links. For detection, install the Broken Link Checker plugin, which continuously monitors your site and alerts you in the dashboard. For fixing individual links, edit the post or page in the WordPress editor and update the href to the correct URL. For setting up redirects, use the Redirection plugin or Yoast SEO Premium's redirect manager. For bulk URL updates after a permalink change, use the Better Search Replace plugin to find and replace old URL patterns across your entire database (always back up first and run a dry run). If you use WP-CLI, you can run wp search-replace 'old-url' 'new-url' for fast bulk updates. For ongoing prevention, plugins like Link Whisper can suggest internal links during content creation and flag potential issues before they go live.

What is crawl budget and how do broken links waste it?

Crawl budget is the number of pages a search engine bot will crawl on your site within a given timeframe. Google determines this based on two factors: crawl rate limit (how fast it can crawl without overloading your server) and crawl demand (how much it wants to crawl your site based on popularity and freshness). Every time Googlebot follows a broken internal link, it uses one of its allotted crawl requests on a page that returns a 404 error. That request is wasted because no useful content is found. For small sites, the impact is minor because Google can easily crawl all pages. But for sites with 10,000 or more pages, broken links can consume a meaningful portion of crawl budget, causing important pages to be crawled less frequently or not at all. This delay in crawling means updates to your content take longer to appear in search results.

How do I prioritize which broken internal links to fix first?

Use a priority matrix based on impact. Fix sitewide broken links first, meaning links in your header, footer, sidebar, or main navigation, because these affect every page on your site. Next, fix broken links on your highest-traffic pages, which you can identify through Google Analytics. Then address broken links that point to high-value destination pages, such as cornerstone content or money pages, because restoring link equity to these pages has the biggest ranking impact. Fourth, fix broken links on pages with the most external backlinks, since these pages pass the most authority through their internal links. Finally, clean up remaining broken links in bulk. This systematic approach ensures you get the maximum SEO benefit from the least amount of work. Tools like Ahrefs and Screaming Frog can export data that helps you sort broken links by these priority factors.

What causes broken internal links after a site migration?

Site migrations are one of the most common sources of mass broken internal links. The main causes include changes in URL structure when the new CMS uses a different permalink pattern, domain name changes (for example, from example.com to newexample.com), protocol changes like moving from HTTP to HTTPS, removal or modification of URL components like category bases or date-based slugs, hardcoded absolute URLs in content that reference the old domain or structure, database encoding differences between CMS platforms, and removal of pages during the migration cleanup. To prevent these issues, create a complete redirect map before migration that matches every old URL to its new equivalent, test the migration thoroughly in a staging environment, use database search and replace tools to update hardcoded URLs, and run a comprehensive broken link audit immediately after the migration goes live. Post-migration monitoring with Google Search Console is essential for catching issues that slip through.

Final Thoughts: Keep Your Internal Links Healthy

Broken internal links are one of the most common yet easily fixable technical SEO issues. They silently erode your site's crawlability, leak link equity, frustrate users, and drag down rankings. The good news is that with the right tools and processes, you can find and fix them efficiently and prevent most of them from occurring in the first place.

Here is your action plan for today:

  1. Run an immediate audit. Use Google Search Console and a crawl tool like Screaming Frog to get a complete picture of your broken internal links. Complement this with a quick check using our Website SEO Score Checker.
  2. Prioritize and fix. Address sitewide links, high-traffic page links, and high-value destination links first using direct link updates.
  3. Set up redirects. Create 301 redirects as a safety net for URLs that have external backlinks or cannot be fully updated.
  4. Establish prevention protocols. Create a URL change protocol, implement pre-deployment link checks, and train your team.
  5. Monitor continuously. Set up automated monitoring to catch new broken links within hours of them appearing.

Remember that a healthy internal link structure is not just about avoiding errors. It is a powerful SEO tool that, when used correctly, boosts your SEO score, improves user experience, and helps search engines understand and rank your content more effectively. Make internal link maintenance a regular part of your SEO workflow, and you will see the results in your rankings and traffic.

Ready to Start Fixing? Begin your broken link audit today with our free tools. Use the Website SEO Score Checker for a quick overall health assessment, the Spider Simulator to see your site as search engines see it, and explore our full library of Technical SEO guides for more optimization strategies.

Share on Social Media: