Skip to content

How to Find and Fix Broken Internal Links

Last Updated: September 22, 2026

Why Broken Internal Links Damage Your SEO

Broken internal links (links pointing to pages that return 404 or 410 status codes) create dead ends for both users and search engine crawlers. When Googlebot follows a link to a 404 page, it wastes crawl budget on a request that yields no indexable content. Multiply this across hundreds or thousands of broken links, and a significant portion of your crawl budget is spent discovering missing pages instead of indexing your valuable content.

From a user perspective, broken links create frustration and erode trust. A visitor who clicks a link expecting valuable content and lands on a 404 page has a negative experience that reduces the likelihood of further engagement. Studies show that 88% of users are less likely to return to a site after a bad experience, and broken links are among the most common bad experiences.

Broken internal links also waste link equity. Every internal link distributes a portion of your page's authority to the destination. When that destination is a 404, the authority dissipates instead of flowing to a page that could benefit from it. Fixing broken links recovers this lost equity and strengthens your site's overall link architecture.

How to Find Broken Internal Links

Screaming Frog SEO Spider is the most thorough method. Crawl your entire site and filter by response code 404 (Not Found) or 410 (Gone). The report shows the source page (where the link exists), the destination URL (the broken target), and the anchor text. Export the report to CSV for bulk processing. The free version handles up to 500 URLs; the paid version has no limit.

Google Search Console identifies some broken links through the Pages report. Navigation to Indexing > Pages shows URLs that returned 404 or 410 status codes during crawling. However, GSC only reports URLs that Googlebot has attempted to crawl, not every broken link on your site. Use GSC as a supplement to Screaming Frog, not a replacement.

Ahrefs Site Audit crawls your site and reports internal broken links with additional context like the number of internal links pointing to the broken URL and the PageDepth of the source page. This helps prioritize fixes based on the authority of the source page and the potential equity loss.

For a quick manual check, use this terminal command to test a list of URLs:

# Test a list of URLs for 404 status codes
while read url; do
  status=$(curl -s -o /dev/null -w "%{http_code}" "$url")
  echo "$status $url"
done < urls.txt | grep "^404"

301 Redirects vs 404 Pages: When to Use Each

Use a 301 redirect when the content has moved to a new URL. A 301 tells search engines the page has permanently moved and passes approximately 90-99% of link equity to the new destination. Use 301 redirects when: you changed the URL structure, you merged two pages into one, you rebranded and changed your domain, or a page was deleted but a similar page exists.

Use a 404 or 410 status code when the content has been intentionally removed with no replacement. A 404 tells search engines the page is temporarily unavailable (they may retry crawling later). A 410 tells search engines the page is permanently gone (they remove it from the index faster). Use 410 for content that was deliberately deleted, like outdated blog posts, discontinued products, or expired promotions.

Do not redirect to the homepage as a catch-all solution. Redirecting every broken URL to your homepage confuses search engines about what the destination page is about and creates a poor user experience. A user expecting to find "best running shoes 2024" and landing on your homepage will leave immediately, sending negative engagement signals.

Redirect to the most relevant existing page. If you delete a blog post about "Nike Pegasus review," redirect it to your "best running shoes" category page or a review of the current Pegasus model. The redirect destination should be the closest match to the original content's intent.

Bulk Fixing Broken Internal Links

Export your broken links report from Screaming Frog and categorize them by fix type: 301 redirect to new URL, 301 redirect to similar content, or delete the link entirely. Process them in bulk using a redirect map that maps old URLs to new destinations.

For WordPress sites, use the Redirection plugin to manage 301 redirects without editing .htaccess files. Install the plugin, import your redirect map as a CSV file, and the plugin handles the server-level redirects. The plugin also tracks 404 errors so you can monitor for new broken links.

For large sites with hundreds of redirects, configure redirects at the server level for performance. Apache uses mod_rewrite in .htaccess; Nginx uses the rewrite directive in server blocks. Server-level redirects process in microseconds, while plugin-based redirects add database query overhead to each request.

# Nginx redirect configuration
rewrite ^/old-page-url$ /new-page-url permanent;

# Apache .htaccess redirect
Redirect 301 /old-page-url /new-page-url

Monitoring for Broken Links Over Time

Broken links accumulate over time as pages are deleted, URLs are changed, and external resources move. Set up automated monitoring to catch new broken links before they damage your SEO. Google Search Console sends email alerts when it detects new 404 errors, but only for URLs it discovers during crawling.

Screaming Frog can be scheduled to run weekly crawls that compare against previous results, highlighting newly broken links. Ahrefs Site Audit sends automated reports when new issues are detected. For a DIY approach, write a script that crawls your site weekly and emails you any new 404 responses:

# Simple broken link monitor script
#!/bin/bash
SITEMAP="https://example.com/sitemap.xml"
REPORT="/tmp/broken-links-$(date +%Y%m%d).txt"

curl -s "$SITEMAP" | grep -oP '(?<=<loc>)[^<]+' | while read url; do
  status=$(curl -s -o /dev/null -w "%{http_code}" "$url")
  if [ "$status" = "404" ] || [ "$status" = "410" ]; then
    echo "$status $url" >> "$REPORT"
  fi
done

if [ -s "$REPORT" ]; then
  mail -s "Broken Links Found" [email protected] < "$REPORT"
fi

Preventing Broken Links Before They Happen

The best broken link strategy is prevention. Before deleting or moving any page, audit all internal links pointing to it using Screaming Frog's "Inlinks" report. Search your codebase for references to the URL in templates, navigation menus, and sidebar widgets. Update every reference before implementing the redirect, so the redirect serves only as a safety net for external links and cached bookmarks.

Implement URL change protocols in your CMS. Before changing any URL, create a redirect from the old URL to the new one and update all internal references. This two-step process ensures no internal link breaks even during URL restructuring. Document your URL structure conventions so content creators follow consistent patterns that are less likely to change.

Prioritizing Fixes by Impact

Not all broken links deserve equal attention. A broken link on your homepage affects every visitor. A broken link deep in an old blog post affects almost no one. Prioritize fixes based on the PageRank of the source page (pages with more internal links pointing to them distribute more equity), the number of internal links pointing to the broken URL (more links mean more wasted equity), and the traffic the source page receives (high-traffic pages with broken links lose the most potential conversions).

A practical priority matrix: fix broken links on your top 20 most-linked pages first, then address broken links on pages that receive organic traffic, then fix remaining broken links across the site. This approach recovers the most equity and provides the best user experience improvement per hour invested.

Common Broken Link Scenarios

The most frequent causes of broken internal links include CMS migrations where URL structures change, deleted blog posts or product pages without redirects, renamed categories or tags that change URL slugs, internal search result pages with session-dependent URLs, and anchor links pointing to removed heading IDs. Understanding these patterns helps you prevent future broken links by implementing proper change management procedures.

For e-commerce sites, product discontinuation is the primary source of broken links. When a product is removed from the catalog, every internal link to that product page breaks. Maintain a redirect map that automatically redirects discontinued product URLs to the closest alternative product or the category page. Update your CMS to create redirects before marking products as discontinued, not after.

Auditing Link Equity Distribution

Beyond finding broken links, analyze how link equity flows through your internal link structure. Pages with many inbound internal links accumulate more authority, while orphan pages with zero internal links receive none. Use Screaming Frog's "Link Score" metric or Ahrefs' "Internal LinkRank" to visualize equity distribution across your site.

A balanced internal link structure distributes authority from high-authority pages to pages that need it most. Your homepage typically has the most authority. Ensure it links to your most important category and product pages. Category pages should link to their subcategories and top products. Blog posts should link to related products and categories using descriptive anchor text.

Automated Redirect Generation

For sites with frequent URL changes, automate redirect creation. In WordPress, hook into the save_post action to detect URL changes and create redirects programmatically. In Laravel, use route model binding with slug history tracking to redirect old slugs to new ones. For static sites, generate redirect rules at build time by comparing current URLs against a stored URL manifest.

Store a URL manifest (a JSON file listing every published URL) in version control. Each build compares the current URLs against the manifest and generates redirect rules for any URLs that were removed or changed. This approach ensures no URL breaks during deployments, even when content is reorganized or renamed.

Impact on Core Web Vitals

Broken links negatively affect Core Web Vitals metrics, particularly Interaction to Next Paint (INP). When a user clicks a broken link and receives a 404 page, the browser still renders the page, but the user interaction is wasted. If the 404 page lacks proper navigation or search functionality, users may click multiple times trying to find working content, increasing INP scores across sessions.

A 404 page without a proper back-to-content link forces users to use the browser back button, which may trigger additional network requests and increase the total blocking time. Design your 404 page with clear navigation options, a search bar, and links to your most important content to minimize the negative impact on user experience metrics.

Recovering Lost Traffic from Broken Links

When you discover broken links that have been live for months, you may find that the broken URLs have accumulated external backlinks. These external links point to your 404 pages, passing zero equity. Before setting up redirects, export your backlink data from Ahrefs or Majestic and cross-reference the broken URLs with your backlink report. Any broken URL with external links should be redirected to the most relevant existing page rather than deleted.

For broken URLs with high-quality external backlinks from authoritative domains, consider recreating the content specifically to capture that link equity. If a deleted blog post about "best running shoes 2024" has 15 referring domains with a combined Domain Rating of 200+, recreating a 2026 version of that content and redirecting the old URL to it recovers all that link equity in addition to the new content's ranking potential.

Track your broken link recovery efforts in a spreadsheet with columns for: old URL, number of referring domains, Domain Rating of referring domains, redirect destination, and recovery status. This data helps you measure the ROI of broken link recovery and prioritize high-value opportunities over low-value fixes.

Broken Links in JavaScript-Rendered Pages

Modern web applications that render content with JavaScript create unique broken link challenges. A React, Vue, or Angular application may show a working page to users but return an empty HTML shell to crawlers if the routing is not properly configured. Links that work in the browser may lead to 404 errors when Googlebot attempts to crawl them directly.

Test your JavaScript-rendered pages by disabling JavaScript in your browser and clicking every internal link. If any link leads to a blank page or loading spinner instead of content, search engines cannot access that content. Server-side rendering (SSR) or static site generation (SSG) ensures that every URL returns complete HTML to crawlers, making broken link detection straightforward.

Use Google Search Console's URL Inspection tool to verify how Googlebot sees JavaScript-rendered pages. If the rendered HTML is missing content that appears in the browser, the page has rendering issues that may mask broken links during normal crawling.

Creating an Effective 404 Page

Your 404 page is the last line of defense when broken links are discovered by users. A well-designed 404 page reduces bounce rate by guiding visitors to working content instead of letting them leave your site entirely. Include a search bar prominently at the top, links to your homepage, main category pages, and most popular content, and a brief explanation that the page they were looking for no longer exists.

Track 404 errors in Google Search Console and in your server access logs. A sudden spike in 404 requests indicates a recent change that broke links, such as a site migration, URL restructuring, or deleted content. Cross-reference the 404 URLs against your recent changes to identify the root cause and apply fixes before the broken links compound and waste more crawl budget.

For large sites, implement automated 404 monitoring that alerts your team within hours of a new broken link appearing. Set up a webhook or email notification triggered by 404 response codes in your server logs. Catching broken links early, ideally within the first 24 hours, prevents search engines from crawling and indexing the broken URLs and keeps your crawl budget focused on productive pages.

Link Equity Recovery Through Redirects

When a page accumulates backlinks from multiple domains and you delete that page without a redirect, all of that accumulated authority vanishes. A 301 redirect preserves approximately 90 to 99 percent of the link equity, meaning the destination page receives nearly the same authority boost as the original page had. This makes redirects one of the most efficient link building tools available to you since you are essentially transferring existing authority rather than earning new links from scratch.

Prioritize redirects for pages that have the most referring domains and the highest combined domain rating from those referring domains. Export your backlink data from Ahrefs, sort by referring domain count, and match each broken URL against the redirect map. Pages with five or more referring domains from DR 40 plus sites should be your first priority since those represent the highest equity recovery per redirect implemented.

Documenting Your Redirect Strategy

Maintain a centralized redirect spreadsheet that every team member can access. This spreadsheet should include every redirect on your site, the date it was created, the reason for the redirect, the original URL, the destination URL, and the HTTP status code used. Having this document prevents duplicate redirects, makes troubleshooting easier during site migrations, and provides historical context for why specific redirects exist.

Review your redirect spreadsheet quarterly to identify outdated redirects that can be cleaned up. If a redirect has been in place for over two years and the original URL has no external backlinks, consider removing it to reduce server processing overhead. Each redirect adds a small amount of latency to the request, and thousands of unnecessary redirects can slow down your server response time for every request.

Run broken link audits monthly for active sites and weekly for large e-commerce sites with frequent product additions and removals. Our broken link checker automates this process and provides a prioritized report of every broken internal link on your site, categorized by the recommended fix action.