What Is a Broken Link?#
A broken link is any hyperlink whose target returns a 4xx error (most commonly 404 Not Found or 410 Gone), a 5xx server error, or fails to resolve at all (DNS failure, connection refused). Broken links exist in two flavors: internal (one page on your site links to a non-existent URL on the same site) and external (your page links to another site that's gone or moved). Internal broken links are worse for SEO — they waste crawl budget, leak link equity, and signal poor site maintenance.
Key Facts (TL;DR)
- 404 vs 410: 404 = "not found, might come back." 410 = "gone, permanent." Google de-indexes 410 pages faster than 404s — use 410 when content is permanently removed.
- 301 redirect > update the link > 404 page — in that order of preference. A 301 to the most relevant existing page preserves both UX and link equity.
- Internal broken links waste crawl budget. Every fetch to a 404 is a fetch Googlebot didn't spend on real content.
- Soft 404s are worse than real 404s. A page that returns 200 OK with a "not found" body confuses Google and stays in the index as a thin page. Always return the correct status code — see HTTP status codes for SEO.
- External broken links don't directly hurt rankings but they hurt UX and trust, and over time they hurt the page that contains them.
- Redirect chains break too. A → B → C → D — Google gives up around 5 hops. Always redirect directly to the final URL.
HTTP Status Codes for "Broken" Pages — and What to Do About Each#
Not every error is the same. The status code your server returns determines what Google does, and the right fix depends on which one you're seeing.
| Code | Meaning | Google's behavior | Correct fix |
|---|---|---|---|
404 | Not Found | De-indexes after repeated checks (~weeks) | 301 to closest match, or accept as 404 |
410 | Gone (permanent) | De-indexes faster than 404 | Return 410 for content that is permanently deleted |
301 | Moved Permanently | Transfers link equity to the new URL | Use for permanent URL changes |
302 | Moved Temporarily | Keeps the old URL in the index | Switch to 301 if the move is permanent |
500 / 502 / 503 | Server error | Retries; persistent 5xx leads to de-index | Fix the server; return 503 with Retry-After during planned outage |
| Soft 404 | 200 OK with "not found" content | Treats as low-quality, may de-index | Return real 404 or 410, not 200 |
| DNS / connection refused | Domain unresolvable | Treats as 5xx | Update or remove the link |
How to Find Broken Links#
Different tools catch different things. Use at least two — one crawler and one signal from Google itself.
- Google Search Console > Pages. Filters out the URLs Google has actually tried to fetch. Check the Not found (404), Soft 404, and Server error (5xx) buckets. Click any row to see the referring pages — those are the internal links you need to fix.
- A desktop site crawler. Crawl the site, then filter its response-code report for client errors (4xx). Good crawlers pair each broken URL with the list of pages linking to it — that inlinks view is the fastest way to find every internal broken link in one pass.
- Ahrefs / Semrush Site Audit. Cloud-based, runs on a schedule. Both flag 4xx pages and internal links to broken pages in a dedicated report.
- Greadme Site Audit. Multi-page scan that surfaces broken internal links plus the source page and exact anchor text — including links inside JavaScript-rendered content.
- Server logs. Grep for
" 404 "and" 410 "status codes to find what real users and bots are hitting.
How to Fix Broken Links#
Apply this decision tree to every broken URL you find.
- Is there a clear replacement page? Set up a 301 redirect from the broken URL to the replacement. This preserves any link equity and bookmarks.
- Is the URL actually a typo in the link? Update the source link. Don't redirect typos forever — fix them at the source.
- Is the content permanently deleted with no replacement? Return 410 Gone. Google de-indexes faster than with 404. Add a helpful 404 page so users who hit the URL still find their way.
- Is the link external and the target site is down temporarily? Wait or replace the link with the Wayback Machine archive:
https://web.archive.org/web/*/originalurl. - Is it part of a redirect chain? Update the redirect to point directly to the final destination.
- A clear replacement page exists
301redirect to the replacementpreserves link equity and bookmarks - The URL is a typo in the linkUpdate the source linkfix typos at the source, don’t redirect them forever
- The content is permanently deleted, no replacementReturn
410GoneGoogle de-indexes faster than with 404 - External link, target site down temporarilyWait, or link to the Wayback Machine archive
- Part of a redirect chainPoint the redirect directly at the final destination
Source: this article's fix order.
301 Redirect Examples
For an Apache server in .htaccess:
# Single redirect
Redirect 301 /old-page/ https://example.com/new-page/
# Pattern redirect (move /blog/ to /articles/)
RedirectMatch 301 ^/blog/(.*)$ https://example.com/articles/$1
# Return 410 for permanently deleted content
RewriteEngine On
RewriteRule ^retired-product/?$ - [G]For Nginx:
# Single redirect
location = /old-page/ {
return 301 https://example.com/new-page/;
}
# Permanent removal
location = /retired-product/ {
return 410;
}For Next.js (in next.config.js):
module.exports = {
async redirects() {
return [
{
source: '/old-page',
destination: '/new-page',
permanent: true, // 301
},
];
},
};The 5 Mistakes That Make Broken Links Worse#
- Redirecting every 404 to the homepage. Google treats this as a soft 404 and ignores the redirect. Redirect to a relevant page or let it 404/410.
- Returning 200 on the 404 page. Custom 404 pages must return HTTP 404, not 200. Check with
curl -I https://example.com/this-does-not-exist. - Chained redirects after a site migration. Each migration adds another hop:
/v1/foo→/v2/foo→/articles/foo. Flatten to a single redirect from each old URL to the current one. - Using 302 instead of 301. 302 keeps the old URL in the index. Use 301 (or 308) for permanent moves.
- Ignoring external broken links. External 404s don't crash rankings, but a page riddled with dead outbound links signals neglect. Audit them at least quarterly.
How to Build a Useful 404 Page#
When a URL has no good redirect target, the 404 page is your last line of defense. A good one:
- Returns HTTP status 404 (or 410), not 200.
- Says clearly that the page doesn't exist, in plain language.
- Offers a search box scoped to your site.
- Links to the homepage and the top 3–5 sections.
- Optionally suggests recent or popular content.
- Looks like the rest of the site (same nav, same brand) — not a default server page.
FAQ#
Do broken links hurt SEO?
Internal broken links waste crawl budget and break the flow of internal link equity, which can indirectly hurt rankings on a site with many of them. External broken links don't directly affect rankings but degrade UX and trust signals.
Should I use 404 or 410 for deleted content?
410 if the content is permanently gone with no plan to bring it back — Google de-indexes faster. 404 is fine if you're not sure or might restore the page.
How often should I audit for broken links?
Monthly for active sites. Quarterly minimum. Always after a redesign, CMS migration, or URL structure change.
Is it OK to redirect a 404 to the homepage?
No. Google calls this a soft 404 and ignores the redirect. Redirect to a topically relevant page, or let the URL return a real 404.
Do redirects pass full link equity?
301 (and 308) pass essentially full PageRank, per multiple Google statements since 2016. The old "15% loss" rule is no longer accurate. Chains of redirects, however, dilute signals — keep redirects to one hop.
How do I find broken links pointing to my site (broken backlinks)?
Use Ahrefs Site Explorer > Broken backlinks or Semrush Backlink Audit. These are valuable: 301-redirect those URLs to relevant live pages on your site to recover lost link equity.
Should I nofollow external links to avoid broken-link risk?
No. nofollow doesn't protect you from broken links — it only changes how the link affects ranking signals. Audit and fix dead external links instead.
What about JavaScript-rendered links?
Most site crawlers can follow rendered links if you enable JavaScript rendering in the configuration. Otherwise links injected client-side won't be checked. AI crawlers like GPTBot and ClaudeBot don't render JS at all — make important links plain HTML.
Conclusion#
Broken links are mechanical, not mysterious. Crawl your site monthly with Greadme, cross-check the Pages report in Search Console, and apply the decision tree: 301 to a real replacement, 410 for permanent removals, or fix the link at the source. Avoid the homepage-redirect trap and the soft-404 trap. A site with clean status codes and zero internal 404s sends Google the simplest possible quality signal — that you maintain what you publish.
