Alejandro Rioja.
Scripts

How To Find (And Fix) Broken Links

Alejandro Rioja
Alejandro Rioja
7 min read
Free newsletter

Every Wednesday. 28,400+ operators. Zero fluff.

Table of contents

Open Table of contents

A broken link is a hyperlink that fails to reach its intended destination. That can mean an internal page you deleted, an external page that moved, a file you renamed, or simply a typo in the URL you entered.

Common causes

Types of Error Codes

When a link is broken, the server responds with a status code that tells you what went wrong:

For SEO purposes, 404s and 410s are the most important to resolve. Google’s crawlers flag them, and any link equity flowing into those URLs is wasted.

Google crawls your site following your internal link graph. Every 404 a Googlebot hits is a dead end — crawl budget spent on nothing. More importantly, internal links pass PageRank between pages. A broken internal link drops that equity on the floor.

For external links, the damage is reputational: linking to dead pages signals a poorly maintained site to both users and search engines.

The practical impact: I’ve seen sites with high crawl error rates where key landing pages were underperforming simply because the internal linking structure was fragmenting equity into 404 pages from old migrations.

1. Google Search Console (free, start here)

GSC’s Pages report (under Indexing) shows pages Google tried to crawl and couldn’t. Look for the “Not found (404)” bucket. This is real data from Google’s actual crawl — the most authoritative source.

For internal link errors specifically, check Settings > Crawl Stats to see total crawl requests and error rates over time.

2. Screaming Frog SEO Spider (best for full site crawl)

Screaming Frog crawls your site locally and surfaces every broken link, including internal and external. The free version handles up to 500 URLs; the paid plan covers unlimited.

Steps:

  1. Enter your domain and run a crawl.
  2. Filter by Response Codes > Client Error (4xx).
  3. Use the Inlinks tab to see exactly which pages link to each broken URL.
  4. Export the full list and triage by page importance.

Screaming Frog also integrates with GSC and GA4 so you can layer in traffic data and prioritize high-traffic broken pages first.

3. Ahrefs or Semrush Site Audit

Both platforms run ongoing crawls and flag broken internal and external links in their Site Audit tools. Ahrefs’ Broken links report and Semrush’s Errors section both surface 4xx and 5xx URLs along with which pages link to them.

The advantage here is automation — you can schedule recurring audits and get alerts when new broken links appear, without manually triggering a crawl.

4. Google Analytics 4 (supplementary)

GA4 doesn’t natively show 404 pages, but you can surface them by setting up a custom event or checking which pages have near-zero engagement time and high bounce rates. A page titled “404” in your page path report is a reliable signal.

Alternatively, configure your 404 template to send an event to GA4 with the broken URL in the event parameters — then you get real-time broken link detection from actual user traffic.

Once you have the list, fixing is straightforward. The right fix depends on why the link is broken.

1. Set up a 301 redirect

If the destination page still exists but at a different URL, implement a 301 (permanent) redirect from the old URL to the new one. This preserves link equity and routes users correctly. On most CMS platforms this is a simple redirect rule; on static sites, handle it in your _redirects file or server config.

Use 301 for permanent moves. Use 302 only for genuinely temporary redirects (rare in practice).

If the destination page is fine but the link URL is just wrong — a typo, a path that was never right — edit the source page and fix the URL directly. This is the cleanest fix for internal links within your own CMS.

If the destination content is gone permanently and there’s no equivalent page to redirect to, just remove the link. A missing link is better than a broken one.

4. Restore or recreate the page

If the 404 is for a page that should still exist (e.g., accidentally deleted), restore it from backup or recreate it. Check GSC to see if Google was indexing it and if it had backlinks worth preserving.

For links pointing to third-party pages:

Making It Systematic

One-time audits aren’t enough on a growing site. Here’s the lightweight system I use:

The goal is to catch new broken links within days, not months.

Not always directly, but fixing them removes crawl waste and restores link equity flow — both of which contribute to better indexing and ranking for pages that were losing equity to dead URLs. The impact is most visible on large sites with many internal links.

Use 301 for anything permanent — which is almost every case when fixing a broken link. A 302 signals “temporary” and may not pass full link equity. Only use 302 if the page is genuinely going to return at the original URL.

For small sites (under 500 pages), monthly is sufficient. For larger or frequently updated sites, weekly GSC checks plus monthly full crawls. After any CMS migration, audit immediately.

Is Screaming Frog still the best tool for this in 2026?

It remains one of the most thorough crawlers for local site audits. Ahrefs and Semrush Site Audit are competitive alternatives with the advantage of automated scheduling. GSC is always the right free starting point since it shows what Google is actually finding.

Related reading: Top 3 Backlink Building Strategies · How to Use Link Building for Lead Generation · How to Get Sitelinks on Google Search Results


The shorter version

If you’re reading this because the workflow it describes is eating your week, that’s the kind of loop I build AI agents for. Two build slots open at a time.

Updated for May 2026

A short note from May 2026: the workflow this post describes was checked against the current state of the underlying tools and platforms. Where specific tools, UIs, or features have evolved, the structural advice still holds — the implementation will look slightly different in 2026. If you hit a step that doesn’t match what you see on screen, that’s likely a UI refresh, not a fundamental change in approach. Drop a note via the contact form and I’ll patch it explicitly.

Keep reading

Get the AI playbook in your inbox

Every Wednesday. 28,400+ operators. Zero fluff.

↵ to see all results esc esc to close