Directory / plugin

Dragon Broken Links – Broken Link Checker & 404 Fixer

v1.2.0 · by Dragon Core

Broken link checker that runs on your own server: find and fix dead internal, external and image links. No cloud, no credits, no monthly limits.

About this plugin

Dragon Broken Links is a broken link checker that scans your posts, pages and every other public post type (WooCommerce products included) for links, images, embeds and media that no longer work, and lets you fix them without leaving WordPress. The checking runs on your own server – there is no third-party checking service, no account, no per-link credits and no monthly quota.

Why this one

Most broken-link plugins either meter the free version to a few hundred links a month or push the real checking into a paid cloud subscription. Dragon Broken Links does the opposite: internal and external checking is free and unlimited, and it is built to be a good citizen on your server and on the sites it checks.

What it checks

  • Links, images, embeds and media in every published post, page, product and custom post type – including inside reusable (synced) patterns, wherever they sit in the layout – with no link limit. Narrow the list of post types under Settings if you want to.
  • Internal links without touching your site – resolved against your database: links to deleted, trashed, unpublished or renamed content, and images missing from your uploads folder, are flagged instantly with no requests to your own server.
  • External links politely – one request per unique URL no matter how many posts use it, a few at a time, never more than a handful to the same site in one go.
  • Custom fields and comments, if you want them – tick Custom fields or Approved comments under Settings to also check web addresses in public custom fields and links in approved comments. Both are off by default because each adds a database query for every post read. A post is read again when one of its comments is approved, edited or removed.

No false alarms

  • A link is only marked Broken after a hard failure (404, 410, dead domain, connection refused) is confirmed on three separate checks.
  • A first failure shows as Suspected and is re-checked before it counts.
  • Ambiguous answers (bot-blocking 403s, rate limits, timeouts, server errors) go to Needs review, never counted as broken.
  • Servers that refuse HEAD requests get a second, body-free GET before the answer counts.

Fix in place

  • Edit a link’s URL or remove the link (keeping its text) straight from the report – block-editor aware, so both the block data and the rendered HTML are updated together and the editor never reports invalid content.
  • Dismiss a URL everywhere it appears, and restore it later from the Dismissed view.
  • Re-check any single link on demand.
  • Scan now with live progress, plus a background re-check every 15 minutes that works through every link on the cadence you choose – daily, weekly, monthly or never (a very large site, or slow hosts, can take longer).
  • WP-CLI: wp dragon-broken-links scan, list and recheck for large or headless sites.

Bulk tools

  • Replace a domain across every broken, suspected and needs-review link at once – for a site that moved, or a linked site that changed its address. Only the domain changes; the rest of each link stays as written, and on posts and pages each change creates a revision you can restore. Links it cannot change (in custom fields, comments, synced patterns, posts you cannot edit, or pages built with Elementor, Beaver Builder or Bricks) are counted, and page-builder pages are named so you can fix them in the builder.
  • Dismiss all needs-review links in one click.
  • Export to CSV: the broken and needs-review links, one row for each place a link is used, with status, type and post.

Alerts and scheduled scans

  • Email alerts (off until you switch them on): when a scan finds links that have newly become broken, one email lists them. It goes to the site admin email, or to the addresses you enter. No email is sent when nothing new broke.
  • Scheduled full re-scan: every post is read again in the background, weekly by default (or daily, or off), so links that reach a post without it being saved – imports, custom fields, changes made outside the editor – are found too.

Secure by design

External checks refuse to reach private, internal, link-local, cloud-metadata and reserved addresses, re-validate every redirect hop, pin the connection to the address that was validated, and never read more than the first few kilobytes of a response.

Works with Dragon Redirect Manager

If Dragon Redirect Manager is active, a broken internal link gets a one-click Create redirect action, so you can point the old address somewhere sensible without leaving the report.

Free and unlimited

Everything above is free and unlimited – no link cap, no cloud account, no credits.

Multisite

Works per site. Each site has its own report, settings and background re-check; there is no network-wide view.

External services

This plugin makes no connection to Dragon Core or any third-party checking service, and sends no data about your site anywhere.

To test an external link it sends an HTTP HEAD request (then a GET, if HEAD is refused) to that URL from your own server, once per unique URL, with the User-Agent Mozilla/5.0 (compatible; DragonBrokenLinks/<version>; +https://dragoncore.ltd/plugins/dragon-broken-links). The linked site therefore sees a normal request for that page coming from your server’s IP address; nothing about your site, its content or its users is included. Internal links are checked against your database and are never requested. Requests to private, loopback, link-local and reserved addresses are refused.

If you switch on email alerts, the alert email is sent with WordPress’s own mail function (wp_mail()) to the addresses you enter (or the site admin email), through whatever mail setup your site already uses. It contains your site’s name, the broken links and a link to the report. The plugin itself makes no other connection for it.

Credits

The WordPress.org listing icon is drawn with glyphs from Lucide (https://lucide.dev), ISC License. Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (https://feathericons.com, MIT License). All other copyright (c) for Lucide are held by Lucide Contributors 2022. The plugin itself does not include these icons.

Plugin tags