New SEO Plugin for WordPress: Internal Link Building

Author: Gab Goldenberg

Note: If you download this, please link to this page from your blog or Tweet it. Also, you’ll probably like a free chapter from my advanced SEO book.

Update 1 : The plugin has been downloaded 22,000 + times! And many webmasters use it on multiple sites, so it’s probably being used on closer to 25-30,000 sites!

22,000 downloads of Internal Link Building

(Click to enlarge)

Update 2 : To download the plugin, you need to add my RSS feed to your reader. The download link is now in my RSS feed’s footer . That is to say you can find a link to download below any post, but only if you read via RSS.

Some folks have complained about the need to subscribe. And I understand where you’re coming from – it feels a little pushy and you probably already have a bunch of subscriptions.

But there are good reasons to subscribe to my rss feed (besides it being free):

1) To hear about updates to the plugin or new plugins and SEO tools I release.

2) To learn new SEO techniques. If you like my plugin, aren’t my other SEO ideas worth your attention?

Key info on Internal Link Building:

Internal Link Building gives you an admin panel to assign keywords to given destination URLs. The point being that your website will link within itself a la Wikipedia – every time a keyword occurs, it links to the page you defined.

Internal Link Building plugin admin panel

So: You can rank like Wikipedia, without being Wikipedia. Ok, that’s exaggeration, but the tool improves your internal navigation / link structure a lot.

I got the idea from Jim Boykin’s Internet Marketing Ninjas, which includes a similar tool.

Also note: Marios Alexandrou of All Thing SEM updated the plugin for WP 2.9+ and currently handles tech support.

Functionality Specifics:

To use the plugin, the settings page is under the Posts menu -> Keywords in 2.7+. It’s under Manage -> Keywords, in older versions of WP (up to 2.5 or 2.6) .

Edit Keywords From The Posts Menu

1. This plugin allows you to mass-upload keywords. So you just need to prepare a CSV file in Excel and then copy-paste it into the mass-upload box in your admin panel and then click upload! This is great for larger sites targeting multiple keywords that want to speed things up.

2. It’s up to you whether you make cAsE ReLeVaNT to your links. Check the “Exact Match” checkbox for it to only match when the case is the same as you typed the word into the admin panel. Leave it unchecked to have all cases link to your selected page.

3. Post-level overrides of globally-assigned keywords. Maki, of Dosh Dosh Internet Marketing, pointed out that similar plugins exist. True, but they don’t allow post-level overriding of a given keyword. This plugin does. So if I can link to my homepage every time the words SEO or internet marketing appear, but then link to, Tad Chef’s SEO 2.0 blog with the word SEO, or Joy’s internet marketing.

Internal Link Building plugin post-level override

4. Link to sources or affiliate links whom you reference a lot. That, for me, would be useful so I could cite Maki, SEOmoz, XMCP, and others more easily.

5. Build internal links automatically to pages you regularly reference. For instance, I can just say add my rss feed to your reader and the phrase gets linked on its own.

6. Make a link nofollow. For example, if you link to particular Wikipedia pages a lot then set the nofollow to be automatic.

Click to expand:

Add lots of keywords, have them link once or more times, use exact match if wanted, nofollow some links etc.

Add multiple keywords to one page, or one keyword to multiple pages, have it nofollow, have it link numerous instances on the page, use exact matching or not etc.

7. Link multiple keywords to a single URL. Target all a page’s keywords at once! Just put a space, a  pipe (eg |) and a space between the multiple keywords. E.g. affiliate | affiliate marketing. More efficiency! More time savings!

8. Link a single keyword to multiple URLs. I’m not quite sure why you’d want to do this, but some people asked for it, so there you go!

9. Pick the number of times a keyword will link to a particular URL. If you only want the words social media to link to your social media category once, you can do that. Notice that social gets linked next, since I also have that keyword assigned to link to the same page.


1. Will this plugin overwrite links in older posts using keywords I set to link to particular pages?

– Where a post already links out using given keywords, the plugin will NOT overwrite it.

2. Can we make this link out in a post only a set number of times?

– Yes, this is possible with the new version of the plugin.

3. Can we make a set of URLs to link to, and have it link at random?

– Yes, this is possible. The plugin has been updated, so if you downloaded it on the first or second day it was live, you might want to get the new one. You just need to separate the URLs with | symbols in the URL field.

4. How is this plugin different from other similar plugins?

– They do not have the post-level override functionality. They also don’t have mass upload through a CSV copy-paste functionality. A third difference is that multiple keywords can link to a given URL, or one keyword can link to multiple URLs (see #6 and #7 for more).

6. Where is the post-level override?

– It’s in a box below the main content area in /wp-admin/post.php (or post-new.php). I.e. When you write/edit individual posts, scroll down and you’ll see it.

7. How do I link multiple keywords to URL, or one keyword to multiple URLs?

– Type the different keywords or URLs out with a pipe symbol ( | ) in between them. It’s found just above the enter key on most qwerty keyboards; you press shift+| to make it appear (without shift you’ll get a backslash: \ ) .

8. How do I install this?

– Download the file. Upload it to the wp-content/plugins/ . Login to WordPress. Activate it within the plugins admin page.

Like this plugin idea? Be the first to hear about future releases: Get my RSS feed.

Plugin Bug Fixes

1) Apostrophes within keywords can now be used. So if your friend O’harra is always getting links from you, just set up O’harra and don’t worry about it.

2) URLs that are just being shown, e.g. are no longer having keywords within them linking out. E.g. services won’t link to a page you’ve set.

3) Posts and pages that are set as link-love destinations won’t link to themselves. Yay! Better aesthetics :).

4) Blockquotes and lists can now feature links within them. So go ahead and cite this:

Internal Link Building is awesome!

5) Simple Tags can now work with ILB, with a little ‘child’s play’ hacking on your part, per my awesome developer Aaron.

7) Image tags with keywords in them (e.g. in the alt or title) are no longer breaking.

8 ) Jeff and John of SEO Design Solutions got the plugin up to date for WP 2.7 and removed the bug on the new post / post editing admin panels.

9) Chris Balicki of Web Systems helped out earlier as did Matt Longley of Site Source 101.

Bonus Advantage of Internal Link Building

This is something I’ve noticed since installing the plugin: My average pageviews seen per visitor has gone up from 1.4-1.5 to 1.9-2.0. Woohoo! Go extra frequency/repetition and brand recall!

Like this plugin idea? Be the first to hear about future releases: Get my RSS feed.

Tags: ,

Sidebar Story


  1. How does this work?or how do i know if this is working on the site with a link builder?

    Comment by jerome - September 25, 2009 @ 1:53am
  2. Great plug-in! Will install this and remove my previous one. Only gripe with that was that it also linked keywords in which caused some pages to break!

    Comment by Mr UK - October 8, 2009 @ 5:14pm
  3. amazing, worked like a charm! had to search it for it alot in your feed but was worth it in the end :) thanks and keep up the good work running

    Comment by saad - October 9, 2009 @ 4:58am
  4. Guys - we've modified this plugin again to ensure it doesn't try to add links to keywords which appear in Wordpress captions (which break the captions as a result). Is there somewhere I can upload the modified plugin? Zac

    Comment by Zac - October 13, 2009 @ 10:38pm
  5. This is actually very interesting. I have installed the plugin and I am looking forward to see if it could actually generate the desired results.

    Comment by Stempel - October 17, 2009 @ 2:35am
  6. Is it possible to have this plugin also insert Links on the user generated Comments? sometimes the post content doesnt have the Targeted keyword but Users coments Do.. I have a blog with a lot of users comments and would love for this Functionality to be added.. Please advice.. Thnx.

    Comment by GC - October 20, 2009 @ 11:47pm
  7. That's kinda clever, hadn't thought of it. Doesn't do that currently, but you're welcome to edit and create your own version. I'll happily distribute it here as well and link to you for credit.

    Comment by Gabriel Goldenberg - October 21, 2009 @ 12:16am
  8. I am looking forward for your feeds to get it delivered in my mail. It seems a nice plugin to build your links.

    Comment by Gaurav - November 2, 2009 @ 5:46am
  9. Many thank for the plugin! I had some troubles with similar plugins on WP 2.8.5, but yours works perfectly. Keep up your work!

    Comment by sairin - November 6, 2009 @ 4:15pm
  10. Excellent plugin - working great with affiliates. As mentioned in other comments I would love to see the title attribute be integrated into the plugin.

    Comment by Rasmus - November 6, 2009 @ 5:13pm
  11. Hi Gab I am no techie at all. I was looking at internal linking my blog which has lots of posts(over600). I was looking at RB-Internal Linking, and I must admit I found it slightly complicated and no real instructions on how to set it up correctly(Its in my plugin category but doing nothing. Yours seems workable, Although i would like to ask if you have a video to show the whole process for us non-techie bloggers:) It will be much apprciated.

    Comment by charli - November 8, 2009 @ 6:37am
  12. hey Charli, That's a good idea. ATM I'm too busy, but I'll try to make one during winter break! Thanks for the tip!

    Comment by Gabriel Goldenberg - November 9, 2009 @ 4:54pm
  13. Much better than the "Internal link plugin". Muchas gracias, Goldenberg! Keep it up.

    Comment by Lasse - November 10, 2009 @ 5:17pm
  14. I've been using this plugin for a while and it has worked wonderfully! However today I had my first need to use the exact match option to keep a capitalized version of a keyword from being linked. Even when the checkbox is selected, the keyword is linked. Any ideas what I might be doing wrong so that keyword will be linked, but Keyword won't be?

    Comment by Marios Alexandrou - November 13, 2009 @ 11:07pm
  15. I think I found the bug in the code. On line 167 if you replace the @ sign on either side of the $needle definition to / the exact match options work. I'm having trouble finding documentation on the @ symbol though so I don't know if my change breaks something else.

    Comment by Marios Alexandrou - November 14, 2009 @ 8:45pm
  16. Erm, I'm clueless about that, Marios, tbh. If you can edit the code and make it work, that's great. I'd love for you to send me your updated version so I can offer it for download as well. Be good if you detailed what version of WP you're on and what other plugins are running, since those sometimes conflict.

    Comment by Gabriel Goldenberg - November 14, 2009 @ 8:50pm
  17. I'm happy to share the fix although like I said I can't figure out what the original bit of code was trying to do. Anyway, to get the exact match working, just replace this line $needle = '@([^a-zA-Z0-9\[\]])@'; with this line $needle = '/([^a-zA-Z0-9\[\]])/';

    Comment by Marios Alexandrou - November 17, 2009 @ 11:52pm
  18. Hey! Great job, it's the only one that worked for me in hebrew. It would be nice to have an option that removes a link from a specific post after setting a global rule. I defined an inner link to a post, and I don't want to have self-links on that post. Thank you.

    Comment by Yair - November 27, 2009 @ 3:30am
  19. Thank you for this wonderful plugin! It's just what I was looking for. One thing only: how to prevent the plugin from referring to the link occurring on the same page?

    Comment by Dilyara - January 5, 2010 @ 2:30pm
  20. Gab, I've got some feature ideas I want to add to this plugin. I don't have the time to do them myself so I was wondering if you've got a plugin developer you could recommend that won't break the bank? Thanks!

    Comment by Marios Alexandrou - January 11, 2010 @ 6:34pm
  21. I will download your plugin right now.

    Comment by seo-dk - January 13, 2010 @ 7:54pm
  22. This is the coolest plugin ever!

    Comment by Jonathan Ingram - January 14, 2010 @ 9:48pm
  23. gr8 plugin. I've one query suppose I set keyword wordpress. And my post contains div contents here . Then it mess up output since it convert class name to link.I think it should avoid existing tags.

    Comment by Kishor - January 15, 2010 @ 6:20am
  24. Just ignore my first comment. gr8 plugin. I’ve one query suppose I set keyword to wordpress. And my post contains some HTML data having wordpress as id or class name for any HTML tag then that time plugin changes this with link.I think it should avoid existing HTML tags.

    Comment by Kishor - January 15, 2010 @ 7:49am
  25. Excellent Plugin. Thank you Gabriel

    Comment by Wilfredo - January 29, 2010 @ 3:24am
  26. thanks for plugin I will try it now..

    Comment by joseph - January 31, 2010 @ 5:25pm
  27. Thanks again for this plugin. As well as helping with page views, internal linking is helpful for seo. Cheers!

    Comment by jeromys - January 31, 2010 @ 9:02pm
  28. Hey Gab, firstly a thousand thanks for creating this plugin, I've been using it for a while now on numerous clients and its one of the best WP SEO plugins around in terms of what it can achieve! One gripe though which I would absolutely love if you could fix: when you enter variations of a keyword can you make "times" refer to overall times any of the variations are used? It can become messy if you have multiple variations of the term within the same blog post...

    Comment by jaamit - February 2, 2010 @ 1:33pm
  29. I already have a link to post plugin. Will it restructure my previous internal linking? And how well will it benefit me. newbie :)

    Comment by charli - February 23, 2010 @ 1:40pm
  30. I can't even describe what a great plugin this is. I was looking for something similar to this one when I came across a link to yours. I'm very glad I did because your plugin has already solved issues I wouldn't have even thought would of came up and I love how it won't replace links that are already there. This will truly be an amazing plugin to easily improve a sites internal linking structure. Thanks a ton!

    Comment by Austin - March 5, 2010 @ 2:52pm
  31. Hi I'm finding that this plugin messes with other plugins and completely messes things up. the pluginn in question that it messes up is the "who sees ads" plugin

    Comment by Bob - March 15, 2010 @ 2:09am
  32. aille aille aille this is the 5th plugin I am trying to match URL's with keywords - only one works - and I was pretty sure this one would work too...but no ! nothing is hyperlinked ! I tried with different themes, it just doesnt work. Does this plugin need to be upgraded ?

    Comment by Marie - March 18, 2010 @ 3:22pm
  33. This is awesome!

    Comment by Wynne - March 19, 2010 @ 9:49pm
  34. Hi, Does this plugin limit the number of links it places on a post for each keyword to 1. E.g. If SEO appears 15 times throughout a post, does it just link from the first SEO word citation or from all 15? Matt Cutts said something about over linking one page to another can hurt your rankings. Or that maybe ranking from one page to another with different anchor text. Ahh not sure now. But yeah, does it limit the amount of links it inserts into a post?

    Comment by Aaron - April 5, 2010 @ 1:08pm
  35. @Aaron - I can answer that for you - it can limit the number of times a particular phrase if you use the "times" setting - try for yourself and you'll see. However unfortunately if you set multiple variations of the same phrase to link to a single page, it will count all of these separately. So if you had "blue widget", "blue widgets", "bluewidgets" and "blue" all set to the same URL you could end up with multiple links to that page if you used them all in one post. This can be annoying and Gab if you're listening and you have any time I'd love to be able to set "once" across all of the variations...

    Comment by jaamit - April 5, 2010 @ 7:10pm
  36. when I activated the plugin I can not find the setting even on the post section.Does anyone know how to fix? thanks

    Comment by tony - April 9, 2010 @ 12:35am
  37. Thanks for the answer.

    Comment by Aaron - April 9, 2010 @ 12:15pm
  38. Can anyone submit the code to add target="_blank" to the link generated ~ I DO want to link to external websites, but I don't want to loose my customer :-) While posting how do I check I have the latest version?

    Comment by Paul - May 1, 2010 @ 6:10pm
  39. It's listed as "Keywords" under the "Posts" category in the main panel. hth

    Comment by nutchasher - May 7, 2010 @ 11:48am