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.
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 |
Different tools catch different things. Use at least two — one crawler and one signal from Google itself.
" 404 " and " 410 " status codes to find what real users and bots are hitting.Apply this decision tree to every broken URL you find.
https://web.archive.org/web/*/originalurl.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
},
];
},
};curl -I https://example.com/this-does-not-exist./v1/foo → /v2/foo → /articles/foo. Flatten to a single redirect from each old URL to the current one.When a URL has no good redirect target, the 404 page is your last line of defense. A good one:
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.
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.
Monthly for active sites. Quarterly minimum. Always after a redesign, CMS migration, or URL structure change.
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.
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.
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.
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.
Standard crawlers like Screaming Frog can crawl 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.
Broken links are mechanical, not mysterious. Crawl your site monthly with Screaming Frog or 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.