Every WordPress site decays a little each month. A partner deletes a page, a vendor reorganizes its docs, you rename a slug late at night, and a link that worked last spring now lands on a 404 page. Spread that across a few hundred posts and your site quietly sends readers and crawlers into dead ends.
Fixing it does not have to be manual. A good WordPress broken link checker plugin crawls your content in the background, reports every 404 error, 403 Forbidden response and server failure, and lets you repair the link without opening each post. The hard part is choosing one: some plugins scan on your own server, some hand the crawl to a cloud service, and a few never scan at all but catch the visitors who already hit a dead URL.
This guide compares ten plugins from the WordPress.org directory, explains the HTTP status codes behind every “page not found” message, and shows you how to check broken links in WordPress, fix broken links for good and keep them fixed. You also get copy-paste code snippets, a decision chart and a maintenance schedule that most roundups skip. Plugin details were checked against the WordPress.org listings and developer sites in November 2026.
Short answer: for hands-off scanning, start with Broken Link Checker (cloud engine) or AIOSEO’s checker. Add 404 to 301 for URLs that visitors and search engines already hit. If you want everything to stay on your own server, look at DevDome Link Monitor or Check for Broken Links.
Quick Picks: Best Broken Link Checker for WordPress by Need
| If you want… | Pick |
|---|---|
| Cloud scanning with almost no server load | Broken Link Checker (cloud engine) or AIOSEO Broken Link Checker |
| Everything scanned on your own server, no account | DevDome Link Monitor |
| Free manual scans with an upgrade path | Check for Broken Links |
| 301 redirects for dead URLs people already hit | 404 to 301 |
| Archived copies for dead outbound links | Archivarix Broken Links Recovery or Wayback Machine Link Fixer |
| A small, simple fixer for posts and pages | Codesala Broken Link Fixer |
| An audit of your outbound link profile | External Links Overview |
| A quick outside-in crawl of a small live site | Link Checker |
What Is a Broken Link (Dead Link) in WordPress?
A broken link, also called a dead link, is a hyperlink that no longer reaches the page, file or image it promises. The visitor clicks and gets an error message, usually a 404 Not Found page, a timeout or a security block. The slow decay of old links across the web even has a name: link rot.
WordPress sites collect three kinds of dead links:
- Internal links point from one page of your site to another, such as a post linking to a service page you later renamed.
- External links point to other websites. You do not control them, so they break without warning when a domain expires or a page is deleted.
- Broken images and files are links too. A missing
img src, a deleted PDF or a hotlinked image that moved will show a broken icon, and a good scanner raises a missing image alert for each one.
Common causes of dead links
- Moved or deleted content. You trash a post, merge two articles or change a slug and every old link to it breaks.
- Permalink and domain changes. Switching permalink structure, moving to HTTPS or migrating domains leaves old URLs behind. Our guide to changing URLs in the WordPress database covers the safe way to rewrite them in bulk.
- Theme and plugin changes. Menus, widgets and shortcodes can point at pages that disappear when you switch WordPress themes.
- External sites going offline. Domains lapse, startups shut down, vendors restructure their documentation.
- Typos and copy-paste slips. A missing character in a URL is enough.
- Expired affiliate and campaign links. Offers end and tracking URLs get retired.
- AI-written drafts. Generated text sometimes invents plausible-looking URLs or cites pages that never existed. Check every link before you publish.
- Server problems. A misconfigured server returns errors for pages that exist; see our walkthrough of the most common WordPress errors for the usual suspects.
HTTP Status Codes Behind a Broken Link: 404, 403, 302 and More
Every link click ends with a three-digit response from the server. Understanding those HTTP status codes tells you which flagged links are truly broken, which are fine and which only need a cleanup. The MDN reference for HTTP response status codes lists every code in detail; the table below covers the ones a link checker reports most often.
| Status | What it means for a link | What to do |
|---|---|---|
| 200 OK | The page loaded. Watch for soft 404s, where an error page still answers 200. | Nothing, unless the content is an empty “page not found” template. |
| 301 Moved Permanently | The URL changed for good and the server forwards visitors. | Update the link to the final URL. Keep the redirect for old backlinks. |
| 302 Found (originally “Moved Temporarily”) | A temporary redirect. Search engines may keep the old URL. | If the move is permanent, switch it to a 301. |
| 307 / 308 | Temporary and permanent redirects that preserve the request method. | Treat like 302 and 301. |
| 401 Unauthorized | A login is required, so the checker cannot see the page. | Verify manually, then dismiss or exclude the link. |
| 403 Forbidden | The server refused the request. Often bot protection, sometimes a real block. | Open it in a browser. If it loads, mark it as working. |
| 404 Not Found | The page does not exist at that URL. This is the classic “page not found” error. | Edit the URL, add a 301 redirect or unlink. |
| 410 Gone | The page was removed on purpose. | Unlink it or replace it with a live resource. |
| 429 Too Many Requests | The target rate-limited your scanner. | Recheck later and slow the scan down. |
| 500, 502, 503, 504 | The target server failed. Often temporary. | Recheck after a day. Only treat it as broken if it keeps failing. Your own site throwing these? Read our 500 Internal Server Error fix guide. |
| Timeout or DNS failure | The domain does not resolve or never answers. | The site is likely dead. Replace or unlink. |
Two details matter when you read these results. First, a custom 404 page should still return a real 404 status. Google’s documentation on HTTP status codes and network errors explains that a user-friendly error page that answers 200 can end up indexed as a soft 404. Second, the formal wording of the redirect codes lives in RFC 9110, which is where “302 Found” replaced the older name “Moved Temporarily”.
Why Dead Links Hurt Users, SEO and Sales
Search engines treat a 404 as a normal answer when a page is genuinely gone, so a few dead URLs will not sink a site. The damage comes from dead links on pages that matter:
- Frustrated visitors. A click that ends on “page not found” breaks the reader’s flow. Many leave and few come back.
- Wasted crawl budget. Crawlers spend requests on URLs that lead nowhere instead of discovering your new content. Large blogs and shops feel this first.
- Lost link equity. Internal links pass authority between your pages. A link to a deleted URL passes nothing, and a backlink to a dead page wastes the vote.
- Lower trust. Outdated citations and dead resources make a site look neglected, which undermines the expertise you are trying to show.
- Lost revenue. Broken buy buttons, expired affiliate links and dead product URLs cost real sales. If you run a shop, pair a link checker with the plugins in our list of essential WooCommerce plugins.
Link hygiene is a core part of on-page SEO. If you are building the basics, our beginner’s guide to WordPress on-page SEO shows where it fits.
Cloud-Based Link Checking vs Local Server Scanning
The biggest design choice in any broken link checker plugin for WordPress is where the crawl runs. Local server scanning uses your own PHP workers and bandwidth to request every URL. Cloud-based link checking sends the URL list to a service that does the requests and returns a report.
Choose local scanning if…
- You want no third-party account and no URLs leaving your server.
- You need to scan drafts, private posts or staging copies.
- Your host gives you generous resources and a real cron job.
- You prefer inline link editing inside wp-admin.
Choose cloud scanning if…
- Your host is cheap or already tight on CPU and memory.
- You manage many sites and want one dashboard.
- You want large crawls to finish without timeouts.
- You are fine with a free account and a hosted service.
| Factor | Local server scanning | Cloud-based link checking |
|---|---|---|
| Server load | Uses your PHP workers, database and bandwidth | Light; requests come from the provider’s servers |
| Speed | Depends on your host and batch size | Usually faster on big sites |
| Private content | Can read drafts and login-only pages | Sees what a public crawler sees unless the plugin sends content |
| Account needed | Rarely | Usually a free account |
| Blocked by external sites | Your server IP may get rate-limited | Fewer blocks, but some sites still refuse bots |
| Best for | Privacy, staging, single sites | Large catalogs, agencies, weak hosting |
You will also see the phrase real-time link monitoring. In practice it means frequent background crawling, plus highlighting broken links on the front end for logged-in editors, rather than a live check on every click. Judge it by how quickly the plugin emails you after a link breaks. If your hosting is the bottleneck, our list of cheap WordPress hosting plans shows what you get at each price point.
How to Choose a Broken Link Checker Plugin
Rank candidates on these criteria before you install anything:
- Scan location. Local, cloud or an external crawler, as described above.
- Scope. Posts and pages are table stakes. Check for custom post types, comments, custom fields, menus, widgets, page builders and synced patterns.
- Fix workflow. Inline link editing, bulk actions, unlink, add redirect and replace with an archive copy save the most time.
- False-positive handling. Look for retries, GET fallbacks, exclusions and a separate bucket for links the scanner cannot verify.
- Alerts and scheduling. Email reports and background scans turn a one-off cleanup into a habit.
- Limits and pricing. Free tiers often cap URLs or internal links per month.
- Maintenance. Check the last update date, supported WordPress version and support-forum activity.
The 10 WordPress Broken Link Checker Plugins at a Glance
The chart shows how many sites run each plugin. Install count is not quality, but it does tell you how much real-world testing a plugin has had.
| Plugin | Where it scans | Fix from dashboard | Redirect support | Broken images | Schedule and alerts |
|---|---|---|---|---|---|
| Broken Link Checker | Cloud or local | Edit, unlink, ignore, bulk | Can replace redirects with direct links | Yes | Scans and email alerts |
| AIOSEO Broken Link Checker | Cloud service | Edit, unlink, add redirect, bulk | Yes, through AIOSEO Redirection Manager | Yes | Weekly rescans, email reports |
| Link Checker | External crawler | Report with edit links | Lists redirects | Pro | Pro scheduler |
| Check for Broken Links | Local | Edit, remove, dismiss | Auto-fix permanent redirects (Pro) | Yes | Pro schedule and email |
| 404 to 301 | Logs live 404 hits | Turns logs into redirects | 301, 302, 307, 410, 451 | Missing files via filter | Email alerts and reports |
| Archivarix Recovery | Local, background | Archive copy, custom URL, remove | Replaces links | No (links only) | Automatic mode, WP-CLI |
| Wayback Link Fixer | Local plus Internet Archive | Automatic front-end swap | Swaps to archive copy | No | Weekly background checks |
| Codesala Link Fixer | Local, batched | Replace, remove, ignore, bulk | Bulk URL replace | No | Hourly to weekly, email |
| DevDome Link Monitor | Local | Edit URL, unlink, recheck | Suggests redirects | Yes | Optional email summary |
| External Links Overview | Local, manual | Read-only | No | No | Manual |
1. Broken Link Checker
Built by WPMU DEV with ManageWP as a contributor, Broken Link Checker is the plugin most people mean when they search for a “broken link checker for WordPress.” The directory shows more than 500,000 active installations and a 3.8 out of 5 rating across 605 reviews (November 2026), so there is plenty of real-world feedback, good and bad.
- Two engines. The cloud engine scans on WPMU DEV’s servers, which the developer says is about 20 times faster and spares your hosting. The local engine runs on your own server. You can switch between them without losing settings.
- Wide scan scope. It covers posts, pages, custom post types, comments and custom fields, including WooCommerce product links, and flags redirected URLs.
- Missing image alerts. Broken images appear in the same report as broken links.
- Fix without leaving the dashboard. Edit a URL, unlink it, ignore it or run a bulk action. The local engine also supports inline editing.
- Alerts and filters. Email notices, dashboard summaries, scheduled scans and exclusions for post types, categories and domains.
- Multisite support for networks and agency installs.
Scope of use: cloud mode needs a free WPMU DEV Hub account, while the local engine works only inside wp-admin. Watch out: one recent reviewer reported a “Select All” action that affected every flagged link instead of only the visible page, and others mention false positives. Back up first, spot check flagged links and avoid bulk unlinking hundreds at once.
Best for: bloggers, shops and agencies that want both a cloud engine and a local fallback in one free plugin.
Check It Now (Broken Link Checker)
2. AIOSEO Broken Link Checker
From the team behind All in One SEO, this checker works as a hosted service. The plugin talks to AIOSEO’s servers, which do the crawling, so your WordPress install carries almost none of the scanning load. That makes it a good automated site scanner for small hosting plans.
- Fix options in the dashboard: edit URL, unlink, add redirect, recheck or dismiss, with no need to open the affected post.
- Redirect manager link-up. “Add redirect” hands off to AIOSEO’s Redirection Manager so a dead URL becomes a 301 redirect in a few clicks.
- Wider scanning since version 1.3.1 (October 2026). It now checks navigation menus, custom fields, author bios and term descriptions, plus Elementor, Divi, SiteOrigin, Avada and WPBakery content, reusable blocks, patterns and templates.
- Fix-first dashboard. It ranks broken links by priority, shows the worst external domains and how dead links spread across your site.
- Reports and alerts. Weekly rescans, an email alert about a week after a link breaks, a monthly summary, CSV export and monthly scan frequency.
- Front-end highlighter. Logged-in editors and administrators see broken links underlined in red; visitors do not.
- Broken image detection alongside link checks.
Scope of use: the free plan scans up to 200 internal links per month, and larger sites move to a monthly paid plan. Watch out: that allowance is small for a big blog or shop, so check the current pricing before you connect a large site.
Best for: SEO-minded owners who want scanning and redirects in one workflow. If you already run an SEO plugin, our comparison of Rank Math vs Yoast SEO shows which redirect tools each one bundles.
Check It Now (AIOSEO Broken Link Checker)
3. Link Checker
Link Checker by Marco Beierer uses an external crawler operated by the developer. It visits your public pages like an ordinary visitor and reports every dead internal and external link, so it works with any theme, page builder or content type without special integration. Because the crawler does the heavy lifting, the cost to your server is low.
- Lists broken links and redirects on your site, with support for Polylang multilingual setups.
- Respects your robots.txt file, including the crawl-delay directive, so you control how fast it moves.
- Pro adds checks for embedded images and YouTube videos, a daily scheduler with an email summary, CSV export and form login support for member areas.
- Recent releases refreshed compatibility for WordPress 7 and restored free-version use.
Scope of use: the free version checks up to 500 URLs, and the site must be reachable from the internet, so it does not work on a localhost install. Cheap hosts that block fast sequential requests can also block the crawler; raise the crawl delay in robots.txt if scans fail. Watch out: the plugin holds a 3.2 out of 5 rating from 31 reviews, and most complaints are about the 500-URL cap.
Best for: small brochure sites that want a quick outside-in audit of a live site.
4. Check for Broken Links
Published by Norse Digital Group, Check for Broken Links runs inside WordPress, which means it can scan drafts, private content and pages behind login that an external crawler cannot reach. Version 3, released in 2026, also added an SEO toolkit that connects to a free brokenlinkchecker.io account.
- Free manual scans list each broken URL, its HTTP status code and the exact page where it appears, with filters for link type, content type and errors such as 404, 403 or 500.
- Broken image detection, custom post types and slider content are included in the free version, and results export to CSV.
- Fix from the results table: edit the URL, remove the link, mark it as not broken or dismiss it. Edits do not change the post’s modified date.
- Smarter status handling. Since version 3.1.5, server errors (5xx), 401 and 408 count as warnings, while other 4xx answers, unresolved hosts and certificate errors count as broken. It also skips sites known to block bots, such as Amazon, LinkedIn and Facebook, to avoid false positives.
- Pro (from $49 per year for one site) adds daily, weekly or monthly scans, email reports, author notifications, comment and custom-field scanning including ACF, nofollow for broken links until fixed, automatic fixes for permanent redirects and Wayback Machine suggestions. A “Fix with AI” tool suggests a verified replacement for each dead link.
- Extras after connecting a free account: keyword rank tracker (10 keywords free), uptime monitor, internal link optimizer and SEO and AEO audits.
Scope of use: scans run in short resumable steps, so large sites finish even on hosts with low execution limits. Watch out: it is a newer plugin with about 1,000 installs and a handful of reviews, so test it on staging first.
Best for: owners who want a local scanner with a free tier and a clear upgrade path.
Check It Now (Check for Broken Links)
5. 404 to 301
This one is different. Instead of crawling your content, 404 to 301 watches the 404 errors that visitors and search engines actually trigger, logs them and helps you turn them into redirects. It was written by Syed Balkhi with the AIOSEO plugin team, has more than 100,000 active installations and holds a 4.7 out of 5 rating across 319 reviews.
- Full redirect manager. Create 301, 302 and 307 redirects plus 410 Gone and 451 responses, matched by exact path, prefix or regular expression, with a hit counter on every rule.
- 404 error logs. Each entry records the requested URL, referrer, user agent and timestamp. Repeat hits collapse into one row with a count, and entries move through open, ignored and fixed.
- Smart filters. Split 404s linked from your own pages (fix the content) from 404s arriving from other sites (add a redirect), and split pages from missing files and assets.
- Automatic redirects for renamed slugs, so changing a permalink does not create a new dead URL.
- Monitoring without opening the plugin. A dashboard widget lists your busiest broken URLs, and email alerts fire after a hit threshold you set. Scheduled reports arrive daily, weekly or monthly with a CSV attached.
- Import and developer tools. CSV import for bulk redirects, REST API, WP-CLI commands and multisite compatibility.
Scope of use: it only works on requests that already return a 404, so healthy page loads are untouched. It complements a scanner rather than replacing one: the scanner finds dead links inside your content, while this plugin handles dead URLs hit from outside, such as old backlinks. Watch out: the global fallback that sends every leftover 404 to one page is convenient but blunt; redirect to a relevant page whenever you can. The plugin needs WordPress 6.6 or newer.
Best for: site migrations, permalink changes and shop catalog cleanups.
6. Archivarix Broken Links Recovery
Archivarix Broken Links Recovery scans your content for dead internal and external links and can replace them with copies from the Wayback Machine. It is a young plugin, but its detection logic goes deeper than most free checkers.
- Multi-level checks. It looks at HTTP errors, DNS failures and timeouts, redirects to a different domain or to a site root, parked domains (30+ signatures), content-type mismatches and soft 404s.
- Video and social checks. YouTube, Vimeo and TikTok links are verified through oEmbed, and links to X, LinkedIn, Instagram, Facebook and Pinterest get their own validation.
- Automatic or manual mode. Automatic mode swaps in an archive copy dated to the post’s publish date and removes the link if none exists. Manual mode lets you pick per link: archive copy, custom URL, remove the link but keep the text, remove both, or whitelist.
- Background crawling. Scans run without blocking your site and cover posts, pages, custom post types, comments, custom fields, widgets and Elementor content, with bulk actions, domain exclusions and proxy support.
- WP-CLI and multisite. Run
wp ablr scan, orwp ablr scan --networkacross a whole network. Version 1.1.0 stopped re-scans from wrapping already-archived links a second time.
Scope of use: it checks a href links only; images need the developer’s companion plugin. Watch out: with roughly 200 installs and a single review, automatic mode rewrites content, so run it on staging and keep a backup.
Best for: older blogs with years of dead outbound references.
Check It Now (Archivarix Broken Links Recovery)
7. Wayback Machine Link Fixer
Created by the Internet Archive with Automattic Special Projects, this plugin fights link rot by pairing your outbound links with snapshots in the Wayback Machine. It scans post content, checks whether each linked page has an archived version and asks the archive to create a snapshot if none exists.
- Weekly checks with a patience rule. A link counts as broken only after three consecutive errors, a policy modelled on Wikipedia’s.
- Automatic front-end swap. Once a link is confirmed dead, visitors are sent to the archived copy while the stored post content stays untouched. An optional icon marks fixed links.
- Auto Archiver. It can also snapshot your own posts whenever you update them, giving you a public backup of your content’s history.
- Set it and forget it. Processing happens in the background in custom tables, though a site with thousands of links can take weeks to work through.
Scope of use: it works best with the block editor, handles page builders and custom fields only partly, and runs on multisite only when enabled per site. An archive.org API key raises your daily snapshot limit. Watch out: reviews average 3.8 out of 5 from eight ratings. Some users report false positives, and one reviewer pointed out that because the swap happens on the front end, search crawlers may still see the original dead link in the source HTML. Treat it as a visitor-experience fix, not an on-page repair.
Best for: citation-heavy sites such as research blogs, news archives and documentation.
Check It Now (Wayback Machine Link Fixer)
8. Codesala Broken Link Fixer
Codesala Broken Link Fixer is a small, free plugin that scans your posts and pages in AJAX batches, shows a live progress bar and lists each dead URL with its HTTP status. Its simplicity is the selling point.
- Three fixes: replace the URL, remove the link while keeping the visible text, or ignore it.
- Bulk actions (version 2.0). Select many links and bulk remove, bulk replace through a modal, or bulk ignore.
- Clear status display. It shows the exact code, such as 404, 500, 403 or a timeout. It treats 0, 400, 401, 403, 404, 408, 410, 500, 502, 503 and 504 as broken, using
wp_remote_headwith a GET fallback. - Automation. Schedule hourly, daily or weekly scans through WP-Cron and receive an email when links break.
- Clean uninstall. It removes its table and options when deleted.
Scope of use: it scans Posts and Pages only, so custom post types such as WooCommerce products are skipped for now. Watch out: the plugin has about 10 active installs and no reviews, which makes testing on staging essential.
Best for: small blogs and brochure sites that want a lightweight, free fixer.
Check It Now (Codesala Broken Link Fixer)
9. DevDome Link Monitor
DevDome Link Monitor is built around one idea: do not cry wolf. It scans on your own server with no cloud account and no page or link limits, then sorts results into buckets so a temporary timeout never gets mislabeled as a dead link.
- Two-strike verification. A URL is marked broken only after two failures separated in time (15 seconds by default). It tries HEAD first, then a size-capped GET, and follows up to five redirects with loop detection.
- Honest result buckets. Healthy, broken, redirected (with the final URL and hop count), unverified (timeouts, DNS or TLS errors) and could-not-verify (401, 403, 429 and 999 anti-bot answers). Only genuine failures count as broken.
- Inline link editing. Edit one URL across every post that contains it, unlink while keeping the anchor text, re-check or dismiss.
- Built-in 404 monitor. It logs missing-page requests with separate human and bot hit counts, supports path ignores and CSV export, and suggests redirects matched to your real post and page slugs. Use one-click redirects when DevDome Redirect Manager is active, or copy a ready-made .htaccess rule.
- Health score. A link health score and a 12-scan trend show whether your cleanup is working. Scans can be paused, resumed or cancelled, and weekly or monthly rescans can send an optional email summary through a connected DevDome account.
- Image checks. It checks
img srcURLs as well as links, which gives you missing image alerts.
Scope of use: it reads published posts in public post types, and skips widgets, menus, custom fields and drafts, so it is not a whole-site crawler. It also needs the PHP cURL extension. Watch out: a server that answers 200 on a “page not found” template still counts as OK, and with about 300 installs and no reviews yet it is early days.
Best for: privacy-minded sites that want a careful scanner with few false positives.
Check It Now (DevDome Link Monitor)
10. External Links Overview
External Links Overview, by Christian Ott of seo-kreativ, takes a different angle. Rather than fixing links, it gathers every outbound link in your posts and pages into a searchable, filterable, sortable table and lets you check their status on demand.
- HTTP status checks for outgoing links, covering 404s, 301 redirects and timeouts, with a filter that shows only the broken ones.
- Attribute view. The table shows each link’s
relandtargetvalues, which makes it easy to confirm that sponsored or affiliate links carry the right attributes. - Domain distribution. See which sites you link to most often and what share of your outbound links each one takes.
- CSV export and a dashboard widget that summarizes broken links at a glance. Posts are rescanned after updates, and the plugin never modifies your content.
Scope of use: it covers external links in posts and pages, and runs only when you trigger it, so it has no front-end cost. Watch out: the latest release (1.3.0) is about a year old and was tested up to WordPress 6.9, so confirm compatibility on staging. One reviewer asked for WooCommerce product scanning, which is not available.
Best for: SEO audits of your outbound link profile, from nofollow checks to spotting over-linked domains.
Check It Now (External Links Overview)
How to Check Broken Links in WordPress, Step by Step
The workflow is the same whichever plugin you choose. It takes about twenty minutes to set up and then runs on a schedule.
- Back up first. Export the database and test on staging when the plugin rewrites post content, especially with bulk unlink or automatic archive replacement.
- Install and choose an engine. Install the plugin from Plugins, Add New, activate it and pick cloud or local scanning. Connect the free account if the cloud engine asks for one.
- Set the scope. Tick the post types you actually use. Include comments, custom fields, menus and page builder content when the plugin supports them. Exclude domains known to block bots, such as large social networks and marketplaces.
- Check external and internal links in one scan. Start the first crawl. Small sites finish in minutes, while big catalogs can take hours.
- Sort by status code. Fix 404 and 410 errors on your most visited pages first, then redirected links, then warnings such as timeouts and 5xx answers. Google Search Console shows which pages get traffic, which helps you prioritise.
- Repair links. Use the table in the next section to choose the right fix for each case.
- Recheck. Run a second scan to confirm that fixed links now return 200 or a clean 301.
- Turn on alerts and a schedule. Weekly for active blogs, monthly for static sites, plus an email alert so you hear about breakage without logging in.
How to Fix and Repair Broken Links
Knowing how to fix broken links is mostly about matching the right repair to the cause. Do not unlink everything by reflex; a redirect or a corrected URL often keeps more value.
| Situation | Best way to repair broken links | Plugins that help |
|---|---|---|
| Typo or old URL structure | Edit the URL inline | Broken Link Checker, AIOSEO, DevDome, Check for Broken Links, Codesala |
| Page moved on your own site | Update the internal link, then add a 301 redirect for outside visitors | 404 to 301, AIOSEO with Redirection Manager |
| Page deleted with no replacement | Unlink and keep the anchor text, or return a 410 | Any scanner, 404 to 301 for the 410 |
| Valuable external page now gone | Swap in an archived copy | Archivarix, Wayback Machine Link Fixer |
| External link redirects (301) | Replace it with the final destination URL | DevDome shows the final URL and hop count; Broken Link Checker can fix redirects |
| 403, 429 or 999 from the target | Open it in a browser. If it loads, mark it as working and exclude the domain | DevDome, Archivarix (whitelist), Check for Broken Links |
| Broken or missing image | Re-upload the file or point to the correct media URL | Broken Link Checker, AIOSEO, Check for Broken Links, DevDome |
| Expired affiliate or offer link | Replace it with a live offer | External Links Overview shows which domains you link to |
Code Snippets: cURL, Redirects, PHP and WP-CLI
Plugins cover most needs, but a few commands save time when you are debugging or migrating. If you are new to adding PHP to a site, read our guide to code snippets for WordPress first and keep custom code in a snippets plugin or a site-specific plugin, never in a theme you may replace.
1. Check a status code from the command line
# One URL: print the final status and where it landed
curl -I -L -s -o /dev/null -w "%{http_code} %{url_effective}\n" https://example.com/old-page/
# A list of URLs from urls.txt, one per line
while read -r url; do
code=$(curl -o /dev/null -s -L -I --max-time 15 -w "%{http_code}" "$url")
echo "$code $url"
done < urls.txt | sort
2. Add 301 redirects on Apache and Nginx
# .htaccess (Apache)
Redirect 301 /old-page/ https://example.com/new-page/
RedirectMatch 301 ^/old-shop/(.*)$ https://example.com/shop/$1
# Nginx server block
location = /old-page/ { return 301 https://example.com/new-page/; }
location ~ ^/old-shop/(.*)$ { return 301 https://example.com/shop/$1; }
3. A tiny weekly link check in PHP
This snippet checks a short list of must-never-break URLs, such as your checkout, contact page and key partner links, and emails you if any fail. It uses wp_remote_head() from the WordPress HTTP API. It is a safety net for critical pages, not a replacement for a full scanner.
add_action( 'init', function () {
if ( ! wp_next_scheduled( 'athemeart_check_key_links' ) ) {
wp_schedule_event( time() + HOUR_IN_SECONDS, 'weekly', 'athemeart_check_key_links' );
}
} );
add_action( 'athemeart_check_key_links', function () {
$urls = array(
home_url( '/' ),
home_url( '/shop/' ),
home_url( '/contact/' ),
'https://example.com/partner-page/',
);
$broken = array();
foreach ( $urls as $url ) {
$response = wp_remote_head( $url, array( 'timeout' => 10, 'redirection' => 5 ) );
if ( is_wp_error( $response ) ) {
$broken[ $url ] = $response->get_error_message();
continue;
}
$code = (int) wp_remote_retrieve_response_code( $response );
if ( $code >= 400 ) {
$broken[ $url ] = $code;
}
}
if ( $broken ) {
$lines = array();
foreach ( $broken as $url => $status ) {
$lines[] = $url . ' => ' . $status;
}
wp_mail( get_option( 'admin_email' ), 'Broken links found', implode( "\n", $lines ) );
}
} );
Some servers reject HEAD requests, so a 405 here may be a false alarm. Swap in wp_remote_get() for those URLs.
4. Fix a changed domain safely with WP-CLI
# Always back up and preview first
wp db export backup-before-links.sql
wp search-replace 'http://old-domain.com' 'https://example.com' --skip-columns=guid --dry-run
# Run for real once the dry run looks right
wp search-replace 'http://old-domain.com' 'https://example.com' --skip-columns=guid
# Find published posts that still contain a dead path
wp db query "SELECT ID, post_title FROM $(wp db prefix)posts WHERE post_status='publish' AND post_content LIKE '%/old-page/%';"
301 Redirects vs 302 Redirects: Keep Link Equity
A redirect manager is the safest repair when an old URL still has backlinks or bookmarks. A few rules keep it clean:
- Use a 301 for permanent moves. It tells search engines to transfer the old address to the new one. A 302 (“Found”, formerly “Moved Temporarily”) says the move is temporary and can leave the old URL in the index.
- Redirect to the closest match. Sending every dead URL to the homepage looks like a soft 404 to crawlers and frustrates readers. Point to the nearest category, replacement post or updated guide.
- Avoid chains and loops. A to B to C wastes crawl budget. Update the first redirect to land directly on the final URL. Google’s page on redirects and Google Search explains how each type is treated.
- Keep redirects for a long time. A year is a common minimum, and longer is better when strong backlinks point to the old URL.
- Return a 410 when content is gone for good and has no sensible replacement.
- Update the source link anyway. A redirect helps outside visitors, but your own internal links should point straight to the final page.
SEO suites often bundle a redirect manager too, so check what you already have before adding another plugin.
False Positives and Scan Performance
No scanner is perfect. Servers reject HEAD requests, firewalls challenge bots and social networks answer crawlers with an error however the URL is written. To keep results trustworthy:
- Exclude noisy domains. Marketplaces and social networks are the usual offenders.
- Verify before you bulk-unlink. Open a handful of flagged URLs in a browser. If they load, dismiss them.
- Prefer scanners with retries and a GET fallback. DevDome’s two-strike rule and Check for Broken Links’ warning bucket are good examples.
- Schedule scans off-peak. Local scans use PHP workers, so run them overnight and lower batch sizes on small servers.
- Use a real cron job. WordPress runs scheduled tasks when someone visits, so quiet sites can run late. The WP-Cron handbook explains how to trigger it from the server.
- Clear caches after fixes. Cached pages can keep serving old links. Our WP Rocket review shows how to purge cleanly.
A Maintenance Schedule That Works
| Site type | Scan frequency | Extra steps |
|---|---|---|
| Personal blog under 200 posts | Monthly | Email alerts on, review the 404 log quarterly |
| Active publisher or magazine | Weekly | Recheck outbound links on your top 50 posts monthly |
| WooCommerce store | Weekly, plus after catalog changes | Redirect discontinued products to categories |
| Agency client sites | Monthly report per site | Use cloud or multisite dashboards |
| After a migration or redesign | Daily for the first week | Watch the 404 log and add redirects |
- Back up before any bulk change
- Run a full scan and sort by status code
- Fix internal 404s first, then redirects, then external failures
- Add 301 redirects for URLs with backlinks or traffic
- Check broken images and missing files
- Dismiss verified false positives and exclude noisy domains
- Turn on email alerts and set the next scan date
- Add link checks to your wider WordPress security checklist so they happen every time
Hacked sites often gain spammy outbound links and injected redirects, so a sudden jump in new external links is a warning sign. If you spot one, follow our steps to recover a hacked WordPress site, and consider one of the best WordPress security plugins to prevent a repeat.
Beyond Plugins: Search Console, Online Checkers and Desktop Crawlers
Plugins are not the only way to find dead links. Use a second opinion when stakes are high, because every tool has blind spots.
| Tool | Where it runs | Good for | Limits |
|---|---|---|---|
| Google Search Console | Google’s servers | 404s and soft 404s that Googlebot actually met | Only URLs Google crawled; no inline fixing |
| W3C Link Checker | Free online tool | One-off check of a single page or a small site | Manual fixes; not built for large sites |
| Desktop crawler (Screaming Frog) | Your computer | Full-site crawls, redirect chains and bulk exports | Learning curve; you fix links in WordPress yourself |
| SEO suites (Ahrefs, Semrush) | Cloud, paid | Site audits and broken backlink reports | Subscription cost; no in-dashboard link editing |
| Broken link checker plugin | Your site or a cloud service | Finding and fixing links without leaving WordPress | Scope varies; watch false positives |
A site that goes completely offline makes every link on it look broken, so pair link checks with uptime monitoring. aThemeArt’s WP Server Toolkit tracks server status and uptime so you hear about outages before visitors do.
WooCommerce Stores and Agencies
Stores break links in particular ways: discontinued products, renamed categories, changed product base slugs and expired coupon landing pages. Redirect retired products to their closest category rather than the shop page, and keep a link scanner that covers custom post types, because Codesala skips products while Broken Link Checker, DevDome and Check for Broken Links include them. Combine link health with the other store essentials covered earlier in this guide, such as redirects for retired products and uptime monitoring.
Agencies need repeatability. Choose a plugin with multisite support or a central dashboard, such as Broken Link Checker’s Hub or AIOSEO’s Elite licence for client sites, or script scans with Archivarix’s WP-CLI network command. Send the monthly email report to the client so the work stays visible.
Mistakes to Avoid
- Trusting every red flag. A 403 or 999 often means bot protection, not a dead page.
- Bulk-unlinking without a backup. One wrong filter can strip hundreds of good links.
- Redirecting everything to the homepage. It confuses visitors and crawlers.
- Running heavy local scans at peak hours. They compete with real visitors for PHP workers.
- Fixing only what the plugin sees. Menus, widgets and custom fields may sit outside the scan scope.
- Letting redirect chains grow. Re-point old rules directly at the final URL.
- Forgetting images. Missing media damages pages as much as dead text links.
- Using several full scanners at once. Pick one scanner plus a redirect manager and a periodic outside check.
Recommended Plugin Stacks
| Scenario | Stack |
|---|---|
| Beginner blog on shared hosting | Broken Link Checker (cloud engine) plus 404 to 301 |
| SEO-focused site already using AIOSEO | AIOSEO Broken Link Checker with its Redirection Manager |
| Privacy-first or staging-heavy workflow | DevDome Link Monitor, or Check for Broken Links, both scanning locally |
| Old blog full of dead references | Archivarix Recovery plus a manual review of the results |
| Migration or redesign | 404 to 301 for the log and redirects, plus any scanner for internal links |
| Outbound link audit for SEO | External Links Overview plus a periodic Search Console check |
Need help choosing the rest of your toolkit? Our list of must-have WordPress plugins covers security, speed and backups.
Broken Link Checker for WordPress: FAQ
What is the best broken link checker for WordPress?
There is no single winner. Broken Link Checker (cloud engine) and AIOSEO’s checker suit most people because the crawl runs off your server. DevDome Link Monitor and Check for Broken Links suit those who prefer local scanning, and 404 to 301 is the best add-on for redirects.
Do broken links hurt SEO?
A few dead URLs will not sink a site, because a 404 is a normal response for a page that is gone. Problems start when important pages link to dead URLs, when valuable backlinks point at missing pages and when crawlers waste requests on dead ends. Cleaning them up improves both user experience and crawl efficiency.
Will a broken link checker plugin slow down my site?
Local scanners use your server during a scan, so schedule them off-peak and lower batch sizes. Cloud scanners move the crawl elsewhere. Passive tools such as 404 to 301 only run on requests that already return a 404.
How often should I check for broken links?
Weekly for active blogs and shops, monthly for mostly static sites, and daily for a week after a migration or redesign.
Can a plugin fix dead links automatically?
Some can. Archivarix and Wayback Machine Link Fixer can swap in archived copies, and Check for Broken Links Pro can auto-fix permanent redirects. Automatic changes carry risk, so keep backups and review the results.
What is the difference between a 404 and a soft 404?
A 404 returns the correct “not found” status. A soft 404 shows a not-found message but answers 200, which misleads crawlers. Make sure your custom 404 page returns a real 404 status.
Should I redirect all 404 errors to my homepage?
No. Redirect each dead URL to the most relevant replacement, and let truly gone pages return a 404 or 410.
Can these plugins check external and internal links?
Yes. Broken Link Checker, AIOSEO, Check for Broken Links, DevDome, Archivarix and Link Checker check both. External Links Overview covers outbound links only, and 404 to 301 focuses on internal URLs people actually request.
How do I find broken links in WordPress without a plugin?
Use Google Search Console for URLs Google could not find, the W3C Link Checker for single pages, or a desktop crawler for a full audit. Fixes still need to be made inside WordPress.
Final Thoughts: Make Dead Link Checks a Habit
Dead links are a maintenance problem, not a disaster. Pick one scanner that fits your hosting and scope, add a redirect manager for URLs people already hit, and let alerts tell you when something breaks. Start with a full scan today, fix your 404s on high-traffic pages first and schedule the next check before you close the tab.
Found a plugin we missed, or a fix that worked for you? Share it in the comments so other readers can benefit.

