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! (423 KB)
Features
- Detects links that don’t work and missing images.
- Periodically checks links in posts, pages, comments and the blogroll.
- New and modified entries are checked ASAP.
- Notifies you on the Dashboard if any problems are found.
- Lets you edit all instances of a specific link at once.
- Gives you a list of all links ever posted on your site, with the ability to search and filter it.
- Lets you apply custom CSS styles to broken and removed links.
- Highly configurable.
The broken links show up in the Tools -> Broken Links tab along. If any invalid URLs are found a notification will also show up on the Dashboard widget. To save screen real-estate, the widget can be configured to stay closed most of the time and automatically expand when broken links are detected.
Installation
Install “Broken Link Checker” just like any other WordPress plugin :
- Download the .zip file.
- Unzip.
- Upload the
broken-link-checkerfolder to you/wp-content/pluginsdirectory. - Activate the plugin in the Plugins tab.
Download
broken-link-checker.zip (423 Kb)
Requirements
- WordPress 3.0 or later
- MySQL 4.1 or later
The current version of this plugin is only compatible with WordPress 3.0 and up. If you have an older version of WP, try one of the older releases. Specifically, version 0.8.1 is the last one that’s still compatible with the WP 2.8 branch, and version 0.4.14 is the last one compatible with WP 2.1 – 2.6.x.
Related posts :
Hello, Yeah, as the plugin “Broken Links”, but than report videos of youtube deleted or removed, inserted for Embed direct in wordpress, as:
==============
==============
So bloggers we can always know when a video has been removed, and can us update it.
maybe rename to “Yotube Broken Links” or “Youtube Broken Embed”,
Well, Thanks! for “Broken Links”, is a exelent plugin!
Good Luck!.
Sorry for my english, I don´t speak english. =/
Hi. Thanks for your great plugin! It’s making trouble with WP 2.6, though: If I click “unlink” it tells me that it cannot edit the post (in a popup).
@Eric – I’ve upgraded to WP 2.6 and seems to be working for me still. Maybe you tried to “unlink” an image? That would produce the popup you mention.
@Jvista – maybe someday
Works fine with WP 2.6!
On one of my projects, images and links are added in custom fields. Coould you please consider as an option a check in custom fields? Thanks
@Razvan Antonescu – I’ll add that to my idea list. Though I can’t promise you’ll see it implemented anytime soon.
Oh well, I can understand that that is not a very common use and priority must be given to regular users. So if it’s on your list is more then enough for me
I had huge problems with this plugin eating up lots of resources on the server, leading to 500-er “internal server” errors after I upgraded to WP 2.6. Therefore I had to disabled the plugin for now. this is using the latest plugin version.
Excellent plugin.
Two suggestions:
- exclude ‘revisions’ and ‘autosave’.
- include an option for ‘orphaned pages’ (I have so many pages and can’t really tell which ones are actually being linked to…)
@Karel – okay, it makes sense to exclude revisions & autosave. I’ll add this right now.
Also, Eric, this might be the cause for the unexpected server load you experienced (maybe
), so the next version might work better.
Nope, same problem (error 500) also with version 0.4.3.
I’m running WordPress 2.6 and just installed Broken Link Checker 0.4.3. I thought this was working beautifully on two different sites but I just noticed a Fatal Error message at the bottom of the Write Post page on one of the sites (not the other one, which is a different ISP):
Fatal error: Call to undefined function: curl_init() in /wp-content/plugins/broken-link-checker/wsblc_ajax.php on line 294
Can you issue a modification that doesn’t use Curl?
@Cynthia – that would be a pretty complex task. Not likely in the foreseeable future.
Looks like I found a bug. The broken link checker 0.4.3 records a URL which returns a 401 as a broken link. These are NOT broken links. They’re sites that require a login. Example is http://www.totalfark.com/
@Michael Hampton – Hmm, good point. I’ll update the plugin.
[...] Broken Link Checker [...]
[...] was made possible by the Broken Links Checker plugin for WordPress, which made the process very easy and helped me to detect/repair links in all of the posts on the [...]
Oops, I think I found another one. If there are two or more links to the same URL in the same page, editing, discarding or unlinking affects all of them. This isn’t necessarily desirable. In my case I wanted to edit one and unlink the other, but both of them got unlinked and I had to put one back in.
And if you hit Discard, then while all of them get discarded, only one of them is removed from the listing via AJAX.
@Michael Hampton – I think it makes sense to change/remove all broken links, so I won’t change that. I’ll look into fixing the Discard/AJAX issue though.
[...] stolper ich über das WordPress-Plugin Broken Link Checker. Das ist gut, denk ich. Der Checker entfernt die toten Links nicht gleich, der checkt die [...]
[...] der englische Name des Plugins schon erahnen lässt, untersucht “Broken Link Checker” Ihren WordPress-Blog automatisch nach so genannten toten bzw. verweisten Links. Sollte die [...]
i have the problem that my wordpress blog is now running on new webspace and of course your plugin found morgen than 500 broken links.
so it would be great to change all broken links at the same time.
http://www.xyz.de/wordpress to http://www.123.de/wordpress
so maybe you can include this possibility to your plugin!
would be great!
change all xyz to 123 !
@Rob Vegas – That’s a good idea, but I think there are already plugins that can do this. I’m pretty certain I’ve seen some “global search & replace” plugins before, Google may turn some up.
Hey, I’ve got some oddball stuff going on here with version 0.3.5. Specifically it seems to run for a while, and then gets stuck at, for instance, “3 posts and 9278 links in the work queue.” It’s been sitting here for four days, despite having the setting to recheck everything every 72 hours. Any idea how I can figure out what’s going on?
Er, excuse me, I seem to have version 0.4.4. not 0.3.5.
@Michael Hampton – I’ve thought about your problem for a while and haven’t thought up anything useful. I don’t know why it’s stalling. I’ll let you know if I get any ideas.
I think this is an excellent plugin, thanks so much for your work on it.
Our blog has many levels of users. We’d like to allow editors to use the Broken Link Checker, but they have “insufficient permissions.” Is there a way to extend permissions beyond just administrators? Thank you.
@Kate – It’s not easily extendable – you’d need to edit the source code. If you’re up for that, what you need to do is replace two references to ‘manage_options’ (around line 340) with ‘edit_others_posts’. This should give editor-level users access to the plugin.
Hello! I think that this plugin is really useful… However, I noticed that with wordpress 2.6 can give some problems. Watch this post in my blog:aggiornamento-a-wordpress-26
I think this can help to solve the problem.
Thank you and see you soon,
Denis
@Denis – Riiight. I can’t really read that (as I don’t know the language), but if you mean the “Internal Server Error” thing it’s probably caused by some tricky server configuration conflict. For example, it could be some security-related Apache module that causes this, or a .htaccess thing.