Find the links that are really broken.
Awlware Link Checker finds broken links and images on your WordPress site and helps you fix them where they are used. It runs on your own server: no account, no cloud service, no link limits, and no false alarms from sites that simply refuse robots.
What it does
A broken link report you can trust
Most link checkers either flood you with false alarms or send your site's links to someone else's cloud. This one checks from your own server and tells you only what it can prove.
-
Server errors are confirmed first
Servers have short outages. A 5xx error, a refused connection or a timeout is shown as Unconfirmed and checked again after an hour (then 2, 4… hours). It becomes Broken only if it fails again, so a five-minute outage doesn't produce a false alarm.
-
“Blocked” is not “broken”
Social networks, marketplaces and job boards often answer robots with 403, 429, 999 or a captcha page while the page works fine in a browser. Those links go to a separate Blocked list and are never counted as broken.
-
An honest User-Agent
Every request says who is asking:
AwlwareLinkCheckerwith a link to this page. The plugin never pretends to be a browser, so site owners can see what is checking them and decide how to answer. -
No external service, no account
Checks run inside your WordPress. There is no sign-up, no API key, no telemetry and no license check, and your list of links is never sent to us or anyone else. The only requests it makes are to the links in your own content.
-
Fix links in place, with Undo
From the report, replace a URL or unlink it in one place or everywhere it is used. Changes go through the normal WordPress API, posts keep a revision, and every change is logged and can be undone from the Log tab.
-
Light on your database
Nothing runs on visitor page views. Checks run in short background slices, links to your own pages are verified from the database instead of over HTTP, and tables are created and updated only through dbDelta under a lock, never on visitor requests.
Coverage and load
It looks where links actually are
Posts, pages and public post types (content and excerpts), classic menus, block theme navigation, synced patterns and templates, the custom fields you choose, and Text, Custom HTML and Block widgets. Images (including srcset), iframes, video and audio sources are checked too.
-
2.1 s
to index 2,000 posts with 26,276 links, using 212 SQL queries, on our test site.
-
4,848
unique URLs from that site checked in 200–264 seconds, with about 1,000 SQL queries.
-
20 s / 5 min
Default background slice through WP-Cron. Also available as WP-CLI commands for your own cron job.
Measured on a local test site (2,000 generated posts and a simulated web of 40 domains). Your numbers depend on your hosting and on how fast the linked sites answer.
Accuracy
How a link is judged
Each link gets exactly one status. Only the first one counts as broken.
-
Broken
404 or 410, the domain does not exist, a redirect loop, a missing anchor on one of your pages, or a server error or refused connection that repeated on separate checks.
-
Unconfirmed
A server error or refused connection on the first check. Checked again later, and Broken only if it fails again.
-
Timeout
The server did not answer on repeated checks.
-
Blocked
Anti-bot protection (Cloudflare, PerimeterX, DataDome, Akamai, Imperva, Sucuri, AWS WAF, captcha pages), rate limiting (429), login required (401), or a site known to refuse automated checks. Open it in a browser to confirm.
-
Unknown
The answer does not prove anything, for example a 403 without anti-bot signs or a TLS error.
-
Redirect and OK
The link works. For redirects, the report shows the final address in case you want to update it.
For site owners
About our crawler and its User-Agent
If you found this page through your server logs: a WordPress site that links to one of your pages uses Awlware Link Checker to make sure the link still works. The requests look like this:
Mozilla/5.0 (compatible; AwlwareLinkChecker/1.0.0; +https://awlware.com/link-checker/)
What it is
- It is not a search engine and not a central crawler. The plugin runs inside each WordPress site that installed it, and requests come from that site's server, so there is no single IP range. Awlware runs no crawling servers and receives no data from the plugin.
- It requests only URLs that appear in that site's own content: links, images, embeds. It does not follow links on your pages or crawl your site.
- It sends
HEADfirst andGETonly when needed (for example, to check an anchor or whenHEADis not supported). Redirects are followed one hop at a time.
How often
- One request at a time to your site from any one WordPress site, with a pause between requests, and at most three attempts per URL per check.
- With default settings, a working link is checked again every 7 days, a broken one every 2 days and others every 3 days. A failed link is retried after 1, 2, 4… hours to confirm the failure.
- A host that does not resolve or refuses connections is not asked again in the same run.
How to exclude your site
Because the checker runs on other people's WordPress sites, we cannot switch it off from here. You can answer it however you like at your server or CDN. Match the AwlwareLinkChecker token in the User-Agent and reply with 403 or 429:
# nginx
if ($http_user_agent ~* "AwlwareLinkChecker") { return 429; }
# Apache (.htaccess)
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} AwlwareLinkChecker [NC]
RewriteRule ^ - [R=429,L]
The plugin treats 429 as Blocked and a plain 403 as Unknown, never as Broken, so the sites that link to you aren't told your pages are gone. Please don't answer with 404 or 410: those mean “this page does not exist”, and the link would be reported as broken.
The plugin doesn't read robots.txt. Like a browser following a link, it only requests pages that someone has linked to, one at a time. If our checker causes you a problem, email support@awlware.com with your domain and, if you can, a few log lines. We read every message and can add your domain to the built-in list of sites that refuse automated checks.
The whole checker is free
The free plugin on WordPress.org is the full link checker, with no limit on links or checks. Pro is an optional add-on for reporting.
Link Checker
Free
From WordPress.org. No account, no link limits.
- Posts, pages, menus, block navigation, patterns, templates, widgets and custom fields
- Images, iframes, video and audio sources
- Confirmed server errors and a separate Blocked list
- Edit URL and Unlink in one or all places, with a log and Undo
- WP-CLI:
scan,index,report,where,stats
Link Checker Pro
Coming soon
An add-on to the free plugin. Everything in Free stays free.
- Everything in Free
- CSV export of the report, with the current status, search and filters
- Email digest, daily or weekly, with the links that became broken and where they are used
There is nothing to buy yet. When Pro is available, its full price will be shown here before anyone pays.
Link Checker FAQ
Frequently asked questions
When can I install it?
We are preparing it for the WordPress.org plugin directory. Once it is published there, you can install it from Plugins → Add New in your dashboard. Ask us to tell you when it's live.
Does it send my site's data anywhere?
No. The list of links, their results and the log of fixes are stored in the plugin's own tables on your site. The only outgoing requests are the link checks themselves, to the URLs in your content. There are no Awlware servers involved, no telemetry and no remote lists: the list of anti-bot sites ships with the plugin.
Why is a link “Blocked” and not “Broken”?
The site refused the automated check (anti-bot protection, a rate limit or a login). The page most likely works for people. Open it in your browser; if it really is gone, fix it, otherwise leave it. Blocked links are never counted as broken.
Will it slow down my site?
No work is done on visitor page views. Background slices are short (20 seconds every 5 minutes by default), links to your own site are verified from the database, and results are written in batches. On a test site with 2,000 posts and 26,000 links, building the index took about 2 seconds.
WP-Cron is disabled on my server. Will it still work?
Yes. Run wp cron event run --due-now from a system cron job every 5 minutes, or use wp awlware-lc scan. While the report page is open, checks also run in the browser tab.
Does it change my content?
Only when you click Edit URL or Unlink. Changes go through the normal WordPress API (posts get a revision), are logged for 90 days, and can be undone from the Log tab as long as the content wasn't edited since.
I use another broken link checker. How do I switch?
Deactivate the old plugin, activate this one, and add the custom field names you want scanned under Tools → Link Checker → Settings. There is nothing to import: the index is built from your content automatically.
What does it need?
WordPress 6.4 or later and PHP 7.4 or later. All requests go through the WordPress HTTP API, so proxies, WP_HTTP_BLOCK_EXTERNAL and WP_ACCESSIBLE_HOSTS are respected. Private, loopback and reserved addresses are never requested.
What is removed when I delete the plugin?
By default, all plugin tables, settings and scheduled events. To keep the data, turn off “Delete all plugin data” in the settings before deleting the plugin.
Coming soon to WordPress.org
Want to know when it's live?
Send us an email and we'll write back once Awlware Link Checker is in the WordPress.org plugin directory. Questions and feature requests are welcome too.
Or write to support@awlware.com with the subject “Link Checker”. We only use your address to reply.