How to find and fix broken links in WordPress
Dead links waste your visitors' time and your link equity. Here is how to find them all, and how to fix each kind the right way.
Every WordPress site that has been around for more than a year is quietly leaking broken links. A post gets deleted, a page is renamed, a product is retired, an external site you linked to goes dark. None of it announces itself. The link just stops working, and the next visitor who clicks it lands on a dead end that makes your site feel a little less maintained than it actually is.
Broken links are the kind of problem that is easy to ignore, because no single one is urgent, and impossible to fix by hand, because there are always more than you think. This is a guide to finding all of them, telling the different kinds apart, and fixing each the right way, instead of papering over the lot with a redirect to your homepage.
What a broken link actually costs
Three things, mostly. The first is the visitor: someone clicked expecting to get somewhere and got a 404 instead, and a fraction of those people simply leave. The second is search: when a search engine follows a link to a dead page, the authority that link was passing evaporates, and a site riddled with 404s reads as neglected. The third is the slowest and most expensive: trust. A site that sends you to dead ends is a site you stop relying on.
None of that is dramatic. It is a slow tax, and like most slow taxes it stays invisible until you add it up.
The kinds of broken link, and why they are not the same
"Broken link" gets used as a single phrase for several different problems, and the right fix depends on which one you are looking at.
Internal broken links
A link from one of your pages to another of your pages that no longer exists. You control both ends, which means you can fix it properly: send the old URL to the right destination with a redirect, or update the link to point somewhere that works. These are the most fixable, and usually the most common.
External broken links
A link from your site to someone else's page that has gone away. You control your end but not theirs, so you cannot redirect it. The fix is to repoint the link to a working source or remove it. The value here is simply knowing which ones rotted, because you almost never notice an external link dying.
Orphan pages
Not broken, exactly, but worth catching: a page that exists and works but that nothing on your site links to. Visitors and search engines find pages by following links, so an orphan is effectively invisible. Either link to it from somewhere relevant, or, if it has outlived its purpose, retire it.
Dead URLs that are still getting traffic
The highest-priority kind, and the easiest to miss. These are URLs that 404 but that real people are still visiting, from an old bookmark, a link on another site, a search result that has not caught up. A broken link nobody clicks is theoretical. A broken URL with live traffic is costing you visitors right now.
Finding them without a crawl marathon
You cannot find broken links by clicking around. On any real site there are too many, and the ones that matter are never the ones you would think to check. You need two things working together.
The first is a crawl: something that follows every link on the site and records which ones fail, and, crucially, where each broken link was found, so you can go fix it at the source. RecapWP Pro does this across your whole site and lists every broken link with its origin.
The second is a monitor for the dead URLs people actually hit. RecapWP watches for real visitor 404s and surfaces the ones getting genuine traffic as their own findings, while filtering out the automated bot probes that hammer every public site, so they do not drown the signal. That is how a dead URL with live traffic reaches the top of your list instead of hiding in a log.
A broken link nobody clicks is theoretical. A broken URL with live traffic is costing you visitors right now.
Fixing each kind the right way
For an internal broken link, or a dead URL with traffic, the right fix is almost always a 301 redirect that sends the old address to the correct new one. RecapWP creates that redirect for you: it pre-fills a suggested destination when it can work one out, leaves the field open for you to set when it cannot, and writes a redirect that is checked to stay on your own site and not loop back on itself. Every rule it creates is reversible and managed in one place, the Redirects tab, so your redirects do not quietly become their own mess over time.
For an external broken link, repoint it to a working source or take it out. For an orphan page, give it a link from somewhere relevant or retire it. These are editorial calls, so they are surfaced for you to decide rather than changed automatically.
One thing not to do: do not redirect every dead URL to your homepage. It feels tidy, but to a search engine a homepage redirect for missing content reads as a soft 404, and that is worse than an honest one. If a page is genuinely gone with no equivalent, letting it return a clean 404 is the right answer. Redirect when there is a real destination, not as a reflex.
Keeping them from coming back
Broken links are not a problem you solve once. They come back after every migration, every restructure, every bulk delete, because that is exactly when URLs change. The way to stay ahead of them is the same as the rest of site health: crawl on a schedule, let the visitor-404 monitor catch the live ones in between, and clear the new findings worst-first while the list is still short.
Do that and broken links stop being a periodic cleanup you dread and become a handful of findings you clear in a few minutes. The fastest way to see how many your own site is carrying is to run a scan and look.
Stop reading about it. Run the scan.
RecapWP Pro runs dozens of deterministic checks across every area and fixes them for you, with undo, plus the full-site crawl, redirect manager, frontend auditor and the Ask RecapWP assistant.