To fix broken links you need three things in order: a complete list of every link on your site that fails, a decision rule for each one, and a cadence that stops them accumulating again. The decision rule is the part people skip, and it is the part that matters — a broken link is not always something to redirect. Sometimes the right answer is to restore the page, sometimes to redirect it, sometimes to delete the link entirely, and occasionally to tell search engines the URL is gone for good.
This guide covers how to fix broken links of all three kinds: internal links between your own pages, outbound links to other people's pages, and inbound links from other sites pointing at URLs of yours that no longer exist.
The three kinds of broken link, and who can fix each
Internal broken links are links from one of your pages to another page of yours that returns an error. You control both ends, so these are entirely in your hands and there is no excuse for leaving them. They waste crawl requests, they strand readers, and a page that is only linked from broken paths may not be discovered at all.
Outbound broken links are links from your pages to external sites that have gone away. You control the link but not the destination. Nobody can prevent these — the web decays continuously — but leaving a guide full of dead references signals that the page is unmaintained, to readers first and foremost.
Inbound broken links are links from other sites to URLs of yours that no longer resolve. You control the destination but not the link. These are the most valuable of the three, because each one is an endorsement currently being wasted, and fixing them is covered in depth in link reclamation.
Step 1: Find every broken link
Use more than one source. Each has a blind spot.
- A site crawler. Desktop crawlers and hosted auditors walk your site the way a search engine does and report every link with a non-200 response, along with the pages containing them. This is the only method that reliably finds internal and outbound breaks together.
- Google Search Console. The Pages report shows URLs Google tried to fetch and could not serve, and the Links report shows what is pointing at them. This catches URLs a crawler would never reach because nothing on your current site links to them.
- Your server or CDN logs. Filter for 404 responses. Requests with an external referrer are broken inbound links observed directly; requests with an internal referrer are internal links your crawler may have missed behind a form, a filter or JavaScript.
- Your sitemap. A sitemap listing URLs that 404 is a common and quietly damaging problem, because it tells search engines to go and fetch pages that are not there. Run yours through our free sitemap checker to confirm every listed URL resolves.
- A backlink index. Ahrefs, Semrush, Majestic and similar tools flag inbound links whose target errors. Coverage differs, so a link one misses another may find.
Put everything into one spreadsheet with four columns: the broken URL, the status code it returns, where the link comes from, and how many distinct sources link to it. That last column is your priority order.
Step 2: Decide restore, redirect, or remove
For each broken URL, work through these questions in order.
Does the content still exist somewhere?
If the page was renamed, moved to a new folder, merged into a larger guide, or replaced by a newer version, redirect the old URL to the specific page that replaced it. Specific is the operative word — a redirect to the homepage or a broad category discards most of what the link was worth and frustrates the reader who clicked expecting something particular.
Should the content exist again?
Sometimes a page was deleted in a purge that should not have happened. If a dead URL has multiple inbound links from relevant sites, and there is no adequate replacement, the strongest option is often to rebuild the page — properly, at the same URL, serving the intent the link promised.
Is there genuinely no equivalent?
A discontinued product with no successor, an event that happened, a job posting that closed. If there is nothing honest to redirect to, do not invent a destination. Serve a useful 404 or, where the removal is permanent and deliberate, a 410. More on that choice below.
Is the broken link simply wrong?
A typo in an href, a link to a staging domain, a protocol-relative URL that broke after an HTTPS migration, a trailing-slash mismatch. Fix the link itself. Do not build a redirect to paper over a typo you can correct at source.
For outbound links, is the destination still valuable?
Three options, in order of preference: find the same resource at its new home and update the URL; find a different, equally good source and swap it; or remove the link and rewrite the sentence so it still reads properly. Linking to an archived snapshot is a reasonable fallback for citations that matter, but it is not a substitute for a live authoritative source.
Step 3: 301 versus 410 versus a soft 404
This is where most fix-broken-links guides get vague. The distinction is simple.
301 (moved permanently) says: this thing still exists, at a new address. Use it whenever there is a genuine equivalent. It passes readers and ranking signals to the new URL and it is the correct response for renamed, moved and merged pages.
404 (not found) says: we could not find this. It is the correct, unalarming default for a URL that was never valid, for typos, and for content that is simply gone. A 404 is not a penalty. Search engines expect them and drop the URL from the index over time.
410 (gone) says: this existed, we removed it deliberately, and it is not coming back. It signals permanence more strongly than a 404 and tends to lead to faster removal from the index. Use it for content you have intentionally retired — expired listings, deprecated products, deleted user content — where you are certain there is no successor.
Soft 404 is the failure mode to avoid: a URL that returns a 200 status while displaying a "page not found" message, or that redirects to a homepage which has nothing to do with the request. Search engines flag these, and they hide real problems from your own reporting. If the content is gone, return the status code that says so.
Two mechanical rules apply to every redirect you create:
- One hop. If the old URL redirects to a second URL that redirects to a third, collapse the chain so the original points directly at the final destination. Chains lose value and waste crawl budget, and they break entirely if a middle link is later removed.
- No loops, and no redirect to a page that canonicalises elsewhere. A redirect landing on a page whose canonical points somewhere else sends conflicting instructions. Verify the destination with our canonical checker before you consider the fix done.