IsaacVarner Link Scanner
IsaacVarner Link Scanner
Description
Broken links cost you readers and search rankings. This plugin finds them, and it is built so that looking for them never costs you anything while you are not looking.
It does nothing at all until you open it and press Start.
The scan runs from the Tools screen, one small batch at a time, and stops the moment you close the tab. There is no scheduled task and no background worker. When the scan finishes, the plugin returns to using no resources.
How it works
- No background cron. The plugin registers no scheduled events of any kind.
- Each unique link is checked once, however many posts it appears in. A link in your footer that appears on five hundred pages is one request, not five hundred.
- HEAD requests first, falling back to a full request only when a server needs one, so remote sites are asked for as little as possible.
- Nothing runs on the front end. No code executes for your visitors. When idle, the plugin holds two small database tables and does nothing else.
Four results, not one
Not every link that fails an automated check is actually broken. Results are separated so you can tell the difference:
- Broken — the link is genuinely gone. 404, DNS failure, connection refused.
- Blocked — the server answered but refused an automated request (401, 403, 429). These normally work fine in a browser, so they are listed apart from real failures.
- Redirect — the link resolves, but somewhere else now. The destination is shown. If that destination is itself dead, the link is reported as broken instead.
- Working — verified reachable.
Any link you do not care about can be ignored, and it stays ignored.
Polite to the sites it checks
Checking a link means making a request to somebody else’s server. This plugin waits at least a second between requests to the same host, sets a short timeout, and identifies itself with a user agent containing your site address. These are not configurable.
Honest about incomplete scans
If a scan is stopped or interrupted, the plugin says so and tells you how many links were never checked, so a short list of broken links is never mistaken for a clean site.
Installation
- Install through Plugins Add New, or upload the folder to
/wp-content/plugins/. - Activate the plugin.
- Go to Tools IsaacVarner Link Scanner and press Start scan.
That is the whole setup. There is nothing to configure.
Screenshots

Broken links, grouped by URL and showing which post each one appears in.

A link that answered but refused an automated request is listed under Blocked rather than Broken, so a link that works for your readers is never reported as dead.

Before a scan. The plugin has registered nothing and is doing nothing.

A scan in progress. It runs only while this page is open and stops when you leave.
Faq
No. Nothing runs on the front end, and nothing is scheduled. The plugin does work only while you are on its page with a scan running.
The scan stops. Results found so far are kept, and the plugin tells you how many links remain unchecked so the report is not mistaken for a complete one. You can start a fresh scan whenever you like.
It depends on how many unique links you have. Because requests to the same host are deliberately spaced at least a second apart, a site with many links pointing at a handful of domains takes longer than the raw link count suggests. That pacing is intentional and cannot be turned off.
Some servers refuse requests that do not come from a normal browser, answering 401, 403 or 429 instead. The link is fine for your readers. It is listed separately so you do not spend time on links that are not actually broken.
Not in this version. It checks links in the content of your posts and pages.
This version is built and tested for single-site installations. It may work on a network install, but that has not been verified, so it is not claimed. Multisite support is planned once the single-site version is settled.
Yes. Uninstalling drops both database tables and removes all options. Nothing is left behind.
Reviews
Changelog
1.0.1
- Fixed: the results from a previous scan stayed on screen while a new scan was running, even though starting a scan clears them. The list is now replaced for the duration of the scan.
- Fixed: stopping a scan now refreshes the page, so the partial results and the unchecked count are accurate immediately.
- Fixed: status messages no longer break words in the middle when they wrap. The status column is also wider, so most messages now fit on one or two lines.
1.0.0
- First release.