Nobody sets out to break links. They accumulate: a product is discontinued, a blog post is renamed, a PDF is reorganised into a new folder, a partner site restructures. Each change quietly orphans every link pointing at the old address.
On a site that has been edited for a few years, a few dozen broken links is normal. Nobody notices, because the people who hit them are visitors who leave — not the team looking at the site every day.
Why it actually matters
Two reasons, and the second is the bigger one.
Crawl budget and link equity. Search engines allocate finite crawling to each site. Every request spent on a 404 is one not spent on a real page. More importantly, when an external site links to a page you deleted, that link's value goes nowhere. Redirect it and you keep the authority you already earned.
Visitors leave. Someone clicking your pricing link and hitting "Page not found" does not email you about it. They conclude the site is neglected and go elsewhere. Broken links on checkout paths and contact pages cost real money.
Internal vs external — fix the internal ones first
Two different problems:
- Internal broken links point from your site to your own pages. These are entirely your fault and entirely within your control. Fix all of them.
- External broken links point at someone else's site that has since moved or died. You cannot fix their end — only update or remove your link.
Start internal. They are more damaging, they are usually concentrated in a template or a navigation menu, and fixing one often fixes hundreds of pages at once.
Finding them
A single-page checker will not do this. You need something that crawls the whole site, following every link and recording the status code it gets back.
Our site audit does this free with no URL cap — it reports every broken page, the exact page each broken link was discovered on (which is the part you actually need to make a fix), redirect chains and orphan pages in one pass.
Google Search Console's "Pages" report is the other essential source, and it tells you something a crawler cannot: which broken URLs Google has actually seen and tried to index. Those are the ones with real search value attached. Use both.
Reading status codes
Not every non-200 is a problem:
- 404 Not Found — the page does not exist. Fix or redirect.
- 410 Gone — deliberately and permanently deleted. Correct and useful when you mean it; tells Google to drop it faster than a 404.
- 500 / 502 / 503 — a server error, not a missing page. More urgent than a 404, because it usually means something is broken rather than merely absent.
- 301 — permanent redirect. Fine, though the link should ideally be updated to point directly at the destination.
- 302 — temporary redirect. If it has been in place for a year it should be a 301; Google treats the two differently.
- 0 / timeout — no response at all. Often rate limiting from aggressive crawling rather than a genuine fault. Re-test before acting.
Redirect or 404? A decision rule
The instinct is to redirect everything to the homepage. Resist it — Google treats a redirect to an irrelevant page as a "soft 404" and ignores it, and visitors find it more annoying than an honest error page.
Ask one question: does a page exist that genuinely serves the same need?
- Yes, a direct replacement → 301 to it. A renamed post, a product's newer model.
- No direct match, but a relevant category → 301 to the category. A discontinued blue widget goes to the widgets category, not the homepage.
- Nothing relevant → leave it as a 404, and make the 404 page useful: search box, main navigation, links to popular pages.
A 404 is not a failure. It is the honest answer when a page is genuinely gone.
Redirect chains
These build up over years of site migrations:
/old-page → /newer-page → /newest-page → /final-page
Each hop costs a round trip, and search engines stop following after a handful. Fix by pointing every link in the chain directly at the final destination:
/old-page → /final-page
/newer-page → /final-page
/newest-page → /final-page
Watch for redirect loops too — A redirects to B which redirects back to A. The browser gives up and shows an error. These are invisible until someone reports them, and a crawler finds them immediately.
Orphan pages — the opposite problem
An orphan page exists and works fine, but nothing on your site links to it. It usually happens after a navigation redesign: the page survives, the link to it does not.
Orphans are a quiet waste. Search engines struggle to find them, they receive no internal link equity, and visitors cannot navigate to them at all. Sometimes they are genuinely obsolete and should be removed — but often they are a perfectly good service page nobody can reach.
A full crawl finds them by comparing every URL in your sitemap against every URL reachable by following links. Anything in the first set and not the second is an orphan.
Stopping it happening again
Finding broken links is a one-off task. Not re-creating them is a process:
- Always redirect when you change a URL. The moment you rename a slug, add the 301. Doing it later means losing the traffic in between.
- Use relative internal links (
/about, nothttps://yoursite.com/about) so staging and domain changes do not silently break everything. - Re-crawl after every deploy that touches routing. Most broken links are introduced by a deploy, not by decay.
- Re-crawl quarterly regardless, to catch external links that died on someone else's schedule.
- Watch Search Console — it surfaces 404s that Google found before you did.
A realistic first pass
- Crawl the site and export every non-200 status.
- Sort internal first, then by how many pages link to each broken URL. One broken link in a footer template is hundreds of instances and a single fix.
- Apply the redirect-or-404 rule above to each.
- Flatten any redirect chains you found.
- Re-crawl to confirm, then check your 404 page is actually helpful.
Most sites clear the entire backlog in an afternoon, and the majority of it turns out to be three or four template-level mistakes rather than hundreds of separate ones.
Run a free crawl of your site to get the list — no signup and no 500-URL limit. For the wider technical picture, see our technical SEO checklist.