Broken Link Checker for WordPress

Notice: This plugin has been transferred to ManageWP. I am no longer working on it. Please direct any feedback to the new developer. See the plugin homepage for more information.

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.

Features

  • 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

broken-link-checker.zip (412 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.

    Installation

    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,582 Responses to “Broken Link Checker for WordPress”

    1. […] 9. Broken Link Checker | Download (External) […]

    2. […] meinem Link-Überwacher bekomme ich mit, wenn illustre Websites wie ‘Bürgerbeteiligung‘ oder […]

    3. […] free: Powered by WordPress 3.0 WordPress Plugins include the following: Akismet (antispam Plugin) Broken Link Checker Collapsible Archive Widget Dave’s WordPress Live Search Disqus Comment System Easy Buttons […]

    4. […] Plugins: Broken Link Checker, EWWW Image Optimizer, Jetpack, Remove Comment Notes, W3 Total Cache, WP […]

    5. Mike Gantt says:

      I seem to get a regular recurrence of “false positives” – that is, when I check the “broken link,” it works. I click “Not Broken” and it goes away. However, such links (and oftent the same ones) seem to show up again and again. Any suggested remedy?

    6. Jānis Elsts says:

      There is no catch-all solution to false positives because there are many different things that can cause them – temporary downtime, server configuration issues, hotlink protection, paranoid security software blocking the plugin, and so on.

      That said, if you could post a few of specific examples (including the link status reported by the plugin, and preferably HTTP headers as well – you can get those by clicking the status message), I might be able to suggest some potential fixes.

    7. Mike Gantt says:

      Here is another (and the status is, again, “Unknown Error”) that periodically recurs:

      http://dianasymons.com/kingdom-of-god-2/forgiveness-right-matters/

    8. Jānis Elsts says:

      Try installing the development version. It includes a patch that fixes some (though not all) types of “Unknown Error” false positives. You can download it on this page, under “Other Versions”.

    9. Mike Gantt says:

      Thanks. Will do. And will let you know if it helps.

    10. Hey there! I love your plugin. However, something weird is happeing. Yesterday when I logged off I only had a couple of redirects. Today I logged on and suddenly my “Redirects” list is clogged up with 686 links, all of which are blogspot.com blogs. Yet, I clicked through on a bunch of them and none of them seem to be redirecting. Any suggestions or solutions?

    11. Jānis Elsts says:

      Could you post a specific example or two?

      Also, what redirect URL(s) does the plugin show for those links? Click the message in the “Status” column to view the final URL and additional details.

    12. sdrury says:

      We’re using the Broken Link Checker plugin for http://richarddavidformen.com/. We’re having a problem with line-throughs on the home page in Firefox. Firebug is showing class=”broken_link”. Plugin status shown no broken links in the Settings. I’ve deleted the CSS in the plugin; also tried disabling the plugin and we still have the line-throughs. Do you have any suggestions?

      Thank you!

    13. Jānis Elsts says:

      As you’ve probably noticed, you can turn off the line-through by disabling the option to “Apply custom formatting to broken links” in Settings -> Link Checker.

      If that doesn’t help, chances are you’re looking at a cached version of the page. Are you using any caching plugins? Try clearing the cache and refreshing the page.

    14. Mike Gantt says:

      Janis,

      (This is a continuation of the exchange we were having above.)

      Got 14 false positives today with the development version. Usual suspects.

      Please advise if there’s any other data I can give you that will help debug.

    15. Jānis Elsts says:

      @ Mike:
      I added the example links to a test site and all of them were detected as “200 OK”. This suggests that the problem may be specific to your site or server.

      Try clicking the “Unknown Error” message for additional details. Is there anything in the “Log” field?

    16. OK, I checked the status information as you suggested (great trick! I didn’t know status was clickable!) and I noticed that all of the blogs all have the same message of being “Moved temporarily” to .ca domains. (I’ll give examples below). Yet, the link I have still works, and the browser is displaying the regular .com URL, rather than the .ca listed in the status. Odd?

      Mostly I just want to know how to manage it since there’s SO MANY of them. I like to fix all the redirects whenever possible so my queue stays nice and small. How long are these URL’s going to be moved, when are they going back to their .com status, and how can I clear 686 URL’s from the redirect queue? What happens if I dismiss them, will they come back or stay permanently dismissed? I want those URLs to still be reported if something goes wrong with them in the future.

      Here’s those examples:

      http://vintagericrac.blogspot.com/
      http://thehousewecallhome.blogspot.com/
      http://barebonesgardening.blogspot.com/
      http://www.cottageatwitsend.blogspot.com
      http://www.housepeepers.blogspot.com

      When I click through to the sites, I’m seeing these same URL’s, but the status in the checker claims that they are moved to:

      http://vintagericrac.blogspot.ca/
      http://thehousewecallhome.blogspot.ca/
      http://barebonesgardening.blogspot.ca/
      http://www.cottageatwitsend.blogspot.ca/
      http://www.housepeepers.blogspot.ca/

      Etc..

      Here’s the full status for one of them for reference:

      Log: === HTTP code : 200 ===

      HTTP/1.1 302 Moved Temporarily
      Location: http://vintagericrac.blogspot.ca/
      Content-Type: text/html; charset=UTF-8
      Date: Mon, 23 Jun 2014 23:46:38 GMT
      Expires: Mon, 23 Jun 2014 23:46:38 GMT
      Cache-Control: private, max-age=0
      X-Content-Type-Options: nosniff
      X-Frame-Options: SAMEORIGIN
      X-XSS-Protection: 1; mode=block
      Server: GSE
      Alternate-Protocol: 80:quic
      Transfer-Encoding: chunked

      HTTP/1.1 200 OK
      Content-Type: text/html; charset=UTF-8
      Expires: Mon, 23 Jun 2014 23:46:38 GMT
      Date: Mon, 23 Jun 2014 23:46:38 GMT
      Cache-Control: private, max-age=0
      Last-Modified: Mon, 23 Jun 2014 23:10:10 GMT
      ETag: “3338e81d-ef97-4d25-8d85-dc0c018ffc47”
      X-Content-Type-Options: nosniff
      X-XSS-Protection: 1; mode=block
      Content-Length: 0
      Server: GSE
      Alternate-Protocol: 80:quic

      Thanks in advance!!

      ~Angela~

    17. Jānis Elsts says:

      @ Angela:

      Say, is your server/hosting provider located in Canada? It looks like Blogspot thinks so and is trying to redirect the plugin to a country-specific site.

      See this Google FAQ for more information:
      https://support.google.com/blogger/answer/2402711?hl=en

    18. Well, I wasn’t sure so I double-checked and their datacenter is in Los Angeles, California. So…???? It’s weird because I’ve been with this same hosting company for 10 years, running my WordPress site on it for 3 (4?) years and running your plugin for about that long, so why all of a sudden?

      Also — that Google article seems to indicate that a reader would see the URL change in their browser when redirected, but I do not see any change — this is why I didn’t think any of the URL’s had been redirected, because they seem to be the same .com URLs when I click through manually.

      I really appreciate your helping me on this — I am completely at a loss.

      ~Angela~

    19. Jānis Elsts says:

      Well, I wasn’t sure so I double-checked and their datacenter is in Los Angeles, California. So…????

      Who knows, it might be a glitch in Google’s geo-location algorithms.

      Also — that Google article seems to indicate that a reader would see the URL change in their browser when redirected, but I do not see any change […]

      That’s because you’re browsing from your own computer/device, not your server. The server is in a different place and has a different IP address. Since the plugin runs on the server, it will also have the server’s IP.

      The URL change happens based on the reader’s location (probably determined by IP address and so on), and in this case the “reader” that gets redirected is BLC. From Google’s perspective, you are a completely different reader.

    Leave a Reply