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.
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”:
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.
Open a row to see every post the link appears in, with its anchor text, then:
Every change saves a revision first, so anything can be undone from the post editor. Links inside code examples are left alone.
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.
After every fix the page is read again. If the address is still there, the report says so rather than counting it as fixed.
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.
Under Tools > Broken Links > Settings (administrators only):
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 scannedbwh_blc_blocking_hosts – domains that block automated checksbwh_blc_parsed_links – the links found in a piece of content, before they are storedTo 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.