A broken link card labeled 404 turning into a fixed link card labeled 200 OK, illustrating the find, diagnose, fix, and verify workflow

How to Find and Fix Broken Links

By ProURLMonitor Team

A broken link is any link that fails to load the page it points to — a 404 for a page that's been deleted, a typo'd URL that never worked, an external source that shut down. They accumulate quietly: a page gets renamed, a vendor's site restructures, someone fat-fingers a URL while drafting a post. Individually, none of it seems urgent. Left unchecked for a year, it adds up to a site full of dead ends.

This guide walks through finding broken links — on one page or across a larger site — and then actually fixing them, including the parts that are easy to get wrong: treating every non-200 response as "broken," redirecting to the wrong place, or never verifying the fix actually stuck.

What Counts as a Broken Link

A broken link is a hyperlink that doesn't resolve to a working page. The most common cause is a straightforward 404 (the target no longer exists), but "broken" also covers a URL that never resolves at all — a DNS failure, a connection timeout, a typo that points nowhere. It does not automatically include every non-200 response; a page that requires login (401) or blocks automated requests (403) isn't necessarily gone, just protected or picky about who's asking. More on that distinction below, since it matters for how you triage results. For a deeper look at why broken links happen and what they actually mean for SEO, see our companion guide on broken links and SEO.

Common Causes, Briefly

Most broken links trace back to a handful of repeat offenders:

  • Pages deleted or moved without a redirect left behind
  • Typos in the URL when a link was first written
  • Site restructuring that changes URL paths without updating internal links
  • External sites that redesign, rebrand, or shut down entirely
  • Domain changes where an old domain expires or stops resolving

Knowing the cause helps you pick the right fix — a typo just needs correcting, but a deleted page needs a decision about where (if anywhere) to redirect it.

How to Find Broken Links

Checking a Single Page

If you only need to check one page — a specific article, a landing page, your homepage — the quickest approach is a tool that fetches the page's actual HTML, extracts every link in it, and checks each one's live HTTP status. ProURLMonitor's Broken Links Checker does exactly this in its single-page mode: paste in a URL, and it checks up to 120 links found on that page, following redirects automatically so you see each link's final destination rather than an intermediate hop.

One honest limitation worth knowing: this checks the page's raw server-rendered HTML. A link that only gets added to the page by client-side JavaScript after it loads won't be picked up. For most content pages this isn't an issue, but it's worth keeping in mind for heavily JavaScript-driven layouts.

Checking a Larger Site

For more than one page, sitemap mode is the practical option: it discovers URLs from your sitemap.xml — including nested sitemap indexes, which is how many sites split a large URL list across multiple files — and checks up to 500 of them per scan. This covers a genuinely large site in one pass, but it's worth being precise about what it is and isn't: it relies on your sitemap actually listing your pages. It isn't an unrestricted crawler that discovers pages by following every internal link the way a desktop crawler does, so anything missing from your sitemap simply won't be checked this way. If your sitemap is incomplete, the gap in coverage will match the gap in your sitemap.

If you'd rather check a manually curated list of URLs — pages pulled from an export, a spreadsheet, or a specific set you already know about — the HTTP Status Checker takes a pasted list (or a sitemap crawl) and reports each one's status individually.

The Manual Fallback

For a single link you're unsure about, your browser's developer tools work fine: open the Network tab, reload the page, and look at the status code returned for the request. It doesn't scale past a handful of links, but it's a legitimate quick check when you just need to confirm one specific URL.

Reading the Results Correctly

This is the part that's easy to get wrong. Not every non-200 response means a link is dead:

  • 404 or 410 — genuinely broken. The page is gone (404) or deliberately, permanently removed (410).
  • 401 or 403 — often means the resource is intentionally protected, not gone. A link to a login-gated page or a resource that blocks automated requests will return one of these even though a real visitor might load it fine.
  • 429 — the target is temporarily rate-limiting requests. Retrying later may well succeed.
  • 5xx — a server-side error, which can be transient rather than permanent.
  • Timeouts and connection failures — could mean the site is genuinely down, or just slow to respond at that moment.

Lumping all of these into "broken" produces false positives that waste your time chasing links that aren't actually dead. A checker that separates confirmed failures from results that merely need a second look — rather than flagging every non-200 as equally urgent — saves you from that.

How Redirects Fit In

A link that 301s or 302s to a working page isn't broken — it's just taking a detour. A broken-link check should follow that redirect automatically and report the page it actually lands on, not the intermediate hop. That's useful for confirming a link still works, but it's a different question from how it redirects: if you need to see the full hop-by-hop chain (to spot a redirect loop, an unnecessary multi-hop chain, or an HTTP-to-HTTPS transition), that level of detail belongs to a dedicated Redirect Checker rather than a broken-link scan.

Fixing Broken Internal Links

For links you control, you generally have three options:

  1. Update the link directly if you know the correct current URL — the simplest fix when the destination just moved somewhere else on your own site.
  2. Set up a redirect from the old URL to a genuinely relevant replacement, if the page was intentionally removed or restructured and a suitable landing spot exists.
  3. Remove the link (or replace it with plain text) if nothing appropriate exists to point to anymore.

Prioritize by where the link lives: broken links in main navigation, high-traffic pages, or content that attracts backlinks matter more than one buried in an old comment thread. Once you've found the source of a broken internal link, it's also worth a quick look at your surrounding internal-link structure — the Internal Linking Assistant can help spot related pages worth linking to when you're already in there fixing things.

Fixing Broken External Links

You don't control the destination, so the options differ:

  • Look for an updated version of the resource — many sites restructure without removing content outright, just moving it to a new path.
  • Check the Wayback Machine if the content is genuinely gone, to see whether an archived copy still serves the purpose (crediting appropriately if you link to an archive).
  • Replace it with a current, relevant alternative if a suitable one exists elsewhere.
  • Remove the link entirely, or convert it to plain text, if no replacement is worth linking to.

There's no way to prevent external links from breaking eventually — that's outside your control by definition — which is exactly why periodic rechecks matter more for external links than internal ones.

Handling Deleted Pages on Your Own Site

If you've permanently removed content with nothing to replace it, a 410 (Gone) is more precise than a plain 404 — it tells search engines the removal was intentional rather than accidental, which can help the URL drop out of the index a bit faster. If there's any chance the content could come back, or you're unsure, a standard 404 is the safer default.

Verifying Your Fix

After redirecting, updating, or removing a link, re-check it. A redirect that looks right in your CMS's settings can still resolve incorrectly in practice — pointing at the wrong page, creating an unexpected chain, or occasionally looping. Running the same URL back through a checker after the fix confirms it actually resolves the way you intended, rather than assuming it does.

How Often to Recheck

Once a month is a sensible baseline for a site that changes regularly. Bump that up to weekly for high-churn sites — frequent product changes, syndicated or aggregated content, anything with a lot of outbound links to third-party sources. And always run an immediate check right after a migration, a redesign, or any bulk deletion, since those are exactly the events that break dozens of links at once instead of one at a time.

Frequently Asked Questions

What's the fastest way to find broken links on a page?

Paste the page's URL into a broken link checker that fetches the page's HTML, extracts every link, and checks each one's HTTP status automatically. ProURLMonitor's Broken Links Checker does this in single-page mode, checking up to 120 links per page in one pass — far faster than clicking through links by hand.

Can I check my whole website for broken links, not just one page?

You can check a large batch of pages at once using sitemap mode: it discovers URLs listed in your sitemap.xml (including nested sitemap indexes) and checks up to 500 of them. It depends on your sitemap actually listing your pages, though — it's not an unrestricted crawler that follows every internal link, so pages missing from your sitemap won't be found this way.

Is a 401, 403, or 429 response the same as a broken link?

Not necessarily. A 404 or 410 means the page is genuinely gone. A 401 or 403 often means the resource is intentionally access-restricted, not dead. A 429 means the server is temporarily rate-limiting requests. Treating all of these as "broken" produces false positives — a good checker separates them into a "needs review" category instead of lumping them in with confirmed dead links.

Should I redirect a broken link, update it, or remove it?

Redirect when the content moved permanently and a genuine replacement exists at a new URL. Update the link directly when you control the source and know the correct destination. Remove (or replace with plain text) when nothing suitable exists to link to anymore — a redirect to an unrelated page is often worse than no link at all.

Do redirects count as broken links?

No — a redirect that resolves to a working page isn't broken, even though it's an extra hop. A broken-link check typically follows redirects automatically and reports the final status, so a link that 301s to a live page shows as working, not broken. If you need to see the hop-by-hop chain itself (useful for spotting loops or unnecessary chains), use a dedicated redirect checker.

How often should I re-check for broken links?

Monthly is a reasonable default for most actively maintained sites. Recheck immediately after a migration, a redesign, or any bulk content deletion, since those are when large batches of links break at once. High-churn sites (frequent product changes, syndicated content) benefit from weekly checks.

Do I need to fix every broken link I find?

Not urgently, and not all at once. Prioritize by traffic and visibility: broken links on high-traffic pages, in your main navigation, or in content that earns backlinks matter most. A stray broken link in a five-year-old blog comment thread is low priority.

Try Our Free SEO Tools

Put what you learned into action with our free SEO analysis tools.