Plugin screenshot thumbnail 1/6
Plugin screenshot thumbnail 2/6
Plugin screenshot thumbnail 3/6
Plugin screenshot thumbnail 4/6
Plugin screenshot thumbnail 5/6
Plugin screenshot thumbnail 6/6

Link Audit

"That link goes nowhere"

A reader emails to say the link in an old article goes to a 404. A supplier moves their website and every product page is still pointing at the old one. An editor pasted a link three years ago and the page it went to is long gone. Craft stores the link you give it. It doesn't go back later to see whether the address still answers.

Link Audit does. It reads the links out of your stored content, checks each unique address once, and lists every entry, field and site carrying the broken ones. Each broken link has an Edit link that opens the entry scrolled to the field holding it, and a panel on the edit screen lists that page's broken links, so an editor can fix them where they work. On a site with thousands of them, the Overview suggests where to start, beginning with the few addresses whose one fix clears the most places.

Where to fix it

A report you can believe

Most link checkers go page by page: load a page, check its links, move on. On a site of any size that means asking the same supplier about the same footer link thousands of times in one run, until they block you. Then everything they host shows as broken and nobody trusts the report again.

Link Audit keeps one record for each unique address and notes every place it appears, so the footer link on 3,000 pages is checked once. It keeps its requests down to a couple at a time per host, and backs off when a host asks for room.

It also knows a broken link from a site that won't talk to robots. LinkedIn, Cloudflare and their kind refuse automated requests however healthy the link is, so those go on their own Unverifiable list and never count as broken. A link that doesn't answer at all is only called broken after it has failed several times in a row, because a server that's down for an afternoon usually comes back. Every address sits on one of eight verdicts rather than two, so the Broken list only holds links that really are broken.

Free, and what it doesn't do

It's free, under the MIT licence.

It reads stored field values, not rendered pages, so it sees links on entries with no public URL and can tell you which field each one came from. Links hard-coded into templates aren't in your content, so they're only found by the optional crawl of rendered pages, which is off by default because fetching every page is slow.

Safe to point at your content

Every URL it checks came from something somebody typed into a field, so it's careful about where it sends requests.

  • A guard refuses any address on a private or reserved network, and checks again on every redirect hop
  • Usernames and passwords pasted into a link are stripped off before it's stored
  • Three permissions: viewing reports, running scans, and ignoring or restoring links
  • Reports only show the sites a user can edit, and a page they can't view appears without its title or field
  • TLS certificates are verified, and the checker identifies itself so a host can allow-list it

What's in it

FeatureWhat it does
One check per addressHowever many entries use it
Where it's usedEvery entry, field and site an address appears in
Eight verdictsWorking, Redirect, Broken, No Answer, Unverifiable, Ignored, Not safe to request, and Not checked yet
RechecksWorking links trusted for 30 days and broken ones rechecked the next day, so after the first scan only stale links are revisited
Internal linksChecked against your own elements and routes rather than over HTTP, so a Retour redirect counts as a redirect
Entry panelA panel on the entry edit screen listing that page's broken links
IgnoresPark the links you've decided not to chase, and bring them back later
Excluded fieldsLeave out fields full of links nobody will fix, like a legacy body kept after a migration
AlertsEmail or Slack when new broken links turn up
Console commandsFull scans, incremental scans on a cron, single rechecks and CSV exports
CSV downloadWhatever list you're looking at, filters and all, a row per place

What it reads

  • Rich text (CKEditor and Redactor), including links inside nested entries
  • Native Link fields and URL fields
  • Hyper fields
  • Matrix and content blocks, however deeply nested
  • Commerce variants, along with their product
  • Navigation nodes, if you have verbb/navigation installed
  • Image and iframe sources in rich text, if you turn them on

It needs Craft CMS 5.6 and PHP 8.2 or later.

Accessibility

What's been checked, and anything that still needs work, is in the accessibility statement.

Installation Instructions

To install this plugin, copy the command above to your terminal.

Reviews

This plugin doesn't have any reviews.

Active Installs
10
Version
1.0.0-beta.8
License
MIT
Compatibility
Craft 5
Last release
September 28, 2026
Activity (30 days)
0
Closed Issues
0
Open Issues
0
Merged PRs
0
Open PRs