Broken Link Checker for WordPress
Sometimes, links get broken. A page is deleted, a subdirectory forgotten, a site moved to a different domain. Most likely many of your blog posts contain links. It is almost inevitable that over time some of them will lead to a “404 Not Found” error page. Obviously you don’t want your readers to be annoyed by clicking a link that leads nowhere. You can check the links yourself but that might be quite a task if you have a lot of posts. You could use your webserver’s stats but that only works for local links.
So I’ve made a plugin for WordPress that will check your posts (and pages), looking for broken links, and let you know if any are found.
Download it now! (40 KB)
Note : This page, and the feature list below are slightly out of date as a major update has been released recently (see details). I’ll get around to updating this page eventually.
Features
- Checks your posts (and pages) in the background (whenever the WP admin panel is open ).
- Detects links that don’t work and missing images. Checks both internal and outbound links.
- Notifies you on the Dashboard if any problems are found.
- Link checking intervals can be configured.
- New/modified posts are checked ASAP.
The broken links show up in the Manage -> Broken Links tab. If any invalid URLs are found a notification will also show up in the sidebar on the Dashboard.
The Broken Links tab displays a list of invalid URLs found along with the relevant posts and the anchor text of the links. “View” and “Edit Post” do exactly what they say and “Discard” will remove the message about a broken link, but not the link itself (so it will show up again later unless you fix it; this plugin doesn’t modify your links).
By default all old posts/links are re-checked every 72 hours, or you can set a different time period.
Notes (Semi-Technical)
I realize there’s a lot of features that could be added to improve this plugin considerably. However, this release is intended to “test the waters” and see if there’s demand for a plugin like this, so I only implemented the most basic functions. The plugin has been upgraded to be slightly beyond “basic”
I thought about using WP’s pseudo-cron to run the link checker by schedule and decided against it. AFAIK the cronjobs execute when a page is requested; since this plugin does some lengthy processing it may increase page load times unacceptably when used in this manner. That’s why I set it to run the checks asynchronously (AJAX) and invisibly in the admin panel.
Installation
Just like any other WordPress plugin -
- Download (see below).
- Unzip.
- Upload the broken-link-checker folder to you wp-content/plugins directory.
- Activate the plugin in the Plugins tab.
Upgrading
- Deactivate the plugin (important!).
- Do steps 1.-3. from “Installation”.
- Upload the broken-link-checker folder to you wp-content/plugins directory.
- Re-activate the plugin in the Plugins tab.
Download
Version 0.5.3 : broken-link-checker.zip (40 Kb)
Requirements
- WordPress 2.7 or later
- MySQL 4.1 or later
Starting with version 0.5 this plugin is only compatible with WordPress 2.7 and up. Older versions (e.g. ver. 0.4.14) should work with WP 2.1 – 2.6.x.
Related posts :
Broken Link Checker worked fine for a few month. But now, I have some errors. When I run “Re-check all pages”, all the website is in error (error 500) and many good links which point to my website are marked as broken :
Log : === First try : 500 ===
HTTP/1.1 500 Internal Server Error
Date: Fri, 20 Mar 2009 08:07:21 GMT
Server: Apache/2.2.X (OVH)
X-Powered-By: PHP/4.4.9
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
Last-Modified: Fri, 20 Mar 2009 08:07:21 GMT
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=utf-8
Trying a second time with different settings…
=== Second try : 500 ===
HTTP/1.1 500 Internal Server Error
Date: Fri, 20 Mar 2009 08:07:21 GMT
Server: Apache/2.2.X (OVH)
X-Powered-By: PHP/4.4.9
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
Last-Modified: Fri, 20 Mar 2009 08:07:21 GMT
Vary: Accept-Encoding
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
Link is broken.
Why the whole website is out when the plugin is checking all links ?
WP 2.7.1 (Akismet 2.2.3, akWpLightbox 1.0.0, All in One SEO Pack 1.4.7.4, Broken Link Checker 0.4.14, cforms 9.1, Exec-PHP 4.9, FeedBurner FeedSmith 2.3.1, FeedWordPress 2008.1214, Google Analytics for WordPress 2.9, Google XML Sitemaps 3.1.2, MobilePress 1.0.3, Remove Generator Meta Tag 1.0, WordPress.com Stats 1.3.7, Wordpress.com Stats Helper 0.5.5.3, Wordpress Newsletter subscription Opt-in for SendBlaster 1.1.6, WordPress Related Posts 1.0).
Ah, the mysterious “500 Internal Server Error”. That’s one of the most abused HTTP codes that can mean any number of things. Have you recently installed any security-related stuff on your server (e.g. new Apache modules)? The plugins look fine, but it could be caused by something else that works on webserver level.
Quite difficult to know what has been updated on the web server… It’s a shared hosting ! I will open a case next week to try to have more information or log file.
I will try if this issue is related to the last version of the plugin (try version 0.4.13).
Thanks for your reply !
I have the same issue with version 0.4.13. I have open an incident to have more informations from my hosting provider. It seems my database is limited to up to 3 concurrent access. Any idea ?
Thanks.
That sounds very restrictive, though I have to admit I don’t know much about this aspect of databases. No ideas, sorry.
[...] easy to do with the plugin I use: Broken Link Checker. Highly [...]
[...] Broken Link Checker This checks your posts for broken links and missing images and notifies you on the dashboard if any are found. Very handy for keeping link-rot out of your blog. [...]
[...] 13. Broken Link Checker [...]
I tried the plugin on a free server for testing,worked great with the 3xx redirects,but now i switched it to my paid server and the plugin doesnt show the redirects anymore.I tried:uninstalling and reinstalling,upgrading,deactivated all other plugins to check for conflict,went thrue the css numerous times,php5 on both servers,but nothing works…Can you come up with anything that could help?Cause i`m going insane
Thanx
Does the new server have cURL? If not, the plugin would use another algorithm to check links that handles redirects slightly differently.
[...] Plug-in: Broken Link Checker is easy to use and allows you to find and fix bad links quickly. From the ease of putting the [...]
Yes it has curl,i checked with the helpdesk and they gave me this info:
cURL support enabled
cURL Information libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.1
Is that any help?
Well, is the modified code still there?
Are typical broken links (error 404) detected?
[...] Broken Link Checker decreases the likelihood that a link-heavy post like this will become useless to a future reader. [...]
Yes the modified code is still there

I imported a old blog and it detected 117 dead links (404) but not the 3xx range
I just cant figure out what the problem is…
Hmm, nothing else comes to mind at this time… :/
The strange thing is that i have another link-check plugin (but it only checks links when a post is actualy visited) that does detect the 3xx redirects.I guess its gonna be a long night trying to figure it out…
[...] Broken Link Checker – Search engines do not like broken links. Your visitors do not like them either. This plugin scans your posts automatically, shows you broken links in WordPress dashboard and lets you easily unlink them. [...]
[...] Broken Link Checker: Checks your entire blog for broken links in posts or pages and puts a message in your Dashboard when it finds some. Offers you various options for dealing with them – e.g. you can ignore the notice, remove the link, edit the link, etc. [...]
The plugin reports that http://www.eeicom.com:80/training/dispclas.cfm?classID=70700 is a broken link but it isn’t. Here are the details: HTTP Code : 60
1. Log : (Using Snoopy)
connection failed (60)
HTTP/1.1 302 Moved Temporarily
Connection: close
Date: Mon, 06 Apr 2009 22:52:13 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Set-Cookie: CFID=1193978;expires=Wed, 30-Mar-2039 22:52:13 GMT;path=/
Set-Cookie: CFTOKEN=73796203;expires=Wed, 30-Mar-2039 22:52:13 GMT;path=/
location: /training/dispclas.cfm?classID=70700
Content-Type: text/html; charset=UTF-8
Link is broken.
[...] di ricerca per determinate parole-chiave. Se usate Wordpress, cercate di installare il plugin Broken Link Checker, che fa un’analisi completa del vostro blog, trovando immediatamente tutti quei link [...]
[...] Broken Link Checker [...]
Looks like an internal Snoopy problem (Snoopy is the library that the plugin uses when cURL is unavailable). All I can suggest at the moment is to get your host to install cURL.
[...] Broken Link Checker – Nada mais chato que você entrar em um site com aquela música ou filme que tanto procurava e o link estar quebrado não é. Pode ter certeza que seus visitantes odeiam isso! Esse plugin verifica seus links e os reporta se estiverem quebrados. [...]
[...] Broken Link checker enabled [...]
A quick comment on the plugin. Is there any way to send broken link findings to my email? It’d be a great help as I’m not often able to check my Wordpress all that often, but I do check my email. Thanks!
Unfortunately not. While it would be possible to make a little script that checks the plugin’s DB table and reports broken links by email, the plugin wouldn’t actually run if no-one visits the admin dashboard (this might be changed in a future update).
[...] Broken Link Checker – Checks your blog for broken links and notifies you in the dashboard. Very user-friendly and has [...]
[...] ie perfect is. Dus laat ik nooit meer zo’n berichtjes tegenkomen he? Broken Link Checker (link) Ontzettend handige plugin die je gehele Wordpress doorloopt (zowel pages als posts) op zoek naar [...]
[...] letztere Aufgabe bin ich heute über das sehr nützliche Plugin Broken Link Checker gestolpert. Satte 98 Links wurden mir als nicht funktionsfähig angezeigt. Ein Großteil besteht [...]