Description
Beplus Link Status Scanner scans all your published content for broken links, redirects, and unreachable URLs. It runs in the background using WordPress Cron so your site performance is never impacted.
Key Features
- Automatic background scanning — Uses WP-Cron to scan posts and check links on a schedule you control.
- Multi-source scanning — Detects broken links in post content (
<a href>), broken images (<img src>), Gutenberg block attributes (embed, button, image, file blocks), ACF custom fields, navigation menus, and widget areas. - Link type badges — Every link is tagged by type (Anchor, Image, Block, ACF, Menu, Widget) so you know exactly where a broken URL came from.
- Broken link report — A clean admin table listing every broken link: URL, type, HTTP status code, the source it was found in, and when it was last checked.
- Status filters — Quickly filter links by All, Broken, Redirect, OK, Unchecked, or Ignored.
- Bulk actions — Re-check, ignore, or delete multiple links at once.
- Inline link replace — Swap any broken URL directly from the admin table without editing the post manually.
- Export CSV — Export your link data to a CSV file, filtered by status and link type, from the Export tab.
- Real-time progress — Scan and check operations show a live progress bar so you always know how far along the process is.
- Email notifications — Get a digest email listing new broken links after each cron check run.
- Configurable settings — Set check frequency (daily/weekly/monthly), request timeout, links per cron run, and excluded URL patterns.
- Dashboard widget — A quick summary of total, broken, redirect, and OK links on your WordPress dashboard.
- Scan on save — Newly published or updated posts are scanned immediately when saved.
How It Works
- When a post is published or updated, Link Status Scanner extracts all URLs from the content — anchors, images, Gutenberg block attributes, and ACF fields — and stores them in the database.
- A scheduled cron job also scans navigation menus and widget areas.
- A second cron job checks each stored URL by making an HTTP HEAD request and recording the response code.
- Broken links (4xx, 5xx, connection errors) are flagged in the admin report with their link type badge.
- If email notifications are enabled, you receive a digest email listing newly broken links after each check run.
Privacy
Beplus Link Status Scanner sends HTTP requests to external URLs in order to check their status. No personal data is collected or shared.
About BePlus
This plugin is developed and maintained by BePlus, a WordPress and Shopify development studio with 10+ years of experience building themes and plugins for nonprofits and eCommerce brands.
Learn more at beplusthemes.com.
External services
This plugin connects to external URLs in order to perform its core function of checking link status.
When you run a scan (manually or via the scheduled WP-Cron check), Beplus Link Status Scanner sends an HTTP HEAD request (falling back to a GET request if HEAD is not supported) to every URL it finds linked from your own posts, pages, menus, and widgets. These destination URLs are determined entirely by your own site’s content — they are not a fixed third-party service chosen by the plugin — and requests are sent only to check whether each URL is reachable and to record its HTTP response status code.
No personal or user data is included in these requests: only the target URL and a generic User-Agent header identifying the plugin and WordPress version are sent.
Because checking the status of links is the plugin’s entire purpose, this outbound request behavior cannot be disabled independently — it can only be stopped by deactivating the plugin.
Screenshots


Installation
- Upload the
beplus-link-status-scannerfolder to/wp-content/plugins/. - Activate the plugin through the Plugins menu in WordPress.
- Go to Settings > Link Status Scanner to view the broken links report.
- Click Scan Posts Now to run an immediate scan, then Check Links Now to check their HTTP status.
FAQ
-
Does this plugin slow down my site?
-
No. All scanning and HTTP checking happens through WP-Cron, which runs in the background. The only admin-side actions are when you manually trigger a scan or re-check.
-
What types of links are scanned?
-
The plugin scans
<a href>anchors,<img src>images, Gutenberg block attributes (embed URL, button URL, image link, file link), ACF custom fields (URL, link, image, and file field types), navigation menus, and classic/block widget areas.mailto:,tel:,javascript:, and anchor-only#links are automatically skipped. -
Can I exclude certain domains or URLs?
-
Yes. Go to the Settings tab and add URL patterns (one per line) to the Excluded URL Patterns field. Any link containing that pattern will be skipped.
-
Why does WP-Cron not run on schedule?
-
WP-Cron triggers on page loads. On low-traffic sites it may not run on time. For reliable scheduling, disable WP-Cron and add a real system cron job:
*/5 * * * * curl -s https://yoursite.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1 -
What does “Redirect” status mean?
-
A redirect (301, 302, 307, 308) means the URL has moved. The link still works but you may want to update it to the final destination for SEO.
-
Does the plugin work with ACF?
-
Yes. If Advanced Custom Fields is active, the scanner reads URL, link, image, and file field types. ACF is not required — the scanner simply skips ACF fields when ACF is not installed.
-
Can I export the results?
-
Yes. The Export tab lets you download a CSV file of all tracked links. You can filter by status (Broken, Redirect, OK, etc.) and by link type (Anchor, Image, Block, ACF, Menu, Widget) before exporting.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Beplus Link Status Scanner” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Beplus Link Status Scanner” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.2.4
- Improvement: Confirmed compatibility with WordPress 7.1.
- Fix: Hardened sanitization of the CSV export action parameter and clarified direct filesystem/SQL usage that is required for CSV streaming and prepared queries.
1.2.3
- Fix: Bulk actions (re-check, ignore, delete) could silently fail on sites running WordPress in a language other than English due to a security-check mismatch.
- Fix: The “Link deleted” confirmation message wasn’t showing up after deleting a link from the report table.
- Fix: Exported CSV files are now protected against formula/CSV injection when opened in spreadsheet apps like Excel or Google Sheets.
- Fix: Root-relative and relative links (e.g.
/contactor../about) found in your content are now checked instead of being silently skipped. - Improvement: Renamed the internal “scan frequency” setting to “check frequency” to more accurately reflect that it controls how often links are checked, not how often content is scanned. Existing settings are migrated automatically — no action needed.
- Improvement: Hardened a few admin-side output and script details for better security and code quality.
- Added an “External services” section to the readme documenting the plugin’s link-checking HTTP requests.
1.2.2
- Readme update: updated the “About BePlus” section, removed a promotional FAQ entry.
1.2.1
- Readme update: added an “About BePlus” section, shortened the short description.
1.2.0
- New: Multi-source scanning — broken images (
<img src>), Gutenberg block URLs (embed, button, image, file blocks), ACF custom fields, navigation menus, and widget areas are now scanned in addition to post content anchors. - New: Link type column — every link in the report table is tagged with a color-coded badge (Anchor, Image, Block, ACF, Menu, Widget).
- New: Export CSV tab — export all tracked links to a CSV file, with filters by status and link type. File includes UTF-8 BOM for Excel compatibility.
- Improvement: Scan and check operations now show a real-time progress bar.
1.1.0
- New: Inline replace link — click “Replace” on any link row to swap the URL directly from the admin table without editing the post manually.
- The replacement updates both the database record and the actual post content.
- Status is automatically reset to “Unchecked” after replacement so the new URL gets verified on the next check.
1.0.0
- Initial release.
- Automatic post scanning on save and via WP-Cron.
- Admin report with WP_List_Table, status filters, and bulk actions.
- Settings page (frequency, timeout, links per run, excluded patterns, email notifications).
- Dashboard widget.
- Email digest notification for new broken links.
