This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.


The external links plugin for WordPress lets you process outgoing links differently from internal links.


Under Settings / External Links, you can configure the plugin to:

  • Process all outgoing links, rather than only those within your entries’ content and text widgets.
  • Add an external link icon to outgoing links. You can use a class=”no_icon” attribute on links to override this.
  • Add rel=nofollow to the links. (Note: You can use a rel=”follow” attribute on links to override this.)
  • Open outgoing links in new windows. Note that this can damage your visitor’s trust towards your site in that they can think your site used a pop-under.
  • Turn on “autolinks” functionality.
  • Domains/subdomains you wish to Exclude from processing.

Auto Links

The Autolink functionality automatically converts urls to hyperlinked urls in post/page content, excerpts and text widgets.



Help Me!

The Plugin’s Forum is the best place to report issues.


  1. Upload the plugin folder to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress


Installation Instructions
  1. Upload the plugin folder to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
How can I make some links still be followed?

The plugin supports a non-started rel=”follow” attribute on links to override this. If it detects rel=”follow” it will not add the “nofollow” attribute to that link.


October 6, 2020
The only of all such plugins that I tried that works fine and did not break anything. Would be nice to have icons options, but hey, I’m thankful for it as it is, and the current icon is a good choice.
July 9, 2020
Simple and comfortable to use, really nice style, I was looking for. I’m searching to improve my website, accessibility and usability too and I removed all the target="_blank" on my posts and I marked the external links with this plugin. Easy to use, and helpful.
September 18, 2018
Works perfectly! Nice & tidy little icon is automatically added after all external links. Can even configure external link/icons to open in a new browser page. Other configurations also available. Very nice.
Read all 37 reviews

Contributors & Developers

“External Links” is open source software. The following people have contributed to this plugin.


“External Links” has been translated into 2 locales. Thank you to the translators for their contributions.

Translate “External Links” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Fix: Embedded Facebook urls no longer processed by Auto Convert text functionality


  • Change: Handle links that space multiple lines (props archon810)
  • Fix: Add url found in a tag with a data- attribute prefix to the Auto convert Text Urls exclusion list (Fixes problem with addtoany)
  • Fix: Do not convert text urls found in meta and div tags
  • Fix: Do not convert text urls found in svg xlmns attributes
  • Fix: Remove strpos(): Empty needle PHP warning in sem-external-links.php (props archon810)
  • Under Hood: Tested with PHP 7.x


  • Fix: Some links with affiliate code may not be correctly detected as an external link.
  • Fix: Auto Convert Text Urls were being applied to Text Widgets regardless of Settings
  • Fix: A lengthy page or long embedded form could cause Auto Convert Text URLS to fail and result in some blanking of the text.
  • Change: Site domain entered in the ‘Domains To Exclude’ with a trailing slash is handled better and trailing slash is simply removed.


  • New option to exclude html code blocks (pre and code) from link processing
  • Updated the text-domain to sem-external-links to match plugin’s slug to support internationalization efforts


  • No functionality changes in this release.
  • WP 4.3 compat
  • Tested against PHP 5.6


  • Domains to Exclude no longer assumes subdomains meaning subdomains need to be specifically excluded now.
  • Entry of Domains to Exclude now allows separation by comma, space, newline/return, and tab. It will convert into a csv list.
  • Fix placeholder links (href=”#”) not being excluded from processing correctly.
  • Fix Plugin version number not being updated in the database options correctly.


  • External Links with querystring not being excluded by Domains to Exclude
  • Ensure http/https are stripped off exclude domains in External Links admin
  • Fix wrong parameter count in strstr warning for sites using PHP 5.2 or earlier
  • Fix subdomain logic when the subdomain is also used in the tld –


  • New setting to specify domain(s) to be excluded from any processing. props Brian Wilson
  • Remove multi-site check that was causing all links to be deemed internal.
  • WP 4.1 Compat


  • Fix bug that crept back in with embedded image with a class while the link itself had no class attribute


  • Changed link detection to err on the side of a link being local rather than external to avoid false positives.
  • Fixed double inclusion of class attribute under certain link attribute ordering conditions


  • Additional performance changes for long post/page when Apply Globally is off.
  • Links with no anchor text will have nofollow and/or target set, but no external icon
  • Improved detection and handling of anchor links as internal.
  • Initial support for AddThis placeholder links


  • The nofollow attribute was not being set if a certain combination of the global, follow comments, set nofollow settings were set.
  • Backtracked and removed the Follow Comments functionality. It’s usage was limited to certain cases and if Apply Globally was on, then it was disabled. Supporting it was adding too complex logic.


  • Well plugin decided to break classes on embedded images. Obviously corrected.


  • Fixed performance issues with the link processing. Really was poor.
  • Embedded the functionality of the autolink uri and the dofollow plugins (off by default in Settings)
  • New option on how to treat subdomains of installed plugin domain as local or external
  • Fixed several php strict warnings


  • Remove HTML comments added in 5.4.1 to assist in troubleshooting some select site issues


  • Use template_redirect hook and put ourselves after default hooks that most 404/redirect plugins want to use and Yoast’s at priority 99999


  • Fix compatibility with Yoast WP SEO plugin when Force Title Rewrite option is on and using the Apply Globally setting of this plugin.


  • Additional tweak to global callback processing


  • Use wp_print_footer_scripts hook instead of wp_footer as some themes fail to call wp_footer();
  • Use own custom version of the anchor_utils class
  • Content, excerpt and comment filters no longer called when Apply Globally is selected. Improves performance.


  • Troubleshooting release. Adds a few html comments in the page source to ensure hooks are being called.


  • Handle nested parenthesis in javascript event attributes on links and images


  • Temporarily placeholders links – http:// and https:// (no other url components) are no longer processed.


  • Fix localization


  • Fix: Conflict with Auto Thickbox plugin that would result in text widgets still being filtered even though option was turned off
  • Fix: Ensure this plugin filter is executed way back in the change to prevent other plugins/themes from reversing our changes
  • Code refactoring
  • WP 3.9 compat


  • Checks for new sem_dofollow class to determine if Do Follow plugin is active
  • WP 3.8 compat


  • Further updates to the link attribute parsing code
  • Fixed bug where external link was not processed if it was preceded by an empty text anchor link.


  • Take two! With issues now with breaking google adsense code reverted back to 4.2 parsing code but added more advanced dom attribute parsing code to handle various link configurations.


  • Completely replaced the mechanism for parsing links to resolve the various errors that have been occurring with different external services’ link attributes
  • Tested with WP 3.7


  • WP 3.6 compat
  • PHP 5.4 compat
  • Fixed issue with parsing of links with non-standard (class, href, rel, target) attributes included in the tag. This caused Twitter Widgets to break.
  • Fixed issue where the external link icon was not added if the url specified by href had a preceding space href=””
  • Fixed issue with links containing onClick (or other javascript event) attributes with embedded javascript code. WordPress’ Threaded Comments does this
  • Fixed issue with 2 spaces being injected between <a and class/href/rel/etc. i.e


  • WP 3.5 compat


  • WP 3.0.1 compat


  • WP 3.0 compat


  • Force a higher pcre.backtrack_limit and pcre.recursion_limit to avoid blank screens on large posts


  • Improve case-insensitive handling of domains
  • Improve image handling
  • Switch back to using a target attribute: work around double windows getting opened in Vista/IE7
  • Disable entirely in feeds


  • Don’t enforce new window pref in feeds


  • Ignore case when comparing domains


  • Allow to force a follow when the nofollow option is toggled
  • Enhance escape/unescape methods
  • Localization
  • Code enhancements and optimizations