Title: BuildWithHumza Broken Link Checker
Author: Mohammad Humza
Published: <strong>October 1, 2026</strong>
Last modified: October 1, 2026

---

Search plugins

![](https://ps.w.org/buildwithhumza-broken-link-checker/assets/banner-772x250.png?
rev=3723408)

![](https://ps.w.org/buildwithhumza-broken-link-checker/assets/icon-256x256.png?
rev=3723408)

# BuildWithHumza Broken Link Checker

 By [Mohammad Humza](https://profiles.wordpress.org/mohammadhumza/)

[Download](https://downloads.wordpress.org/plugin/buildwithhumza-broken-link-checker.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/buildwithhumza-broken-link-checker/#description)
 * [Reviews](https://wordpress.org/plugins/buildwithhumza-broken-link-checker/#reviews)
 *  [Installation](https://wordpress.org/plugins/buildwithhumza-broken-link-checker/#installation)
 * [Development](https://wordpress.org/plugins/buildwithhumza-broken-link-checker/#developers)

 [Support](https://wordpress.org/support/plugin/buildwithhumza-broken-link-checker/)

## Description

Links stop working without warning. A page you cited gets moved, a plugin you recommended
is closed, an agency’s domain expires, and your posts keep sending visitors to a
dead end until someone notices.

BuildWithHumza Broken Link Checker finds broken links in WordPress for you. It reads
your published posts and pages, checks every link and image in the background, and
lists the dead links, 404 pages, broken images and redirects under **Tools > Broken
Links**. You fix each one from that screen without opening the post.

It runs entirely on your own server. There is no account to create, no external 
service, no link limit and no paid tier needed to see your results.

#### Built not to cry wolf

A report full of false alarms is hard to trust, so a link is only called **broken**
after three failed checks in a row, an hour and then six hours apart. That keeps
a brief outage at the wrong moment out of your report.

It also knows the difference between “this page is gone” and “this site will not
talk to robots”:

 * **Broken** – a 404 or 410, a server error that persists, or a domain that no 
   longer exists
 * **Redirect** – the address has permanently moved; update the link and save visitors
   a hop
 * **Unverified** – a login wall, a rate limit, or a redirect to a home page or 
   search page, which usually means the page was removed but cannot be proven
 * **Blocks checkers** – sites that turn automated requests away, including any 
   site that answers with a bot challenge, and a short list of large sites that 
   commonly do. Open the link to confirm it works
 * **Working**, and **Retrying** for links that failed a check and wait for the 
   next attempt

Each link shows the response code or the reason (a DNS failure, a timeout, a certificate
problem), when it was last checked and how long it took to answer.

#### Fix it where you find it

Open a row to see every post the link appears in, with its anchor text, then:

 * **Replace** the address in every one of those posts at once. For a redirect, 
   the new address is filled in for you.
 * **Remove the link and keep the text**, for sources that are simply gone.
 * **Ignore** a link you know is fine, and restore it later.
 * **Check again** after you have fixed something on the other end.

Every change saves a revision first, so anything can be undone from the post editor.
Links inside code examples are left alone.

#### Works with your page builder

A page made with a builder is built from the builder’s own data, not from the post
content. So this plugin reads each page where it is really built, and writes a fix
back there in the builder’s own format, then clears the builder’s cache so the live
page changes.

 * **Find and fix:** the block editor (including block plugins that keep links in
   block settings, such as Kadence Blocks), the classic editor, Elementor (background
   images included), Beaver Builder, SiteOrigin Page Builder, and shortcode builders
   such as Divi 4, WPBakery and Avada.
 * **Find and check, fix in the builder:** Bricks, Breakdance, Oxygen, Thrive Architect
   and Brizy. Their links are checked like any other; the report names the builder
   and links straight to it, instead of changing something the live page does not
   use.

After every fix the page is read again. If the address is still there, the report
says so rather than counting it as fixed.

#### Light on your server

Checks run in small batches from a one-minute WP-Cron event, at most ten links and
25 seconds of checking per batch, so a batch fits inside a shared host’s time limit.
While the Broken Links screen is open during a scan, it starts the next batch as
soon as one ends, so a scan you are watching finishes sooner; the batches never 
overlap. The same site is never asked twice within two seconds. Each address is 
checked once, however many posts use it, and nothing but the address, its status
and where it appears is stored. No page content is ever saved.

It asks for the headers of a page first, and only reads the first kilobyte when 
a server answers that with an error, so a link to a large PDF or video is never 
downloaded.

#### Settings

Under **Tools > Broken Links > Settings** (administrators only):

 * **What to scan** – which content types, whether to check images, and addresses
   to skip. A domain such as example.com also skips its subdomains; a full address
   starting with https:// skips every link that begins with it. Changes apply at
   once.
 * **How often** – check working links again every 1, 3, 7 or 14 days.
 * **Weekly email** – off by default. When switched on, one email a week to one 
   address, sent only if new links have broken since the last one, listing each 
   link and the posts it is in.

#### For developers

    ```
    wp bwh-blc scan --check
    wp bwh-blc list --status=broken --format=csv
    wp bwh-blc status
    wp bwh-blc fix 42 --to=https://example.com/new-page --user=admin
    wp bwh-blc fix 42 --unlink --user=admin

    scan --check reads all content and checks every link that is due, at the same polite pace as the background checks, and stops after `--max-time` seconds (default 600).
    ```

Filters:

 * `bwh_blc_post_types` – the content types scanned
 * `bwh_blc_blocking_hosts` – domains that block automated checks
 * `bwh_blc_parsed_links` – the links found in a piece of content, before they are
   stored

#### Privacy

To check a link, the plugin sends a request from your server to the address the 
link points to, as a browser would when a visitor clicks it. The request identifies
itself as “BuildWithHumza Broken Link Checker” followed by your site’s address, 
so the owner of that site can see who is checking. Addresses in private networks,
such as localhost or 192.168.x.x, are never requested.

Nothing is sent to the plugin’s author or to any other service. There is no tracking.
The plugin stores its findings in two database tables and a few options, and removes
all of them when you delete it. The weekly email, if you switch it on, goes through
your site’s own mail setup to the address you give.

## Screenshots

[⌊The report under Tools: what needs attention, worst first, with the response code
and how many places each link appears.⌉⌊The report under Tools: what needs attention,
worst first, with the response code and how many places each link appears.⌉[

The report under Tools: what needs attention, worst first, with the response code
and how many places each link appears.

[⌊A broken link opened: why it failed, every post it is in, and the fixes.⌉⌊A broken
link opened: why it failed, every post it is in, and the fixes.⌉[

A broken link opened: why it failed, every post it is in, and the fixes.

[⌊A permanent redirect, with the new address filled in ready to replace.⌉⌊A permanent
redirect, with the new address filled in ready to replace.⌉[

A permanent redirect, with the new address filled in ready to replace.

[⌊Settings: what to scan, how often to recheck, and the weekly email.⌉⌊Settings:
what to scan, how often to recheck, and the weekly email.⌉[

Settings: what to scan, how often to recheck, and the weekly email.

## Installation

 1. Install through **Plugins > Add New**, or upload the folder to `/wp-content/plugins/`.
 2. Activate it.
 3. Go to **Tools > Broken Links**. The first scan starts on its own, with a progress
    bar showing how far it has got and roughly how long is left. **Scan now** reads
    your content and checks every link again at any time.

Editors and administrators can see the report and fix links. Only administrators
can change the settings.

## FAQ

### Why does it say a link is unverified or blocked when it opens fine in my browser?

Some sites refuse requests that do not come from a browser, or answer them with 
a login page or a challenge. The plugin cannot tell whether the page behind that
exists, so it says so instead of guessing “broken”. Open the link from the report
to confirm it, and ignore it if you like.

### Why is a failing link shown as “Retrying” and not “Broken”?

Because one failure proves very little. A link is retried after an hour and again
after six hours, and only the third failure in a row marks it broken. This is what
keeps a brief outage out of your report.

### What does it scan?

The content of published posts, pages and other public content types, including 
layouts made with the page builders listed above. Menus, widgets, comments, excerpts
and custom fields are not scanned in this version. Drafts and private posts are 
skipped, because visitors cannot see them.

### Does it work with Elementor?

Yes. It reads an Elementor page’s own data, so it finds links in its widgets, background
images included, and a fix changes the page Elementor shows, not only the plain 
copy Elementor keeps for search. Elementor’s CSS for the page is cleared so it is
built again with the new address.

### My site gets little traffic. Will the checks still run?

WP-Cron runs when someone visits the site, so on a very quiet site the checks may
pause. While the Broken Links screen is open it keeps them moving. For a steady 
pace, point a real server cron job at `wp-cron.php`, or run `wp bwh-blc scan --check`
from a scheduled task.

### How many links can it handle?

The plugin sets no cap. Each unique address is stored and checked once, however 
many posts link to it, so large sites with many repeated links stay small.

### Can I undo a fix?

Yes. Before any post is changed, WordPress saves a revision of it. Open the post,
go to Revisions, and restore the earlier version.

### Does it slow my site down?

Nothing runs for visitors on the front end. The checks run in the background in 
batches small enough for shared hosting, and the admin screen loads its files only
on its own page.

### Does it find broken images too?

Yes. Images in your content are checked like links, so a missing or moved image 
shows up in the report with the posts it is in. You can switch image checks off 
under Settings.

### Does it fix 404 errors on my own site?

It finds links in your content that lead to a 404 page, on your site or anyone else’s,
and lets you replace or remove them. It does not log the 404s that visitors hit 
by typing a wrong address; that is a job for a redirect plugin.

### Will a new content type from another plugin be scanned?

Every public content type is listed under Settings, including new ones such as products
or events. Until you save the settings, all of them are scanned. Once you have saved
your own choice, a new type appears unticked; tick it to include it.

### Where do I get help or report a bug?

In the plugin’s support forum on WordPress.org. Every thread gets a reply. If the
plugin saved you time, a review there helps other site owners find it.

### Does it work on multisite?

It has been tested on single sites only so far.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“BuildWithHumza Broken Link Checker” is open source software. The following people
have contributed to this plugin.

Contributors

 *   [ Mohammad Humza ](https://profiles.wordpress.org/mohammadhumza/)

[Translate “BuildWithHumza Broken Link Checker” into your language.](https://translate.wordpress.org/projects/wp-plugins/buildwithhumza-broken-link-checker)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/buildwithhumza-broken-link-checker/),
check out the [SVN repository](https://plugins.svn.wordpress.org/buildwithhumza-broken-link-checker/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/buildwithhumza-broken-link-checker/)
by [RSS](https://plugins.trac.wordpress.org/log/buildwithhumza-broken-link-checker/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.0

 * First release.
 * Scans published content for links and images and checks each unique address in
   the background, at a pace shared hosting can take.
 * Broken only after three failed checks, hours apart. Separate statuses for redirects,
   unverified links and sites that block checkers.
 * Replace or remove a link in every post at once from the report, with a revision
   saved first. Ignore, restore and check again.
 * Settings for content types, images, addresses to skip and how often to recheck.
 * Optional weekly email when new links break.
 * Reads and fixes pages made with Elementor, Beaver Builder, SiteOrigin, block 
   plugins and shortcode builders; checks Bricks, Breakdance, Oxygen, Thrive Architect
   and Brizy pages and sends you to the builder to fix them.
 * WP-CLI: `wp bwh-blc scan`, `list`, `status` and `fix`.

## Meta

 *  Version **1.0.0**
 *  Last updated **20 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [404](https://wordpress.org/plugins/tags/404/)[broken images](https://wordpress.org/plugins/tags/broken-images/)
   [broken links](https://wordpress.org/plugins/tags/broken-links/)[dead links](https://wordpress.org/plugins/tags/dead-links/)
   [link checker](https://wordpress.org/plugins/tags/link-checker/)
 *  [Advanced View](https://wordpress.org/plugins/buildwithhumza-broken-link-checker/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/buildwithhumza-broken-link-checker/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/buildwithhumza-broken-link-checker/reviews/)

## Contributors

 *   [ Mohammad Humza ](https://profiles.wordpress.org/mohammadhumza/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/buildwithhumza-broken-link-checker/)