Dragon Broken Links

Find and fix broken links with a local engine — unlimited checking, no cloud account, no credits.

Requirements

WordPress 6.2+, PHP 8.0+. No external services: all checking runs on your own server.

Getting started

  1. Activate the plugin and open Tools → Broken Links.
  2. Press Scan now. The scan runs in bounded batches: it extracts every link, image and clickable URL from your published content, dedupes them (each unique URL is checked once, however many posts share it), then checks them.
  3. Watch the summary line — when it reads "scanned N of N posts" the first pass is complete. Background re-checks continue on WP-Cron.

How checking works

  • Internal links are never fetched over HTTP. They resolve against your own database, so drafts and trashed pages are detected instantly and a slow site can't false-flag itself. A URL that doesn't map to any post (custom routes, archives) is left as OK rather than guessed at.
  • External links are fetched politely (throttled per host) with a HEAD request and a GET fallback. Redirects are followed hop-by-hop with safety checks on every hop.
  • Three buckets, not one: clear failures (404, 410, DNS errors) become Suspected and are only promoted to Broken after repeated failures — a flaky server never instantly pollutes your report. Ambiguous responses (403, 429, timeouts, server errors) go to Needs review and are never auto-promoted, because sites that block bots aren't broken.

Fixing from the report

Each row offers:

  • Edit link — change the URL everywhere it appears. The editor is block-aware: Gutenberg markup is preserved exactly.
  • Remove link — unlink the anchor but keep its text (or keep the image, for image links).
  • Re-check — queue an immediate fresh check.
  • Dismiss — hide a link you've decided is fine. Dismissed links stay dismissed across scans.
  • Create redirect — if Dragon Redirect Manager is active, turn a broken internal URL into a redirect in one click.

If the site previously ran Broken Link Checker, Tools → Broken Links → Settings carries your dismissed links across so you don't re-triage them. Nothing is removed from the other plugin.

WP-CLI

wp dragon-broken-links scan      # run a full scan
wp dragon-broken-links list      # list broken/review links
wp dragon-broken-links recheck   # queue everything for re-check

Data & privacy

The plugin stores its link index in two tables of your own database. Nothing leaves your server except the outbound link checks themselves. Uninstalling keeps your data by default so a reinstall picks up where you left off; tick Delete all data on uninstall in Settings if you want removal instead.

Troubleshooting

  • Nothing gets checked between visits — WP-Cron only fires on traffic. Use "Scan now", the WP-CLI command, or a server cron.
  • A working site shows as Needs review — its firewall is blocking automated checks (common with 403/429). That's what the bucket is for: eyeball it and dismiss.

Adds email/signed-webhook alerts on new broken links, bulk fixing and site-wide domain find-and-replace, scheduled monitoring with history and CSV export, and deep scanning of custom fields, comments, custom post types and WooCommerce products.

Uninstall

Deleting the plugin keeps all its data by default, so a reinstall picks up where you left off. To remove everything on uninstall, tick Delete all data on uninstall in the plugin's settings first (this sets the dragonbrokenlinks_delete_data_on_uninstall option).