How to find and fix broken links
A broken link is any link that points somewhere it can no longer reach. The page was deleted, the URL changed, a domain expired, or someone fat-fingered the address when they wrote it. Whatever the cause, the visitor clicks and lands on an error instead of the thing they wanted.
A handful of broken links will not sink a site. Let them pile up, though, and they start to cost you. Visitors bounce, crawlers waste their time on URLs that go nowhere, and any ranking signals that used to flow through those links leak away. This guide covers how to find every broken link, figure out what each one is actually doing, and fix it for good.
What counts as a broken link
Most broken links return a 404 Not Found, which means the server looked for the page and could not find it. But a link can be broken in quieter ways too. It might point at a 500 server error, get stuck in a redirect loop, or resolve to a page that loads with a 200 status while showing nothing but an error message. That last one is a soft 404, and it is the kind people miss because the link technically works.
It helps to separate internal links, which point to other pages on your own site, from external links that point off to someone else's. You control internal links completely, so a broken one is always your job to fix. External links break when the other site changes something, so the fix is different: update the link, swap it for a working source, or drop it.
Find them with a crawler
Checking links by hand stops being realistic past a few dozen pages. A link checker crawls your site the way a search engine does, follows every link it finds, and records the status code each one returns. You point it at your homepage, let it walk the site, and get back a list of which links are dead and which pages they sit on.
Run the crawl on the live site rather than a staging copy, because staging often has different URLs and redirects. When the results come back, sort by status code so the 404s and 5xx errors float to the top. Those are the ones to deal with first.
Work out why each link broke
Before you touch anything, look at where the broken link is meant to go. The fix depends entirely on the reason it broke, and guessing leads to redirects that point at the wrong place.
- The page moved. The content still exists at a new URL, so the link just needs to point there instead.
- The page was deleted on purpose. There is no replacement, so the link should be removed or sent somewhere relevant.
- The URL has a typo. The target is fine; the link text is wrong. Correct the address.
- An external site changed or disappeared. You cannot fix their end, so update your link to a working alternative or remove it.
Fix internal links at the source
For internal links, the cleanest fix is to edit the link itself so it points at the correct, live URL. Do not rely on a redirect to paper over a wrong internal link. A redirect adds an extra hop, slows the page slightly, and leaves the broken link sitting in your code waiting to confuse the next person who reads it.
Reserve redirects for cases where you cannot edit every link, such as old URLs that other sites still link to. When a page has genuinely moved, set up a 301 redirect from the old URL to the new one so anyone arriving from elsewhere still lands in the right place.
Handle external and dead links
When a link points to an external page that no longer exists, you have three options. Find the same content somewhere else and link there instead. Point at an archived copy through the Wayback Machine if the original is gone for good. Or remove the link entirely if it no longer adds anything.
If one of your own pages is the one that died and it should stay dead, return a 410 Gone instead of a 404. A 410 tells search engines the page was removed on purpose, and they tend to drop it from the index faster.
Check again, then keep checking
After you have made your fixes, run the crawler one more time to confirm the broken links are actually gone and you have not introduced new ones. It is easy to mistype a replacement URL and trade one dead link for another.
Links rot over time, so a single cleanup is not enough. Pages get deleted, external sites go down, and URLs change without warning. Re-crawl on a schedule, or set up monitoring that watches the URLs you care about and tells you when one starts returning an error.
Frequently asked questions
- Do broken links hurt SEO?
- A few broken links will not tank your rankings. The damage is indirect: broken internal links waste crawl budget on dead URLs, and links pointing to deleted pages stop passing ranking signals. Both add up on larger sites, so it is worth keeping the count low.
- How often should I check for broken links?
- Monthly is a reasonable baseline for most sites, and more often if you publish or change content frequently. Links break on their own as external sites change, so a one-time cleanup goes stale. Continuous monitoring on your most important pages catches problems between full crawls.
- Should I redirect a broken link or just fix it?
- For internal links, fix the link itself so it points at the live URL. Redirects are for old URLs you cannot edit everywhere, such as pages that have moved and still get traffic from other sites. Use a 301 redirect in that case.
- What is a soft 404 and why does it matter?
- A soft 404 is a page that shows an error message but returns a 200 OK status instead of a real 404. It looks fine to a quick glance but confuses search engines, which may keep the empty page indexed. Configure your server to return a true 404 or 410 for missing pages.
Related tools
Related guides
Put this guide to work on your own site
Sitewell’s free tools run the exact checks covered above — no signup, results in seconds.