Internal links are one of the biggest levers of Google rankings and traffic increases for a website.
The following guidelines were written for my clients and for internal use – they are intended to make internal links easy to understand for non-technical SEO people.
What is a Link and What is Anchor Text?
Yes, this is as basic as it gets. A link is a hyperlink. It is those coloured or underlined words that you can click on that take you to another page or to another part of the same website or page.
The anchor text is the text contained within the hyperlink. This is important as this whole guide is based around the text that you use in those links and how often they are used. Anchors link to targets – that is the page you land on after clicking.
TL:DR – The Internal Linking Checklist
- Add at least 3 internal links on each blog post
- The destination page should only be linked to once – except where the second link is a call to action
- Create a list of keywords by page
- Export an internal link list from your favourite crawler
- Highlight when two or more links come from the one page in menu items
- Change the anchors to reduce the primary keyword to less than 50%
- On a small site, 100 pages, each page should have a minimum of 10 incoming links
- Add many different secondary keywords
- Check crawl score to add links to pages with a low score
Why Internal Links are Important
Google uses the text in anchors as an indicator of the page’s topic. This is true of links from other websites and links within your own website.
Using an anchor like “click here” or “website” tells search engines nothing about the page that is being linked to.
Using “link building agency” and linking to this page: https://befound.ie/link-building/ informs Google that the page being linked to is about a link building agency.
Internal links are almost as important as external links, to help pages rank higher in Google.
Over Optimising Anchors
A quick bit of history. In 2012, Google rolled out a huge update called Penguin. Before 2012, SEOs had discovered that it was easy to game Google’s algorithm by using lots of exact match anchors to rank a web page.
Exact match anchors are anchor text that focuses solely on one anchor that is the main keyword for the page.
Penguin turned this optimisation on its head by penalising websites that had used a lot of exact match anchors. Many of these websites never recovered. This is still an issue for internal and external anchors.
Too many external exact match anchors will today result in a web page losing traffic and rankings.
Using too many internal exact match anchors can make it difficult to move a page into the top 5 results in the SERP.
For internal links, use 50% exact match and the balance as synonyms and secondary keywords.
Create a Keyword Sheet
You can copy this keyword sheet from here. Copy the sheet to your own Google Drive. Please do not request access to the sheet, just copy it.
Some of the columns on the sheet require some explanation.
- A – Page/URL
- B – Can the page be indexed
- C – Indexability Status
- D – Primary Keyword
- E – Secondary Keyword
- F – Page/URL Meta Title (Search Engine Title)
- G – H1, Page Heading
- H – Crawl Depth – clicks required from home page
- I – Link Score – low = few links, high = many links
- J – Inlinks (total links from other sites to the page)
Without a clear list of researched keywords that each page is intended to rank for, a website will always remain under optimised.
Create a sheet with the URL, title, H1, and whether the URL is indexable. This can easily be exported from your favourite crawler (see next section).
If I am doing this on a website that has traffic, I prefer to also have columns that show the total analytics traffic, click data from Google Search Console (GSC), and impression data from GSC.
Adding the traffic and GSC console data allows me to start at the most important pages.
(Note: I prefer to use Google Sheets and allow access for everyone that is working on the website.)
Finding Secondary Keywords & Synonyms
Every website should really have a list of target keywords. I understand this is not always the case.
Every page and blog post published on your website needs to target certain keywords, otherwise what is the point of that page?
Creating the sheet and listing primary and secondary keywords is not fast. There are long-term benefits in being organised. It is very easy to publish posts or pages that conflict with each other – that is pages that target the same or very similar keywords. This often results in neither page ranking highly.
There are several places to find related keywords, but bear in mind that the related keywords cannot be the main keyword for another page.
There are various online dictionaries that will provide synonyms, but they are not great for understanding related topics or latent semantic analysis (a method of grouping together and identifying patterns, concepts, and relationships between keywords/text).
There are four places I use to generate secondary keyword lists:
- My brain
- Google Search Results
I know if keywords are related and just add them in when they are obvious.
Google’s Search Results
There are three places on Google search that show related keywords. As you type, Google will auto complete, these suggestions are useful.
The People Also Ask Box
At the bottom of the search results page, there are related searches.
Google Search Console
GSC is great when you already have pages indexed. Sort the GSC results based on page/URL and then click to see the queries related to that page. The click and impression data help decision-making.
Ahrefs is a paid tool but they have a great $7 deal for seven days.
Take the Wikipedia page for the page topic and enter it into Ahrefs and you will see a list of all the keyword Ahrefs have this page ranking for.
This shows the importance of keywords outside of the primary one. Most traffic to a web page will come from keywords that are not the main term, but related and long tail keyword terms.
Use a Website Crawler to Gather the Internal Links
Without using a website crawler, collecting the anchor information will take a long time and will never be precise. I use Screaming Frog to export anchors and targets. There are some free website crawlers like Beam Us Up – http://beamusup.com/
If you do not know how to crawl a website or do not have access to a crawler, ask your SEO company to provide you with a crawl – this is essential. (I will provide this for any of my clients – free of charge)
Optimising Internal Link Anchors
This is not fast, but it is worthwhile. The biggest problem is separating the in-body anchors from any menu anchors at the top of the page and navigational links in the footer. This is only a problem for all pages in the menu or footer.
See the example sheet here, tab named Internal Links.
This sheet has 5 columns:
- Source Page – the page where the link is coming from
- Destination – the page linked to
- Alt Text – if the link is an image, the alt text used
- Anchor – current text
- New Anchor – it is useful to keep a note and check percentages
The anchor text in the top navigation, navigation in sidebars, and links in content all count toward the anchor text ratio. The anchors in the footer do not count. Google appears to disregard anchor text used in the footer, but still uses these links as navigation.
Once you have all your data in a sheet, sort by column B. You can then deal with the links to a page one by one.
Use conditional formatting in column A for the one target page in column B. Highlight all duplicates in column A.
Use this custom formula in Google sheets: =countif(A:A,A2)>1 Note the formula must always equal the rows. I strongly suggest doing this in Excel, as Google Sheets is unreliable with multiple separate duplicate checks in the one column.
The first 251 rows in this sheet refer to one page, the home page of this website. That one page is part of the menu, this means there will be a link from every page on the site to that page using either the anchor text or the alt text if the link is an image.
Highlighting the duplicates in these 251 rows shows only a few pages with in-text links.
Here are some examples worked through.
Rows 2 and 3 are both the home page linking to the home page.
- Anchor 1 – this is the menu item
- Anchor 2 – this is a hashed link
Hashed links will appear in various places on a website. This is a hashed link https://cubedigital/#. These links can be used as anchors in tables of content or for an event on the page. This is an event, the acceptance of cookies.
Rows 8 and 9, 17 & 18, 21 & 22, etc.
One link is the menu and the other is in the body content. As almost 100% of the links back to the home page are using the same text, this page is over optimised. Changes are needed to the in-body links, to start using the secondary keywords.
The anchor text for this page is over optimised and will benefit from a more distributed use of linking text.
The second page on this list starts at 252 and are all the links to this page: https://www.caminoadventures.com/blog/scallop-shell/
This page has only recently been published and therefore it looks like there are lots of links to the post. There are, but these links are almost all coming from sidebar links that list the most recent posts. Because of that, I will discount all of these as anchors as they will disappear as more posts are published and it drops out of the recently published list.
Rows 253 to 263 are hashed link/page anchors created by the table of contents. This text can be ignored.
Rows 276 to 280 and 306 to 310 are the post’s listing in the blog stream/archive and listings in the category archive – these can be ignored.
Rows 351 to 353, 371 to 373, and 435 to 437 are all links from the related post plugin that displays at the bottom of all posts.
From this, we can see that this post has no in-content links from other posts or pages on the website and would rank better with some added links.
Both of the above examples are over optimised for one anchor text. Now I have to go and change some of the anchors that are already there on the page to use secondary keywords. Then find other relevant text on different pages to add new link text.
There are two easy ways to find text within pages to use as anchors.
- Use the site command. g. site:cubedigital.io “keywords” and Google will display a list of topically relevant pages.
- Go to GSC and enter the keywords.
Then click on pages to get a list of topically relevant pages.
Open these pages and start adding secondary keywords.
Where to Start
I suggest starting with the pages that have the highest traffic and making sure they have links from other pages – go for the biggest quick gains.
If there are no pages with high traffic, start with the pages with the most impressions in Google Search Console.
OR start with the best converting pages/product pages.
Where you start will depend on your type of monetisation – services, products, adverts, or affiliate.
How many internal links should each page have? I suggest 3 internal links with posts of 1,000 words. On a small website of 100 pages, aim for at least 10 incoming links for each page – more for important pages.
Off Topic Pages
There will be an occasional page on your website that is slightly off-topic and therefore is harder to add an internal link to and from.
For example, one client has a page on budget changes. This is a highly trafficked page but only once per year for about six weeks.
This is a difficult page to add internal links from. In a situation like this, it is better to add a paragraph at the end and link to other pages.
Exceptions to the Above
As is usual with SEO, and life, there is an exception.
If you have a website that has international pages set by href lang tags that target different counties or landing pages that target different cities, it can be useful to use the same keyword for each of these pages. In these cases, it is better to get specific advice.
Reviewing a whole website for internal linking can take a few days or longer for large sites, but after great content and external links, this is the next biggest driver of traffic increases. If you found this helps, you might also like our post on how to rank higher on Google.