play watch

SEO Audit: How to Fix Your Website’s Technical SEO Issues (Tutorial)

In this tutorial, we are going to show you how to do a basic SEO audit step-by-step.

The material is going to apply to anyone who runs a website and wants to make sure their visitors have a great user experience.

So everyone...

Since your website and our website will likely have completely different issues, we are going to help you find technical SEO issues and focus on a workflow using Ahrefs’ Site Audit tool.


If you’re already an Ahrefs user, you can follow along step-by-step, pause and resume, you know the routine.

Creating new project in Ahrefs’ Site Audit tool

So first, you’ll need to go to Ahrefs’ Site Audit tool. If this is your first project, then you’ll see an option to create a new project right in the middle of the screen.


Click it, and enter in your domain.

We’ll be doing an SEO audit on for our example.


Scope & seeds

Then, you’ll need to set your seeds and scope.


First, is scope, which is basically the boundaries of which you want Ahrefs to crawl your site.

Since we’ll be focusing on a “basic audit”, we’ll set our scope as Problogger’s entire domain, which includes their subdomains too, but you can do an audit on just subdomains, subfolders and even an exact URL.


You’ll see at the bottom of the screen that Ahrefs validates the URL, so you want to make sure that you get a 200 response code before moving on to the next step.


The section you see below are called your seeds. The seeds are the URLs or URL where Ahrefs will begin its crawl.


There are a few options you can choose from there like the specified URL, in this case, Problogger’s home page. You can also choose to have your crawl start from URL that have backlinks, from sitemaps, or from your own custom list of URLs.

Since we’re keeping things simple, we’ll start from their homepage.


It’s important to note that your “seeds”must be within your scope.

So a common example might be if you have a blog on your main domain, and you run a shopify store on a subdomain like

If you wanted to isolate your audit to your store and you set your scope as

And then you set your seed to have a custom URL of the home page or sitemaps of your main domain, then your seeds would be out of scope and the crawl would never start.


Alright, so click the next button and you’ll have the option to verify your website.

Ownership verification

Verifying your website is similar to how you would do it with Google Search Console. In short, the benefit is that you can have your website crawled faster and get access to some other advanced features.


But you don’t have to do this to run a site audit.

Click next, which will take you to the crawl settings.

Crawl settings

A lot of these settings are self-explanatory. The one that we do want to recommend and touch on is the “Execute Javascript” option.


By setting this on, it allows Site Audit to analyze pages and links that depend on JavaScript, which will result in the most accurate website audit.

So if you use Javascript frameworks like Angular or React, then you’d definitely want to set this to on.

The last two things you want to set are the maximum number of internal pages and the maximum crawl duration.


So if you know you have a small website, then you can leave these on the default settings at 10,000 pages and a max crawl duration of 48 hours, which should be sufficient.

But if you’ve been blogging everyday for the past 10 years or you have some kind of user generated platform like a forum, then you’ll want to set these to a higher number.

So since Problogger has been around for a while, we’ll set the maximum number of pages to 50,000 and we’ll set it to the maximum allowed duration to make sure we catch everything.


Then there’s some advanced features here if you really want to laser in on sub sections of your audit, but we won’t cover that in this tutorial.

Run a scheduled crawl

Alright, so last step. Click next, and you’ll have the option to run a scheduled crawl on a daily, weekly, or monthly basis.


And this is super cool because as you continue adding pages, deleting pages and restructuring things on your website, Site Audit will continue to find them on complete autopilot.

And if you want to run just a one-off audit, then you can turn the scheduled crawl off.


Finally, if you want the audit to run immediately, leave the framed switch in the on position, and click Create Project.


Right away, you’ll be able to see the live crawl happening on your website and get real-time data in the overview page, which we’ll be moving onto next.


The results

So we already ran the full audit on Problogger, and you can see this fancy, dancy dashboard with an overview of Problogger’s technical SEO issues.


The first thing that you probably noticed is the health score.


Health score represents the proportion of URLs on a crawled site that have critical issues. Since many websites will have thousands of pages, we assign a grade.

To simplify this concept, if we crawl 100 pages, and 30 of them each have at least one critical issue, then your health score would be 70.

On the overview page, you’ll see a few graphs that cover the basics like “content types of internal URLs” and “HTTP status codes.”


It’s worth noting that everything that you see on this page has clickable links which will give you deeper insights in Data Explorer. More on this in a bit.

There are 1,184 400 series errors. That's 4.63% of their internal URLs!

These are most likely broken 404 pages on their website.


And if we click the link on this graph, it’ll open up Data Explorer where we can see all of the affected pages with this error.


Data Explorer is basically the heart of Ahrefs’ Site Audit tool. This is where you can gain access to all of the raw data and customize it however you want.

You’ll notice that by clicking on one of the links from the overview page, that we set up preset filters for you which you can expand by clicking there.


If you’re an absolute beginner to technical SEO, we’d recommend sticking with some of the preset filters that we provide in the overview page and then start moving onto your own custom configurations later.

Now, obviously fixing over 1,100 broken pages isn’t going to be the top priority on your list.

So what we would recommend doing is prioritizing this workflow by adding one custom column.

Click on “manage columns” and then in the search bar, just type in ‘dofollow’ and choose the no. of dofollow backlinks under Ahrefs metrics.


Click the apply button, and right away, you’ll see the new column, which you can then sort in descending order to see which 404 pages are wasting the most link equity.


This is one of the awesome features within Site Audit. You get access to a ton of Ahrefs metrics which you can include in virtually any audit report.

You can then export this list to CSV and start picking away at each 404 error.


Or with a massive list like this, you could outsource it to a freelancer and have them tackle each issue in the priority that you want them to be fixed.

That might be an entire domain, a subdomain, a subfolder, or an exact URL.

Okay, so back to the overview page.

If we scroll down a bit, you’ll see this graph of HTML tags and content, where we can get some quick wins.


The two things you should focus on are the bad duplicates and the ones that are not set as indicated in red and yellow.

So the one that stands out here is obviously the meta descriptions.

A good meta description is crucial for attracting clicks to your website and more clicks equals more visitors.

So are these worth fixing? Most likely.

Again, all of these sections are clickable.

This particular site has 165 bad duplicates on the content itself. So basically, duplicate content issues.

So we’ll click here to see the affected pages.

In the table, the first result that comes up is this page on creating content.


And you might have noticed that the columns changed from the last time we were in here assessing 404 errors. And this is because each report in Data Explorer is set up to provide you with the resources you need to actually analyze and fix these issues.

So under the number of URLs having the same content, we can see that this one has two different pages

So if we click on this, then you can see that there are two pages here. One has the / at the end and the other doesn't.

Without going too in-depth, this can easily be fixed with a redirect or even just by adding a canonical link in the head section of the page.

We’ll open up both of these pages in a new window.

And sure enough, both are the exact same page without a proper redirect. And we’ll open up the source code for each of these pages.

If we do a quick search for the word canonical, you’ll see that neither have these set, so it is indeed a bad duplicate.

So jumping back to the previous page, you’ll see that the reason we found this page in the first place is because of this column “Number of inlinks.”

The correct URL has nearly 12,000 internal links pointing to it.

And the one without the slash has 1 internal link pointing to it.


So if we click on the “1” under the no of inlinks, we can see that the page that has the improper hyperlink is from their “start here” page.


So to correct this issue, there are potentially two things you could do here.

The first is to set a rel=”canonical” tag inside the head section of the page. Or you could change the URL in the start here page to the correct one. Or you could just do both since they’re pretty quick and easy.

Clearly, you can see that this page is an important one considering nearly half of the pages on the entire domain are linking to it.

Workflow structure

Okay, so let’s jump back to the overview page and give you a bit more of a structured workflow.

If you continue scrolling down the page, you’ll see this table.


This table shows all of the “Actual” issues that we found during our crawl.

And there are 3 types of issues. We call them errors, warnings, and notices. You can choose a value in the dropdown to see each category.


So in terms of a workflow, what we would recommend doing is to filter for errors, and then tackle those issues first since they’re likely the most pressing.

The cool thing about this table is that we don’t just tell you that your website has errors, but we give you actionable advice on how to fix them.

So you might see that your website has, say 219 redirect chains but have no idea what they are.


No problem. Just click on the info icon and it’ll bring down the issue details as well as SEO best practices advice on how you can fix it.


Next, you can click on the number under total URLs to see the affected pages.

If you’re a pen and paper kind of person, then you can just export this list, print it out, and pick away at each issue, finishing off by adding a satisfying checkmark to your list.

Or if you have a team of SEOs on your side, then you can export each issue, send the CSV file, and assign it the appropriate person.

Then you can go back to the overview page and continue working on the different issues and move on to the warnings, as well as the notices.

And as your scheduled crawl continues to run at your set interval, you should see your health score go up and hopefully that will result in more organic search traffic for your website.

Wrapping up

So that’s it for this SEO tutorial.

SEO audits are one of those rare things that you have complete control over with search engine optimization, so we highly recommend going in and fixing these issues or at least running an audit to get a top level view of your website’s SEO health.

Plus, you’ll be improving the user experience for all of your wonderful visitors.

So we hope you guys start improving your website’s SEO health and squeezing every ounce of organic traffic to your site.

Bye our fellow technical SEO geeks. Peace.

Next lesson

How to Increase Organic Traffic with a Content Audit

Marketing with Ahrefs

  • 5 tutorials
  • 4 hr 57 min

Exclusive free access to the course has been granted for 30 days only, go through it while it’s still available!