Most SEO audits have two things in common:
- they’re too technical;
- they take DAYS (or even WEEKS) to complete!
This one is different.
It takes hours, not weeks, and you won’t need a degree in computer science to follow along.
Here’s a breakdown of the SEO audit process we’ll be following:
- Steps 1–4: check for BIG issues (that may be holding your site back)
- Steps 5–9: uncover easy-to-fix on-site problems;
- Steps 10–12: analyze organic search traffic (and find low-hanging opportunities);
- Steps 13–14: backlink analysis (VERY important!);
- Steps 15–16: content audit AND “content gap” analysis.
As you can see, the aim here isn’t to show you how to do a “technical” SEO audit (which you can do with almost any SEO site audit tool).
The aim is to provide a comprehensive approach to auditing your website from an SEO perspective. This means auditing your rankings, backlink profile, existing content… anything that could be hindering your search performance.
Let’s get started.
NOTE. The original version of this post was written by David McSweeney in 2016. But we gave it a HUGE rewrite for 2018. Still, I wanted to make sure David received at least some credit for his work, as the original was FANTASTIC. I hope my updated version can do it justice. 🙂
Tools required for the SEO audit process
Here are the tools I will be using during the audit process.
- Google Analytics
- Google Search Console
- Google PageSpeed Insights
- Google’s Structured Data Testing Tool
- Ahrefs (7-day trial)
- SERP Simulator
- Web Page Word Counter
Not all of them are essential, but they will help make the process easier.
For this walk-through, I’ll be auditing two sites.
In steps 1–9, I will be looking at Simple Life Insure—a life insurance broker from California.
I will introduce the second site before step 10.
Step 1. Check that only ONE version of your site is browseable
In a moment, I’ll show you how to begin crawling your site for SEO issues.
But first, you need to check that only one version of your site is browseable.
Consider all the ways someone could type your website address into a browser (or link to it).
Only ONE of these should be accessible in a browser.
The others should be 301 redirected to the canonical version.
In the case of Simple Life Insure, everything looks fine.
You can see that if we type the HTTP version into the address bar, it automatically redirects to the HTTPS version.
Same goes for the www version. It redirects to the non-www version.
To be honest, the non-www to www issue (or vice-versa) is rarely a problem, but I have seen a lot of sites with redirection issues for http to https.
Even my blog has issues!
So that’s something that should be fixed as a priority.
If all is good, make a note of the canonical version (e.g., https://simplelifeinsure.com) and move on to step #2.
Step 2. Start a website crawl
In a moment, we’ll run through a few more manual checks on the website.
But first, we need to start a website crawl running in the background.
An SEO crawler will spider the site in the same way as Google and give us some useful information on the structure and current SEO setup.
There are quite a few SEO site audit tools capable of doing this, such as
Both are great options, but as this is the Ahrefs blog, we’ll use Ahrefs’ Site Audit.
Site Audit > New Project > Paste domain in the ‘Scope & seeds’ section > Uncheck any 301 redirects.
For the most part, you can leave the rest of the settings as they are.
This will ensure that Site Audit also checks all external links on your website and any JS links.
When you’re done, hit “Create project.” Ahrefs’ Site Audit will start working away in the background while we continue with the audit.
Step 3. Check Google for indexation issues
Not being indexed in Google = no rankings… ever!
To check that your site is indexed, go to:
Google Search Console > Google Index > Index Status.
Don’t use Google Search Console?
No worries, search in Google using the
site: search operator.
This will also tell you how many pages Google has indexed for your domain—it’s just not always as accurate as Search Console.
For simplelifeinsure.com, Google has 226 pages indexed.
If you don’t see any results for this search, then you have issues.
It means that no pages on your site are indexed, which means no organic traffic whatsoever.
This is usually caused by a rogue x-robots-tag HTTP header.
To check for this, you will need access to your site’s header.php, .htaccess, or server access file.
This article explains everything you need to know about this.
It’s worth cross-referencing this number with the number of internal pages found during the site crawl (the one we set up in step #1.)
(Of course, you’ll have to wait for this to complete before doing so.)
To do this, go to:
Site Audit > Project > Internal pages.
Hmm, it looks like our crawl discovered 267 pages, so why are only 226 pages indexed?
My first thought is that some of these pages are noindexed. Let’s check.
Scroll down, and you should see a list of errors found during the crawl.
It looks like this isn’t the issue here, as the crawl didn’t uncover any “noindex” tags.
Here’s what you would see if the crawl did discover “noindex” tags on some pages:
Let’s scroll down further and check the HTTP status codes for the 267 pages.
It looks like we’ve found the reason for the discrepancy: only 194 pages are live (i.e., 200 HTTP status) pages; the rest are redirects or broken pages.
But now we have the opposite problem… there are more pages indexed in Google than live pages on the site.
So what gives?
If we go back to the site: search and sift through the pages, here’s what we see:
It looks like Google is indexing elements of the homepage as separate pages.
These have no content on them—in fact, they’re broken—and should be removed from the index.
Step 4. Check that you rank for your brand name
Go to Google and search for your brand name.
Unless your site is very new (or the brand is a very generic phrase), I would expect to see your site as the first organic result.
I would also expect this first result to be your homepage.
If you don’t rank in position one but do rank further down in the results, then chances are Google thinks another site is a more appropriate result for that term branded term.
For example, take Beamer.
It looks like they’re currently in position #12 for the branded term “beamer.”
This is one of the issues you run into when you use a generic word as your brand name; it can be difficult to rank because most people don’t want to see your website when searching for the “branded” term.
So what’s the solution?
Brand building and link building.
That means doing things like:
- building some strong, branded links;
- running a PR campaign (i.e., getting mentioned and linked-to from big well-known websites)
- building some citations on business directories;
- making sure the site has a Google Business listing;
- ensuring the site has a presence on all the major social networks.
Do that, and you should slowly climb up the ranks.
Remember, searcher intent drives the #1 result.
If most people searching for the “branded” term are looking for your business, then Google will start to demote the other sites and push you to the top.
But what if you’re nowhere in the SERPs?
If you’ve ruled out indexation problems (which you should have!), then I’d say this is a strong indication of deeper problems, such as heavy algorithmic or manual penalties.
I recommend checking Google Search Console for any indication of penalties.
Ideally, this is what you want to see:
Step 5. Manually perform some BASIC on-page SEO checks
Let’s start by checking a few on-page fundamentals.
I recommend starting with the homepage, but you should also do this for other important pages on your site.
Just to clarify, when I say “most important,” I mean the pages that receive the most organic search traffic.
If you used Ahrefs’ Site Audit to run the crawl, you can find these easily by going to:
Site Audit > Project > Internal pages > Sort by organic traffic.
Simply start at the top and work your way down. 🙂
We’ll go to the site’s home page in a browser and right-click to view the source.
We’re just going to have a quick check on some basic on-page SEO here.
To make things easy, we’ll ask a few questions:
- Does the page have a well-crafted, clickable title tag?
- Is there a custom meta description? Is it optimized for maximizing click-throughs?
- Is there only one instance of the H1 tag? Is it well-optimized?
- Are subheaders (H2, H3, etc.) being used correctly?
Let’s start by checking the title tag.
<title>Instant affordable life insurance quotes - SimpleLifeInsure.com</title>
First, let’s make sure that it isn’t truncated in the search results.
Looks good to me!
It also appears to be well-written, and I imagine it would entice the click.
But does it contain a relevant keyword with decent search volume?
Let’s check the search volume for “affordable life insurance” in Ahrefs’ Keywords Explorer.
But it turns out there’s more search volume for the parent topic: “life insurance quotes.”
I think Simple Life Insure must be Ahrefs’ users because they already incorporated this keyword seamlessly into their title tag. 😉
OK; let’s move on to the meta description.
It’s important to note that the meta description does not directly influence your ranking.
But a well-written and enticing meta description can help get you more clicks.
Think of it as your advert in the search results.
A good meta description should communicate key USPs for the product or service you are offering.
For example, an e-commerce site could include points like “FREE delivery,” “No quibble returns,” “Cheapest prices,” etc.
Here’s the current meta description for Simple Life Insures homepage:
I think that does a pretty good job.
So no change required.
Let’s check the headers (and subheaders).
The H1 tag is still an important on-page ranking factor.
So it’s good practice to use a single unique, descriptive, H1 tag on each page.
For the homepage, you will want to:
- communicate the site’s primary purpose;
- include 1 or 2 highly relevant keywords in the process.
Here is the current H1 tag:
<h1>Compare Affordable Life Insurance Quotes within 1 Minute</h1>
Great. It looks like they’ve incorporated both “affordable life insurance” and “life insurance quotes” into their H1-tag too.
But what about the subheaders?
Subheaders should be used logically to break up each page’s content. They also provide us with a great opportunity to target secondary keywords/phrases.
Try to avoid using generic phrases (“more information,” “details,” etc.) in subheaders.
Simple Life Insures homepage makes good use of subheaders and does not require amendment.
Step 6. Dig deeper into more on-page issues in the crawl report
Unless you have a HUGE site, your crawl report in Ahrefs’ Site Audit should now be complete.
So it’s time to dig deeper and fix any other important on-page issues.
Site Audit > Project > Internal Pages > HTML Tags.
Here you will see a list of all on-page issues found during the crawl.
To help prioritize your efforts, try filtering by importance.
I recommend fixing any Errors before moving on to Warnings and Notices.
You can also check the Social Tags, Content Quality, and Outgoing Links reports to make sure that all on-page issues are fixed.
Step 7. Check for duplicate and thin content
Google HATES duplicate content.
Too much of it and your site can get crushed by Panda.
Content duplicated across multiple pages on your site is bad. But when it’s duplicated on other website’s, it’s even worse.
Site Audit > Project > Internal pages > Content quality.
Look for “Duplicate pages without canonical” errors.
Click the issue item to see the exact URLs that are causing the issue, then fix them.
You can easily find potential duplicate content issues across the web with Copyscape.
Enter a URL, and it will kick back any duplicate results.
For this particular search, there are five results.
Let’s take a deeper look at what’s causing this duplicate content.
It looks like the issue is with the text disclaimer in the footer of the site.
It’s getting flagged because a lot of other sites are using a similarly worded disclaimer.
(In all honesty, it’s probably just a stock disclaimer that everyone uses.)
This isn’t anything to worry about.
I would only be concerned if I saw other websites scraping (i.e., stealing) vast quantities of content from this website, such as entire blog posts.
The issue here is that Google can get confused as to who is the original author of the content, causes the wrong version of the page to rank.
If you spot any “stolen” or syndicated content like this, make sure they link back to the original content on your site from the duplicate version (ideally with a rel=”canonical” link).
Anyhow… duplicate content isn’t the only content-related issue you should be aware of.
Thin content (i.e., pages with very little written content) can also be a problem.
This is because they provide little to no value, and often struggle to rank as a result.
You can use a tool like this to check for thin content manually.
Enter the URL, and it’ll kick back the word count.
I’d be wary of anything under 200 words.
In most cases, such pages should either be “beefed up” or deleted.
Site Audit > Project > Internal pages > Content quality.
Look for “Low word count” errors.
This will reveal any pages with <50 words.
Hit the “?” icon for more information about possible fixes for this issue.
Step 8. Check that your site (and individual pages) load FAST
It has long been confirmed that site speed is one of Google’s many ranking factors.
We also saw a small correlation between page load time and Google position in our study of 2M pages.
But studies aside, it’s clear that a fast loading site provides a better user experience than a slow loading site.
So it’s always good practice to ensure that your website loads as quickly as possible.
Google’s PageSpeed Insights Tool is a good starting point for this. But it’s a bit hit and miss.
Oh, “speed unavailable.” Very useful… NOT.
(I’ve been seeing this more and more, especially for smaller, low-traffic websites.)
So I recommend using a different tool, such as:
As we already ran a full crawl for this site, let’s use Ahrefs’ Site Audit.
The added benefit of using Site Audit is that it will also remove the need to painstakingly check each page manually.
Site Audit > Internal Pages > Performance.
Here you will see any Slow Page issues on your site.
To see which pages suffer from slow-loading issues, just click the issue item.
You will then see the Time to first byte (ms) and Loading time (ms).
It’s then a case of optimizing these slow-loading pages.
For more on the importance of site speed to SEO, and some great tips on how to optimize your site, check out this guide by Albert Costill for Search Engine Journal.
Step 9. Check for structured data errors
The next step in our audit process will be to test any structured data that the site may contain and ensure it is properly formed.
Here’s an example of how it may look in the SERPs:
NOTE. There are many types of structured markup, so it’s worth checking out Google’s Structured Data guide.
Examples of content that may benefit from the inclusion of structured data include:
- Product information;
But you can mark up any type of content to a certain degree (just don’t spam!).
We can use Google’s Structured Data Testing Tool to test existing structured data.
Paste in the URL you wish to test and hit “Run test.”
Google will evaluate the structured data for the page and return any errors.
In this case, we can see there are no errors. (Nice!)
If you do find any errors, it goes without saying that you should fix them. This guide is a good starting point for this.
For the next part of the audit process, we will be analyzing the Ahrefs blog.
This is because we need access to data from Google Analytics and Search Console.
Step 10. Analyse organic search traffic
Clearly, any SEO audit aims to identify ways to increase a website’s traffic.
So it makes sense to take a look at how the site is currently performing.
We’ll run a few reports in Google Analytics to give us a quick overview.
First, we’ll look at the site’s current organic search traffic.
The data for March 2018 shows an average of around 1,800 visitors a day from search.
Acquisition > Overview > Organic Search.
From the same report, we can click on “Landing Page” to discover which pages are currently bringing in the most search traffic.
A broad spread of landing pages (in this case there are 269) would suggest the site is in reasonable health.
Site Explorer > enter your domain > Organic search > Top pages.
This will show you the pages on your site that receive the most organic search traffic.
You’ll notice that you can also see the “top keyword” for each page. (i.e., the keyword responsible for sending the most organic search traffic to each page.)
Next, we’ll set a wide range (I’m going to go back two years to March 2016) and view traffic by month.
This will show us whether organic traffic is increasing or decreasing, on the whole.
It’s clear from this graph that organic search traffic to the Ahrefs blog is increasing, not decreasing.
(We’ve tripled organic traffic over the past couple of years!)
Site Explorer > enter your domain > Overview.
From here, hit the Organic search tab.
This shows you a visual representation of your estimated organic search for the past few years (much like Google Analytics does!)
Finally, let’s view traffic by week.
We’re looking for any noticeable spikes or dips in traffic.
In this case, we can see a couple of small dips around the same time each year—Christmas!
This is almost certainly down to the fact that most people are away enjoying themselves at Christmas, not sat reading the Ahrefs blog!
Of course, in other cases, a drop in traffic may be indicative of a Google penalty (as discussed earlier.)
For steps 11, 12, 13 and 14 you will require an Ahrefs account. If you don’t have one yet, you can take a 7-day trial for $7.
Step 11. Check that rankings are heading in the RIGHT direction
Google Analytics will tell you how much organic search traffic you’re getting.
But it won’t tell you how your rankings are progressing.
Let’s use Ahrefs’ Site Explorer to check this.
Site Explorer > Enter domain > Overview.
Click on the Organic Search tab and take a look at Organic keywords.
It looks like rankings are on the rise! So nothing to worry about here.
If this shows a decline, it likely means that your rankings are decreasing across the board.
This could be for any number of reasons (e.g., out of date content, Google penalty, etc.)
In this case, you would need to investigate further.
You can also make sure that rankings for specific keywords are heading in the right direction with the Organic Keywords report.
Hit the graph icon, and it’ll show how your rankings have fluctuated over time.
It looks like we’ve cracked the rankings for “SEO audit!” 🙂
And remember, if you want to track rankings for specific keywords in the long-term, try Rank Tracker.
Step 12. Find pages ranking in positions 5–10 for high-volume keywords
Ranking at position 5 for high-volume keywords sounds pretty good.
That is until you look at the difference moving up just a couple of positions could make to your traffic.
The good news is, that if you are already ranking reasonably well, a little proactive SEO should be enough to push you into the top spots.
So we need to look for high-volume keywords where we rank in positions 5–10.
Doing this with Ahrefs’ Site Explorer is easy.
Site Explorer > Enter domain > Organic Search > Organic Keywords > Position (5–10) > Volume (1K+)
We’ll then get a list of keywords (and content) we can focus on for some quick wins.
So how do we boost these pages and push them into the top spots?
There are a few options:
- Add some more internal links to the pages
- Build some fresh backlinks to the pages
- Update and relaunch the content
- Make sure on-page is optimized for the exact keyword
Step 13. Analyze your backlink profile
Next, we’ll be using Ahrefs to conduct a quick, manual audit on the site’s link profile.
For now, we’re just looking for any standout issues.
Let’s start with: Site Explorer > Overview.
First things first, looking at the Referring domains graph, it’s clear that the number of referring domains pointing to the Ahrefs blog has been steadily increasing.
This is good to see.
If this showed a decline, then my recommendation would be to look into why you’re losing backlinks.
If it’s flatlining, well, it may be wise to up your link building efforts.
Let’s scroll down to the Anchors Cloud, which gives us a quick, easy to digest visualization of the site’s anchor text distribution.
In this case, we can see most backlinks are linking with branded or generic anchors.
This is good news from an SEO perspective as branded links help to build trust.
If you were to see a large number of keyword-rich or spammy anchors in here, then that is something you may have to take a closer look at.
But we’re all good in this case. 🙂
Finally, we’ll delve a bit deeper into the site’s referring domains.
Once again, we’re just looking to see if anything sticks out as suspicious, or low-quality.
We’ll click on “DR” to reverse the order of the report and put the lowest quality links at the top.
Site Explorer > enter domain > Backlink profile > Referring domains > Sort by DR (lowest first).
If anything looks suspicious, click on the number under the Backlinks column, then click-through to the linking URL to take a look.
You can spend time going through this in more detail when you conduct a full audit.
But for now, look for anything that looks low-quality, or purposely manipulative.
Also look out for obvious signs of ‘SEOing’ (it’s a word, ok!).
For example, lots of low-quality guest posts or links from tons of irrelevant directories.
Check out our guide to finding bad links for more on what to look out for.
In this case, the link profile looks relatively clean, so let’s move on to the next stage of our SEO audit.
Step 14. Find and fix broken links to (and from) your site
Broken pages (and links) on your site waste so-called “link equity.”
So you want to find and fix these issues asap.
To find broken pages, go to:
Site Explorer > Pages > Best by links > add a “404” filter.
Sort the results by RD (Referring Domains) to see which broken pages have the most inbound links.
Work through this list and fix the errors as appropriate.
This will involve either:
- replacing the content;
- redirecting the broken page (to a relevant live page);
- leaving as a 404 (this is fine for pages with no backlinks)
Read more about the possible solutions in our full guide to finding and fixing broken links.
Google Search Console > Crawl > Crawl Errors.
This will show you all “not found” (i.e., 404) errors on your site.
However, you won’t be able to see how many links are pointing to each of these broken pages without an Ahrefs account.
So you’ll just have to fix them all.
You should also make sure there are no broken links on your website.
Here’s an example of a broken link on the Ahrefs blog:
These contribute to poor user experience and also dilute PageRank.
So either delete them or replace them.
Step 15. Find “content gaps”
What’s a content gap?
It’s a keyword that your competitors currently rank for, and you don’t!
That’s something you’ll want to rectify.
There’s a simple report you can run in Ahrefs’ Site Explorer to find content gaps.
We’ve cunningly called it Content Gap.
But first, you’ll want to figure out who your closest competitors are in search.
To do that, run the Competing Domains report.
Site Explorer > Enter domain > Organic search > Competing Domains.
The report will show sites where we found a big overlap in keyword rankings with your domain.
Ignore any marketplace type sites like ebay or Amazon, along with any “big” generic sites like Quora or Forbes.
I sifted through the Competing Domains report for the Ahrefs blog and plucked our three sites that I consider to be close competitors.
Now I’ll head over to the Content Gap report and enter those three competitors.
Site Explorer > enter domain > Organic search > Content gap > enter competitors > Show keywords
I’ll also set the volume filter to show keywords with maximum search volume of 5,000.
That way we’ll filter out branded searches and other keywords that won’t be worth targeting.
Right away, we can see some high-volume keywords that may be worth targeting.
If you run out of ideas, rinse and repeat this process with even more competitors!
Step 16. Conduct a full content audit
The final step in our audit process might sound a little unintuitive.
That’s because it will often involve deleting a load of pages from your site.
So how will that help to increase search traffic?
The short answer is that lots of low-quality (or underperforming) pages can drag your whole site down.
A couple of years ago, we deleted over 200 low-performing posts from the Ahrefs blog and quickly saw a nice increase in our search traffic.
Here was our strategy in a nutshell:
- Find low-quality pages with little to no organic search traffic;
- If they can be improved, then update them and relaunch;
- Otherwise, delete them and redirect (301) the URL to a relevant page.
It was so successful that we’re actually in the process of doing this a second time!
A word of warning, however:
Be very careful when taking a knife to your site.
Your first choice should be to improve the content and relaunch.
But if something is low quality and not worth the hassle of updating, then go ahead and delete it. Just be sure to set up a 301 redirect to a relevant page, so you don’t lose any link equity.
Another thing to look out for is multiple pieces of content targeting the same keyword.
That’s known as “keyword cannibalization.”
Ideally, only one page on your site should target each keyword.
A good tactic is to combine multiple posts targeting the same keyword into one, super authoritative post. We recently merged two posts into one to create our guide to broken link building.
SEO audit = complete!
By following these steps, you should have uncovered lots of changes you can make to your site to improve your rankings.
A full forensic SEO audit is a much lengthier process (taking anything from a few hours to a few days, depending on the size of the site). But this process is a great way to kick start any new SEO campaign and get a feel for how a site is currently set up.
If you wanted to continue digging, you could now go back to the crawl report (in Site Audit) and take a more detailed look at the site’s structure, internal linking, etc.
But, in this case, we’ll leave that for another day…
If you have any questions about the audit process or have any tips you would like to share, then please leave a comment below. 🙂