WordPress has a plugin for everything. That’s a blessing, and also how you end up with a site that loads like it’s powered by a lemon.

If you’re trying to find broken links on a WordPress site, you have two main options: scan from inside WordPress (plugin) or scan from outside (web tool / crawler). Here’s the honest comparison.

My mental model: plugins can feel like bolting extra weight onto a race car. Pit‑crew rule: keep the site light, do diagnostics off-track, and only add dashboard tooling when it earns its keep.

TL;DR

  • Want the simplest and safest for performance? Use an external web tool.
  • Want in-dashboard editing and scheduled scans? A plugin can help (but watch load).
  • Running a big audit? External scan first, then fix internally.

WordPress broken link checker plugins

Pros

  • Runs inside WordPress (can see internal content and sometimes draft areas).
  • Convenient editing (fix links right from the dashboard).
  • Scheduling (runs periodically without you thinking about it).

Cons

  • Performance overhead (crawling is work, and your server pays the bill).
  • Hosting limits (shared hosts and managed WP can throttle long scans).
  • WP cron weirdness (scheduled tasks are not always reliable).
  • False positives (rate limits, temporary 403/429s, or flaky third-party sites).
  • More moving parts (one more plugin to keep updated, compatible, and secure).

Web tools / external crawlers

External tools scan your site like a user/bot would: from the outside. That means no plugin install and no server load from crawling.

Pros

  • No install (you can run it today).
  • No WP performance hit (the crawling happens externally).
  • Exports (CSV results are perfect for fixing or delegating).

Cons

  • Public access required (if content is gated behind login, it may be missed).
  • Some JS-heavy links can be missed unless the crawler renders JS.

If you want a simple external scan with exportable results, use TinyUtils Dead Link Finder.

What each approach actually scans

This is the part people miss, and it explains a lot of “why are our reports different?” arguments:

  • Plugins often scan your WordPress database: posts, pages, and sometimes custom fields. They can catch links that aren’t publicly crawlable yet (drafts, private pages).
  • External tools crawl what a visitor can reach. They’re better at catching real-world problems (template links, nav/footer issues, redirects/404s), but they won’t see content behind a login wall.

They answer slightly different questions. Pick the one that matches the problem you’re trying to solve: “what’s broken for visitors” vs “what links exist in our WP content.”

What to look for in any report (plugin or web)

A good broken-link report tells you exactly what to fix and where to fix it. If the report is vague, the fix-work becomes vague. Look for these fields:

  • Broken URL + status code (404, 410, 500, timeout).
  • Found on (the page/post where the link lives).
  • Link text (optional, but useful when the same URL appears 50 times).
  • Final URL (helpful when there are redirects or chains).
  • Export (CSV at minimum, so you can sort by impact and delegate).

When to pick each (quick guide)

Your situation Pick Why
Small blog, occasional checks Web tool Fast, no overhead, easy exports
You need in-dashboard fixing Plugin Convenient editing inside WP
High-traffic site, performance sensitive Web tool No server load from crawling
Agency doing audits + handoff Web tool + exports CSV handoff is cleaner than screenshots

A workflow that doesn’t make you hate your life

If you have more than a handful of broken links, treat it like a bug triage problem:

  1. Scan externally first to catch the high-impact stuff (nav/footer, popular pages, obvious 404s).
  2. Export the report so you can sort by “where it’s found” and fix in batches.
  3. Fix inside WordPress (or your editor) so internal links don’t rely on redirects long-term.
  4. Re-scan to confirm you didn’t create new issues while fixing old ones.
  5. Only then consider a plugin if you want ongoing monitoring inside the dashboard.

The big win is avoiding “hero mode.” Fix the worst offenders first (nav/footer, top pages), then chip away in batches. A weekly 20‑minute cleanup beats a single exhausting weekend once a year.

If you want my bias in one sentence: I start outside, because it matches what users (and Google) experience. Then I fix inside WordPress, because that’s where the content actually lives. Plugins are worth considering after the site is already healthy. For a 2am crisis, start with an external scan and a focused fix list.

Migration tips (so you don’t make it worse)

Treat broken links like a bug list: sort by impact, fix the obvious stuff first (nav/footer/top pages), then re-scan. Aim for momentum: the backlog shrinks, and new broken links get caught before they rot for months.

  • Don’t scan during peak traffic. Crawls can spike CPU and DB load.
  • Export results. Treat it like a bug list, not a one-time report.
  • Fix internal links directly. Redirects are useful, but internal links shouldn’t rely on them forever.
  • Re-scan after fixes. Broken links are a regression-prone feature.
  • Watch redirects vs 404s. A 301 isn’t “broken,” but it’s still worth fixing internal links so you don’t chain redirects forever.
  • Expect some false alarms. Some sites rate-limit crawlers and respond with 403/429 even though the page is “fine” for normal users.

Common WordPress link traps

  • Menus + footer widgets: one broken link here replicates across every page.
  • Old embeds: YouTube/Vimeo/Twitter embeds that changed URLs or got removed.
  • Media library moves: images and PDFs that got reorganized during a migration.
  • Button shortcodes: old builders and shortcode plugins that left hard-coded URLs behind.
  • Author bio / sidebar blocks: sneaky “set it once in 2019” content that still ships everywhere.

If you do run a plugin, keep it gentle

  • Run scans off-hours (late night / early morning) so you don’t punish real visitors.
  • Throttle if possible (fewer simultaneous checks, longer delays).
  • Disable features you don’t need (email alerts can turn into spam fast).
  • Remove it later if it’s a one-time cleanup. Fewer plugins, fewer surprises.

Next steps

If you want the lowest-friction option, start with TinyUtils Dead Link Finder. Export the results and fix the top issues first (nav, footer, top pages). That’s usually 80% of the payoff.