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.


  • Detects links that don’t work, missing images, deleted YouTube videos and other problems.
  • Periodically checks links in posts, pages, comments, custom fields 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.

Download (412 KB)


    • 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.


    Install “Broken Link Checker” just like any other WordPress plugin :

    1. Download the .zip file (see below).
    2. Unzip.
    3. Upload the broken-link-checker folder to you /wp-content/plugins directory.
    4. Activate the plugin in the Plugins tab.
    Related posts :

    2,451 Responses to “Broken Link Checker for WordPress”

    1. […] Broken Link Checker- Broken link checker is another great plugin when it comes to the background maintenance of your blog. This plugin is pretty self- explanatory, it checks for links within your blog posts that are broken. This is great because once you get so many posts, it can be hard to keep up with all of your links- especially those affiliate links that are supposed to be bringing in money for your blog. If something happens and these links no longer work, the plugin lets you know! […]

    2. […] Broken Link Checker: This is a tool that checks your site for broken links due to misspelling, typos or if they link to pages that no longer exist. […]

    3. Heather says:


      I love your plugin. I just migrated from a linux serverto the godaddy self managed wordpress and even though you are showing compatibility for this with the most current version of WP, they have barred it from download and/or use.

      Is there a work-around? Do you know why they did this? The other one they recommend is not up to date nor is it worth a crap. It is like it sits there and makes up possible links and then never redirects where you have assigned it to go.


      Frustrated in Phoenix

    4. Jānis Elsts says:

      This is probably not a compatibility issue. From what I’ve heard, GoDaddy may have restricted access to the plugin due to the server load it can cause by constantly monitoring lots of links.

      I’m afraid I don’t know any good workarounds. Perhaps renaming the plugin directory to something other than “broken-link-checker” would help?

    5. Mark says:

      I downloaded your checker but it seems almost everything shows up as a broken link, even though it is not broken. I get that sometimes there might be a glitch, but I have literally gone through 300+ links to mark them as not broken as they weren’t. Even now, I have just done some new posts and the 3 links I included were flagged, yet they worked. If literally EVERYTHING is going to continue to show up there’s really no point, but I’m guessing there’s something amiss? Any ideas what could be going wrong please? Thanks, Mark

    6. Jānis Elsts says:

      Are all of those links to the same site, or different sites? One relatively common thing that can cause lots of false positives is that some hosting providers block loopback connections. That is, they don’t let scripts running on your server connect back to that server. This usually causes all internal links to show up broken while external links (i.e. links to other sites) are reported correctly.

    7. Kevin says:

      I am not able to activate the plug-in because it times out and returns an error saying it took took long to complete. I have around 4,000 posts/pages on the blog with many links. Is there something I can try?

    8. Jānis Elsts says:

      Unfortunately, probably not. The way the plugin currently works, it will try to set up database records for all posts/pages the moment it is activated. If the server isn’t fast enough to do that within ~5 minutes (or 30-60 seconds on servers with fixed execution time limits), plugin activation may fail.

    9. Kevin says:

      The activation is timing out after 2 minutes.

      I see that it created 246,366 rows in the wp_blc_synch table (none in the other tables). Looking at the container_type column I see:

      comment: 242,502
      page: 115
      post: 3749

      Is there any way I can exclude comments from this plug-in. I would never want to deal with bad links in comments.

    10. Jānis Elsts says:

      Once the plugin is active, you can go to “Settings -> Link Checker -> Look For Links In” and turn off the option to check links in comments. The only way to do that before activating the plugin would be to edit its source code.

    11. Kevin says:

      That works. I went into \includes\activation.php and inserted the line:


      right before //Prepare the database

      It activated in 13 seconds.

    Leave a Reply