How to Find Broken Links on Your Website (Complete Guide)

17 min read

Most broken links on your website are invisible to you.

They sit quietly on pages you haven’t visited in months. They appear the day after you restructure your URL slugs. They emerge when a third-party resource goes offline. And by the time a user hits one - or worse, by the time Google’s crawler does - the damage is already done.

Our analysis of 95 enterprise SaaS companies found 432 broken links across brands that invest heavily in marketing and content. The average site owner discovers broken links reactively: a user complains, a client notices, or traffic suddenly drops. By that point, the link may have been broken for weeks.

This guide gives you a systematic approach to finding every broken link on your website - before anyone else does.


The SEO case against broken links is well known: they waste crawl budget, interrupt PageRank flow, and signal poor site quality. But the scale of the problem is underappreciated.

The crawl budget problem is real, but it compounds. Google assigns each site a crawl rate limit based on server capacity and historical crawl value. When your crawler regularly hits 404 pages, it does two things: it wastes allocated crawl on dead pages instead of your new content, and it gradually reduces how often Googlebot returns - because a site with many dead ends appears lower quality. For a growing content site publishing weekly, this is the difference between new posts being indexed in 48 hours or 2 weeks.

Link equity doesn’t disappear - it just gets trapped. Internal links are how PageRank flows from your high-authority pages (homepage, pillar posts, well-linked articles) down to newer content that needs a ranking boost. A broken internal link is a valve stuck shut. The authority exists at the source, but it never reaches the destination.

The user experience signal is harsher than most analytics show. When a user hits a 404, most analytics platforms record it as a bounce from the 404 page itself - not from the page that sent them there. So your broken-link bounce rate is systematically under-reported. In reality, the frustration began one click earlier.


Most guides focus exclusively on 404 errors. A complete broken link audit covers a broader range:

Error TypeWhat It MeansSEO Impact
404 Not FoundThe page no longer exists at that URLHigh - direct crawl waste, lost equity
410 GoneThe page was intentionally removedMedium - tells Google to deindex faster, but links should still be removed
500 Server ErrorThe server failed to respondHigh - Google may retry, but repeatedly failing pages get crawled less
Redirect chain (3+ hops)A -> B -> C -> D before reaching destinationMedium - PageRank dilutes ~15% per hop after the first
Redirect loopA -> B -> A, or A -> AHigh - pages become unreachable
Soft 404The server returns 200 OK but shows “page not found” contentHigh - particularly dangerous because crawlers may not catch it
DNS failureThe external domain no longer resolvesHigh for external links, signals link rot
TimeoutThe server took too long to respondMedium - Googlebot has a timeout threshold and will skip slow pages
SSL/TLS errorsCertificate mismatch or expiry on linked pageMedium - browsers warn users, crawlers may skip

If your “broken link check” only surfaces 404s, you’re missing the full picture.


Method 1: Manual Spot-Check of High-Risk Pages

Before you run any automated tool, spend 10 minutes manually clicking through the pages where a broken link causes the most harm. This is not a substitute for a full audit - it’s a quick first pass to catch the most damaging issues immediately.

High-risk pages to check manually:

  1. Homepage - Every link in your hero, navigation, and primary CTAs
  2. Main navigation and footer - A broken link here affects every page on your site
  3. Pricing page - Dead links to feature comparisons or help docs cost you conversions
  4. Your top 5 pages by organic traffic (find these in Google Analytics > Pages report)
  5. Any page you’ve recently edited - URL restructures and content updates are the #1 cause of new broken links

How to do it:

  • Open the page in Chrome
  • Right-click -> Inspect -> Network tab -> filter by “4xx” status
  • Click through every link on the page and watch for red entries

This takes ~15 minutes and catches the highest-impact problems without any tooling.

Limitations: This only checks one page at a time. For any site with more than 20 pages, you need one of the methods below.


If your site has been live for more than a few weeks, Google Search Console already has a partial broken link map for you. This is the fastest way to find 404s that Googlebot has discovered - which means these are the ones most directly hurting your crawl budget and indexing.

Steps:

  1. Open Google Search Console and select your property
  2. In the left sidebar, go to Indexing -> Pages
  3. Click the “Not indexed” tab
  4. Filter by reason: “404 (Not found)” and “Soft 404”

This gives you every URL Google tried to crawl and got an error on. These aren’t necessarily pages you linked to - they might be pages Googlebot found through old sitemaps, external backlinks, or previously cached links.

To find which pages are linking to these 404s:

  1. Click on any 404 URL in the list
  2. Scroll to “Referring pages” - this shows which pages on your site are linking to that broken URL

What GSC doesn’t show you: Google Search Console only shows URLs that Googlebot has actually tried to crawl. It won’t show you broken links on pages that haven’t been crawled recently, and it won’t show you external links that are broken. For a complete picture, you need Method 4.

Pro tip: Export the 404 list as a CSV and cross-reference it with your current sitemap. Any URL in both lists is a serious issue - your sitemap is actively directing Google to a dead page.


Method 3: Browser Extension for Page-Level Checks

For content writers, editors, or anyone who needs to quickly verify links on a specific page without running a full crawl, a browser extension is the right tool.

Recommended extensions:

  • Check My Links (Chrome) - highlights valid links in green and broken links in red directly on the page. Fast, visual, zero setup.
  • LinkChecker (Firefox) - similar functionality with status codes shown on hover
  • Broken Link Checker (various) - color-codes links by status

When to use this:

  • Before publishing new content - scan the draft for broken outbound links
  • When auditing a specific landing page
  • When doing spot-checks after a site migration

Limitations: Like the manual method, extensions check one page at a time. They also can’t see links injected by JavaScript after page load in all cases, and some extensions have rate limits that cause false positives on slow servers.


Method 4: Full-Site Automated Crawl

This is the only method that gives you a complete broken link inventory across your entire website. Everything above is a spot-check. A full-site crawl is a systematic audit.

An automated crawler works by:

  1. Starting from your homepage (or sitemap)
  2. Following every link it finds on every page
  3. Recording the HTTP response code for each destination URL
  4. Logging the source page, broken URL, anchor text, and error type for each failure

The output is a structured broken link report you can sort, filter, and action.

What to look for in the report:

  • Source page - the page that contains the broken link
  • Broken URL - the destination that returned an error
  • Error type - 404, 500, redirect loop, timeout, etc.
  • Anchor text - helps you identify the link quickly in the editor
  • Occurrence count - how many pages link to this broken URL (prioritize high counts)

Free option: Use redCacti’s free sitemap audit tool to run a no-login broken link scan on any public website. Enter your domain, and it will crawl your sitemap, check every URL, and return a broken link summary in minutes.

For ongoing monitoring with a registered account, redCacti crawls your site on a schedule and alerts you when new broken links appear - so you find them before your users or Google does.


Method 5: Programmatic Checks for Developers

If you manage a large site, have a CI/CD pipeline, or want to prevent broken links from being deployed in the first place, you can run link checks programmatically.

Using linkinator (Node.js):

npx linkinator https://yoursite.com --recurse --skip "^https://external-domain"

This crawls your site recursively and outputs a list of broken links to the terminal. Add it to your deployment pipeline to catch broken links before they go live.

Using htmlproofer (Ruby, popular with Jekyll/static sites):

bundle exec htmlproofer ./_site --check-external-urls

GitHub Actions integration:

name: Check Links
on:
  push:
    branches: [main]
jobs:
  linkcheck:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Link Checker
        uses: lycheeverse/lychee-action@v1
        with:
          args: --verbose --no-progress './**/*.md' './**/*.html'

When this approach makes sense:

  • Static site generators (Astro, Next.js, Hugo, Jekyll) where the full HTML is available at build time
  • Teams that want to block deploys if broken links are introduced
  • Sites with frequent programmatic content changes

Limitation: This checks the build output at deploy time, but it won’t catch links that break after deploy - when external pages go offline, or when you delete a page and forget to update all references to it. For post-deploy monitoring, you still need ongoing automated crawls.


How to Prioritize What You Find

After running a full audit, you’ll likely have a list. Not all broken links are equally urgent. Use this triage order:

Fix immediately (today):

  • Broken links in your global navigation (header and footer) - these affect every page
  • Broken links on your homepage and pricing page
  • Any page that receives paid traffic (ads landing on 404s burn budget instantly)
  • Sitemap entries that return 404 - remove them from the sitemap immediately

Fix this week:

  • Broken links on your top 20 pages by organic traffic (pull from Google Analytics or Search Console)
  • Any page with inbound backlinks returning 404 - check Ahrefs, Semrush, or Google Search Console’s Links report for these
  • 404s that used to be indexed (visible in GSC’s Pages report)

Fix this sprint/cycle:

  • Broken internal links on lower-traffic editorial content
  • Redirect chains (3+ hops) - these rarely cause acute damage but compound over time

Lowest priority:

  • Broken external links on low-traffic pages - still worth fixing, but they don’t drain your own equity
  • Timeout errors on external sites - wait and recheck before removing; the target site may come back online

Setting Up Ongoing Monitoring

Finding broken links once is a snapshot. Broken links are a continuous problem - every time you delete a page, change a URL, or an external resource goes offline, new ones appear.

The case for weekly monitoring:

  • Content sites publishing 2-4 posts per week introduce new internal link opportunities - and new broken link risks - constantly
  • External links break on average within 2 years, but the breakage isn’t uniform - it happens in bursts when sites migrate or go offline
  • Google’s crawl rate means a broken link discovered today may have been broken for weeks without your knowing

What a monitoring workflow looks like:

  1. Automated weekly crawl runs in the background
  2. Broken link alert fires when new broken links appear above a threshold
  3. Weekly triage - 15-minute review of the report, assign fixes to content editors
  4. Monthly deep audit - review redirect chains, soft 404s, and external link health

With redCacti, this is the default mode. Add your site, set your crawl frequency, and broken link alerts come to you - rather than you having to go looking.


Quick-Reference Checklist

Use this checklist every time you do a broken link audit:

Before you start:

  • Pull top 20 pages by organic traffic from Google Analytics
  • Export your sitemap.xml to cross-reference
  • Check Google Search Console Pages -> Not Indexed -> 404 errors

During the audit:

  • Run full-site crawl (automated tool or redCacti)
  • Manually check homepage, nav, footer, and pricing page
  • Filter report by: 404s first, then redirect chains, then timeouts

After the audit:

  • Fix all navigation and homepage broken links immediately
  • Update or remove sitemap entries pointing to 404s
  • Set up 301 redirects for any deleted pages that had inbound links
  • Assign remaining fixes to content team with a deadline
  • Schedule next automated crawl

Prevent future broken links:

  • Run a link check before publishing any new content
  • Add broken link audit to your pre-launch checklist for redesigns
  • Set up automated weekly monitoring

Frequently Asked Questions


The Bottom Line

Broken links are not a one-time problem you fix and forget. They accumulate continuously - every URL change, every deleted page, every external site that goes offline adds to the count. The question isn’t whether you have broken links; it’s whether you find them before your users and Google do.

The methods in this guide give you a complete toolkit:

  • Manual + GSC for quick first-pass checks when you don’t have tooling yet
  • Browser extension for pre-publish checks on individual pages
  • Automated crawl for a complete site-wide inventory
  • CI/CD integration for catching broken links before they deploy
  • Ongoing monitoring so the problem never silently compounds again

Run a free broken link audit on your site ->

No account needed. Enter your domain and get a full broken link report in minutes. Then set up weekly monitoring so you never have to wonder again.


Related reading: How to Fix Broken Links and Improve Your SEO - once you’ve found your broken links, here’s the exact process for fixing them.

Newsletter

Weekly SEO teardowns

Internal linking, broken links & orphan pages — straight to your inbox, every week.

Subscribe free

redCacti Team

The team behind redCacti - helping websites improve their SEO through better internal linking.

Related Posts