New format
Broken links on a site: how to find and fix them
A broken link points to an unavailable URL: 404, 410, timeout, a broken redirect chain. The user hits a dead end, the bot wastes crawl budget, and internal link equity leaks nowhere.
Below: how to find, prioritize, and fix them. Mass-redirecting every 404 to the homepage is bad practice — it hides the problem and confuses both people and search.
What counts as broken — and why it hurts
A broken link is any click where the target is unavailable or meaningless: 404/410, 5xx, timeout, redirect to an error, soft-404. Internal broken links in the menu hit the whole site; in an old article — locally, but they pile up.
For the user it’s a broken journey: left a card, tapped “similar product” — empty. For SEO — wasted crawl budget, diluted internal signals, and weaker behavior on affected templates. Not a separate “penalty for one link,” but hygiene without which site quality is hard to grow.
Where it breaks most often:
- menu, footer, breadcrumbs after a structure change
- cards and “similar” blocks on the storefront
- old blog posts with outdated URLs
- buttons and banners in email/account templates
How to find: crawler, panels, logs
Crawl the site, export 404s from Webmaster and Search Console, cross-check logs after a slug change. One source isn’t enough: the crawler sees internal links, panels show what search engines saw, logs show real hits from people and bots.
Build a table right away: broken URL, status code, source page, hit count. Then the report becomes a task queue — not an endless list of red lines with no owner.
Mini check set:
- full crawl (or at least priority sections)
- pages-with-errors report in accounts
- log sample of 404s for a period
- manual click through menu/footer after a release
Prioritization: what to fix first
Not every broken link is equally urgent. An error in the main menu, checkout, or a traffic article beats a forgotten URL with no hits for half a year.
Separately handle addresses with external links and frequent log requests: people and bots already land there, so a relevant fix (edit or 301) pays off faster than archive cosmetics.
First:
- navigation and footer
- service and product pages
- materials with organic traffic
- URLs with external backlinks
- then — the tail of old posts
How to fix: edit, 301, 410
Fix the href to a live URL, restore the needed page, set a 301 to a close-in-meaning address, or remove the link. For a section move, prepare a redirect map ahead — not as complaints arrive.
A 301 is justified when old and new pages share user intent. A redirect “just for 200,” especially to home, doesn’t help people and hides a structure hole. If the content is gone for good — honest 404/410 plus remove the outbound link.
Algorithm for one URL:
- find every source of the link
- decide whether the target page is still needed
- choose: edit href / 301 / 410 / remove
- shorten redirect chains
- recrawl and cross-check reports
Internal vs outbound external
Internal broken links matter more for SEO structure: they’re under your control and affect crawl. Outbound links to other people’s 404s hurt reader trust (“the site is abandoned”) and UX of guides with many external sources.
In old articles, every half year it’s worth spot-checking external links to key services and documents. Replace with a current URL or remove the link if the resource is gone.
Practice:
- internal — into the backlog after every crawl
- external — selectively in evergreen pieces
- don’t leave broken partner buttons in the footer for years
Prevention after releases and CMS changes
Don’t delete popular URLs without a replacement plan or a correct response. After a CMS or slug change, walk menu, cards, forms, sitemap, and top traffic articles — that’s where old paths most often fall off.
Assign an owner for checks and keep a fix history. Then a repeat 404 after a release can be tied to a specific deploy — not hunted at random.
Avoid:
- all 404 → home
- ignoring broken links in a template for years
- redirect to irrelevance “just for 200”
- slug change without a 301 map
Checking the result
After fixes, crawl again and manually check key paths. Make sure the 301 goes straight to the final relevant page — no chains through three intermediate addresses.
Webmaster reports don’t update instantly — watch trends, not one day. If a URL should disappear forever, a correct 410 is more honest than a random redirect. Log old URL, source, decision, and recheck date.
Closing the case:
- recrawl without critical 404s in templates
- manual smoke of menu/footer
- drop in hits to old 404s in logs
- note in backlog/wiki what you did
FAQ
Do broken links mean only 404?
Most often yes, but 5xx, redirects to nowhere, and soft-404 (page returns 200 but means “not found”) also hurt. Check status code and content.
Do they affect rankings?
Indirectly: worse UX, lost internal link flow, crawl junk. One or two links won’t kill a site; systemic mess in menus and templates will.
What should I use to find them?
Crawlers (Screaming Frog and peers), Webmaster/Search Console reports, server logs, spot checks after slug changes.
Should I always use a 301?
If there’s a close-in-meaning page — yes. If the topic is gone — a correct 404/410 and fix the outbound link. Don’t redirect “just to get 200.”
What about broken outbound external links?
Fix or remove those too: they hurt trust and the reader, especially in old pieces and a “partners” footer.
How often should I check?
Right after releases and migrations. For a stable site — at least quarterly. Priority: templates, traffic URLs, and addresses with external backlinks.
What is a soft-404?
The server returns 200, but the user sees “product removed” / an empty shell. For search that’s noise: better an honest 404/410 or a 301 to a current equivalent.
Is a three-hop 301 chain OK?
It may work, but shorten to one hop to the final URL. Long chains slow and confuse crawl.
Menu and footer still dump users into 404 after a CMS move?
We’ll crawl, prioritize templates and traffic URLs, then fix with edit / relevant 301 / 410 — no dump to home.
Discuss the task