All guides

Site health

Broken Link Checker alternatives for WordPress, and what to look for in one

Why people leave the cloud-based Broken Link Checker, what actually matters in a link checker (local engine, no credits, no false positives, safe fixing), and where Dragon Broken Links fits.

5 min readUpdated

Why people go looking

For years the default answer to "which broken link plugin" was Broken Link Checker, now maintained by WPMU DEV. Its legacy engine checked links from your own server and was notorious for the load it put on shared hosting. The replacement moved checking into WPMU DEV's cloud service: your site's links are checked from their infrastructure, results are pushed back, and the free tier has limits on what and how often. At the time of writing that is what the plugin defaults to.

For some sites that is fine. The reasons people search for an alternative tend to be:

  • They do not want a third-party service reading their link graph, or a cloud account tied to a client site.
  • Limits. Free tiers meter links or scans; anything beyond that is a subscription. The same pattern shows up in SEO suites that bundle a link checker: All in One SEO's free edition, for example, caps how many links it will check per month and reserves external checking for its paid plan.
  • False positives. A checker that marks a link Broken on a single 403 from a bot-blocking firewall fills the report with noise and gets ignored.
  • Fixes that break content. Rewriting a URL in the post HTML without touching the block data leaves the block editor reporting invalid content, or quietly reverting the change.
  • Nagging. Upsell notices on every screen.

When we built Dragon Broken Links we wrote these down first. They make a reasonable checklist whatever you pick.

Where the checking runs

Local means the requests come from your own server and nothing about your site goes anywhere else; cloud means a third party does the work and sees your link list. Local costs you a little server time; cloud costs you a dependency and, usually, a subscription. For agency-managed client sites, local is easier to justify in a contract.

The one thing a checker should never do is make HTTP requests to your own site for every internal link. On single-worker hosting that can deadlock the site; everywhere else it is wasted load. Internal links can be resolved against the database: does this URL map to published content, is that content trashed, does that image exist in uploads. It is faster, it is accurate about drafts and renamed slugs, and it puts no load on the front end.

How politely it treats other people's servers

One request per unique URL no matter how many posts share it, a handful in flight at once, a cap per destination site, HEAD before GET, and a small read limit. A checker that fetches full pages from a thousand external sites in a burst is a nuisance, and the sites it hits start blocking your server.

What counts as broken

Look for a checker that distinguishes a confirmed hard failure from a single one, and both from an ambiguous answer such as a 403, 429, timeout or 500. If everything is one red "Broken" list, the list stops being read.

How it fixes

If the site uses the block editor, a fix has to update the block's JSON attributes and the rendered HTML together, preserve escaping, and leave a revision behind. Anything that edits the post content as a string will eventually corrupt something.

Limits and account requirements

Read the pricing page before the feature list. "Free" with a link cap is a trial.

It is the local, unlimited option: internal and external checking free, no cloud account, no credits, no per-link or per-scan quota, built to be a good citizen on your server and on the sites it checks.

  • Internal links resolved against the database, never fetched; missing uploads detected by looking for the file.
  • External links checked politely: deduped, a few at a time, at most three per destination site in a batch, HEAD then body-free GET, never more than 64 KB read, redirects re-validated hop by hop, private and cloud-metadata addresses refused.
  • Three buckets: Broken (confirmed three times), Suspected, Needs review. Plain-English reasons on every row.
  • Block-aware Edit URL and Remove link, with a revision every time.
  • Background re-checks on the cadence you choose, re-scan on save, WP-CLI for large or headless sites.
  • Import from Broken Link Checker: your dismissed links come across, so the switch does not mean re-triaging.

Unlimited local checking: every broken internal, external and image link, why it failed, and which post it is in.
Unlimited local checking: every broken internal, external and image link, why it failed, and which post it is in.

Dragon Broken Links Pro is a one-time price rather than a subscription and adds the operations layer: email, Slack and signed-webhook alerts, bulk fixing and domain find-and-replace, scheduled scans with history and CSV export, and scanning of links held in custom fields and comments.

When a cloud checker is the right choice

Honestly: when your host is so constrained that even polite outbound requests are a problem, or when you specifically want checks to originate from a different network than your server (to catch geo-blocking, for instance). Both are unusual. For everything else, keep the work on your own server and keep the data there too.

Switching

  1. Install Dragon Broken Links alongside the old plugin. They do not interfere.
  2. Open Tools, then Broken Links, then Settings and import your dismissed links.
  3. Run Scan now and compare the two reports for a week.
  4. Deactivate the old plugin. Nothing in it is needed by the new one.

The step-by-step on triage and fixing is in how to find and fix broken links in WordPress.

Site health

How to find and fix broken links in WordPress

Find broken internal, external and image links across a WordPress site, triage them without false alarms, fix them safely in the block editor, and stop new ones appearing.

5 min readRead