In this post, I’m presenting an updated lite version of my TIPR model for internal linking optimization.
Since presenting my TIPR model at the Tech SEO Boost conference in 2018, countless sites have applied the model successfully. The original model isn’t easy to implement for everyone, so I came up with a lite version. Don’t get me wrong, the original is still the better choice for large sites, but TIPR lite is sufficient for smaller sites.
The idea behind TIPR was to find weak points in internal linking structures. You can improve ranks and increase organic traffic by fixing them and uncovering hidden gems on your site.
Internal linking has become an even stronger SEO lever since 2018. The best thing: the larger your site, the more important it is. Even better: it’s a lever you can control 100%. You don’t need to persuade someone else to set a link or create lots of content to see results.
PageRank hoarders vs. wasters
TIPR (lite) helps you find two types of pages on your site: hoarders and wasters.
PageRank hoarders = pages with lots of internal and external links that don’t link out much
PageRank wasters = pages with few internal or external links that link out a lot
The point that most SEOs miss is that internal link graphs don’t exist in isolation. You find PageRank models in most modern SEO tools (for example, Page Rating or OnPageRank) but for a better model, we also need to factor in backlinks. The web exists of links and they come at different strengths. No model is perfect, but ignoring backlinks in internal link modules leads to worse decisions.
Back in 2018, Russ Jones (RIP) asked me a good question after my TIPR presentation: “Would you weigh internal links from the navigation equally as links from the body content?” At the time, I said “yes” but couldn’t provide an uncomplicated solution. Russ was a smart guy! From Google Patents, we know that PageRank weighted by projected user engagement.
Since Screaming Frog version 13, it’s easy to add link position (content, footer, header, etc.) to the TIPR model and weigh links in the body content higher. Let me show you how.
Building a TIPR Lite model
To build TIPR Lite, you need
A crawler - preferably Screaming Frog because it shows you the link position, but it might also work with other site crawlers like Deepcrawl, Oncrawl, Botify, Jetoctopus, Ahrefs, Semrush, Ryte, etc.
A tool that reports backlinks like Semrush, Ahrefs, Moz, or Majestics
Google Sheets or Excel
Gathering data for TIPR Lit
Step 1: Export backlinks by page from your backlink tool of choice and import it to Google Sheets/Excel (I like to have # of backlinks and # of referring domains to filter out spammy/low-quality link sources).
Clean up the backlinks export:
Remove URLs with a non-200 status code
Remove backlinks to non-HTML files like images
Step 2: Crawl your site, export internal links from Screaming Frog (click on Bulk Export -> Export inlinks) and import it into your sheet. Careful: files can get really big. The inlinks export went from 16K to 7K rows after cleaning it up.
Clean up the inlinks export:
Remove links with non-200 status codes
Remove external links (links pointing to other sites), links to images and other non-HTML filetypes (you only want Type = Hyperlinks in your sheet).
Step 3: In your sheet, create a pivot table of your inlinks:
rows = destination
columns = link position
values = source
Step 4: In Screaming Frog, filter the Internal tab by HTML, export it and import it to your sheet to get the # of inlinks and outgoing links per URL.
Step 5: Create a Summary tab on your sheet on which you VLOOKUP all metrics by URL:
Incoming links position
In the end, you should have 5 tabs: backlinks, inlinks, inlinks pivot, internal HTML, summary. You can, of course, name them however you prefer but the content should be the same for the model to work out.
Applying the model
So, what do you do with this thing? As outlined in the original TIPR model, we’re looking for two things: 1) pages with a lot of incoming links that don’t link out much and 2) pages with few incoming links that do link out a lot. The action you want to take is to either add or take links off.
To find these pages, create a new column with the delta between inlinks and outlinks and sort the whole table on the Summary tab by either the highest or lowest delta. That’s your starting point.
Now, factor in the link position and number of backlinks. A page with lots of incoming links and few outgoing links that gets all incoming links from the top navigation might have the potential to link out more to other pages (if relevant). At the same time, a page with few incoming links but a lot of backlinks that doesn’t link out much could be a gem.
Exceptions prove the rule. You will find some pages that don’t fit well into the model. One example is author, privacy, or Terms of Service pages that are usually heavily linked to but don’t link out much. The homepage is another example. Just leave these pages out. You can manually remove them or sort out header, footer, navigation, and aside links.
You might also find that now every page on your site has backlinks. That doesn’t diminish the model. In fact, it makes it better! The whole point about optimizing internal linking is that internal link graphs are often rounded or balanced while backlinks are the opposite - and that has to be factored in!
The lightweight way to about it is to simply consider the number of backlinks when looking at internal incoming or outgoing links. If you want to take the model to the next level, add average DR (or another proprietary metric) and most-used anchor text to each URL. I’m keeping it simple in this introduction, but there are really no limits to how complex you can make it.
CheiRank and logfiles
In the original TIPR model, I’m using crawl frequency from server log files and CheiRank to get additional information about where PageRank gets lost and track the impact of making changes.
CheiRank is an inverse PageRank that tells you where the most communicative nodes sit in a structure. In plain terms, CheiRank tells you which pages might link out too much in the context of a website. The proxy metric in TIPR light is the number of outgoing links.
Server log files are extremely underleveraged for SEO in my mind. I don’t include them in TIPR Lite because many SEOs still struggle to get access to log files, and some businesses simply don’t have them or delete them within 24h. That’s a shame. Luckily, solutions like LogFlare make it easier to solve that problem. Anyway, I want TIPR Lite to be accessible so more SEOs can get a taste of the sweet, sweet internal link optimization nectar. So, I’m leaving logfiles out until they get universally more accessible.
CheiRank and log files become more valuable the larger a site is. TIPR Lite is built for smaller sites, so I don’t think much gets lost here. On the flip side, if you’re dealing with a large site, go the extra mile!
Internal link optimization is just a means to an end
Run the TIPR (lite) model at least once a year. Internal link graphs evolve with more pages, and as websites add remove link modules, the whole balance might shift. Editorial guidelines change. Sites gain links. Each of those changes the dynamics of PageRank flows.
When do you know you’ve successfully applied TIPR Lite? Well, when your organic traffic is growing, and ranks are rising! TIPR Lite is just a means to an end, and that end is more traffic. One way to account for that is to export your site’s URLs and the main keyword they rank for.
Google Search Console won’t show the ranking page when you export queries, so you need a 3rd party rank tracker. Semrush has a feature under Position Tracking -> Pages that allows you to export keyword ranks by pages, or you just use their Organic Research report. Ahrefs and Ryte also allow you to export keywords by page. You might just need to transform the data a bit, but with basic Google Sheets/Excel skills, you’ll be fine.
Since pages rank for many keywords, I suggest filtering for the keyword with the highest search volume or relevance and using its rank as a performance indicator for how well the URL performs.