As SEOs, there are certain tasks that we should all be able to do for our clients. Sure, sometimes these tasks don’t always sound as exciting as creating a content strategy or developing a piece of 10x content, but they are essential to any SEO strategy. I’m talking about tasks like technical audits, analytics implementation, keyword research, site migrations, and link audits. These are all tasks that SEOs should be familiar with. In fact, these are all tasks that we should be doing for our clients regardless of how mundane they may seem.
I’m going to focus solely on link audits in this article because they don’t get the attention they deserve. Also, this is a task that seems extremely time consuming at first, but becomes more automated as you practice.
It is true that there are tools that can perform link audits for you, however it’s important to know how to do this manually. Additionally, not everyone has the luxury to spend extra money on another tool. If you are considering a tool for this process, I would highly recommend Kerboo (previously called LinkRisk).
Let’s dive in.
The goal of a link audit
With link audits your goal should be to identify all of the links that are pointing to your client’s domain and categorize them by health. In other words, which links could negatively impact the domain, which links are ok, and which links you definitely want to keep (and hopefully increase over time). We want to do this to prevent penalties in the future or fix any penalties that a domain has previously gotten.
By the end of the 30 minutes, we will have completed the following:
Extract as many links that are pointing to the domain in question
Identify any risky links that are pointing to the domain in question
Create a disavow file and submit it to Google for review
The #1 secret to staying sane during a link audit
The number one key to staying sane during the process is to stay organized. Since you’re going to end up with multiple spreadsheets with various degrees of information, I like to create a master spreadsheet before starting anything else. Doing things like defining your columns and headers will help in the long run — this way you won’t be stuck with a bunch of links with no way to organize them!
Here’s what my master spreadsheet looks like before anything is imported:
Once you have your master spreadsheet setup, it’s just a matter of importing your links into it in the same format.
The tools we’ll need for a link audit
Although there are various tools that can get this job done, the essential tools (according to this article) are as follows:
Google Search Console - In order to see your current disavow file and download your latest links.
Ahrefs - In order to download a CSV of links pointing to your domain.
SEO Tools for Excel (Windows only) - In order to pull in important data-points for specific domains. Essentially, to fill in the information we don’t have.
I would also highly recommend using a variety of link tools if you have access to them in order to get the most accurate representation of your domain’s backlink profile. Some of my favorites are:
Majestic - Show you links that are pointing to your domain and lets you download them in a CSV file.
Moz Open Site Explorer - Shows you link that are pointing to your domain and lets you download them in a CSV file.
Keep in mind that while you can perform a link audit by just using one link extracting tool, I would encourage you to use as many as possible and de-dupe. The goal is to get as much link information as possible for your client’s domain—using various tools allows us to do this.
The process of performing a link audit in its simplest form is as follows:
1. Extract all external links pointing to your (or your client’s) domain
2. Get rid of duplicates, and organize links by domain
3a. Identify quality of links
3b. If you have a disavow file uploaded, download it from Google Search Console and de-dupe with your new list of links
4. Extract poor quality links into a .txt document and create your disavow file
5. Upload your disavow file to Google Search Console
Let’s walk through these steps one-by-one.
Extract all links
The very first step of the link audit process involves using various tools to extract as many external links pointing to your site as possible. We are going to compile these links in a spreadsheet, so download CSVs from the tools you are using.
The process for extracting links will be similar no matter what tool you are using. For this post, I’m going to use Ahrefs as an example. Here are the steps on extracting your links.
Head to Ahrefs
Input your domain and hit “explore”
Click on “backlinks”
Under “link type” click on “DoFollow”
Click on “export” and choose “for Microsoft Excel”
Open the sheet in excel, adjust the formatting to match your master spreadsheet, and move the sheet into your master workbook.
In order to keep this process organized, I would recommend creating a master spreadsheet with clearly labeled headers and add each CSV file that you extract as a sheet within the master spreadsheet. It would look something like this:
Now that we have our links from Ahrefs, we can pull in additional links from Google Search Console. Once you’re logged in, follow the instructions below.
Head to Search Traffic > Links to Your Site > Most Linked Content > Download Latest Links
Head to Search Traffic > Links to Your Site > Who Links the Most > Download Latest Links
Your sheet should look similar to this once you are done with the process of extracting links from various tools as well as Google Search Console.
Google Search Console
Extract the domains
To make this process easier, we will want to judge the links on a domain-level. Typically, if a domain is risky, any link pointing from it will be risky as well. On the flip side, if a domain is high quality, for the most part, any links coming from it will be safe. There are some cases where a domain could be safe but a link coming from that domain is risky, but that is very rare
In order to extract the domain, input the following formula into A2 (assuming your spreadsheet is organized like mine).
Excel should fill in column A with the respective domains from column B
At this point, I typically hide the URLs list as we are going to be working off of the domain list moving forward.
The next step we will want to take is to de-dupe our domain list so we don’t have any domains represented more than once. To do this, highlight your entire workbook, head to data > remove duplicates, and then choose the domain column only. This will remove any duplicate domains you have while retaining the structure of your workbook.
So now we have a master list of links pointing to our domain, we don’t have any duplicate domains represented, and we are ready to fill in the blank spaces.
To fill out the final columns, we are going to be using SEO Tools for Excel. If you have Windows, download the tool here and follow the instructions on installing it.
Once you have SEO Tools installed, drag and drop the file onto your Excel workbook. After a quick loading screen, you should see a new tab to the right of “view” called “SEOTools”.
Choose your first open cell under your HTTP Status column (mine is D2). Head to SEOTools and click on Onpage > HTTPStatus. In the URL box type in the first cell in your domain column and hit OK.
The HTTP Status of the domain should appear, and you can now drag and drop this formula all the way down this column. Note: this might take some time depending on how many URLs you have in your list.
SEOTools has Moz integrated within their tool. However, you have to purchase the Pro version to pull things like DA into your spreadsheet. If you don’t feel like paying for the tool, you can use a free online tool such as this one and copy/paste the results into your spreadsheet.
Pulling the IP’s of your domains is similar to HTTPStatus. Highlight the first cell in your IP column, head to SEOTools > Domains > ResolveIP. Input the first domain cell and click ok. The IP of the first domain should resolve. Now copy the formula down the entire row.
For the link count, head to SEOTools > Onpage > Link count. Copy and paste the formula for the entire column.
If you used Ahrefs or majestic to extract your URLs, this column will already be filled out. If not, you will need to use an external tool to pull the anchor text or connect your Ahrefs or majestic account to SEOTools and pull in the information from there.
To pull the page title, head to SEOTools > Onpage > HtmlTitle. Don’t forget to copy and paste the formula for the entire column!
Your spreadsheet should look similar to this once all of these steps are completed:
Now we are ready to identify our low-quality links!
Identify low-quality links
This is a step that could cause debate because it could get difficult to identify which links are “bad” and which are not harmful. If you have a website that has a small link profile, you might be able to go through each and every link and truly judge whether or not it is a bad link. For most sites, your link profile will be quite large which means going through each link one by one is not feasible.
If you would rather do this yourself, you can filter out various data-points within your master spreadsheet to identify harmful links. Some example metrics you might look at could be domains with a low domain authority, URLs with spammy title tags or anchor text, or IPs that are hosted in countries known for typically spammy content (e.g. Russia).
Keep in mind that just because a domain has a low DA doesn’t mean that it is automatically spam. However, it is much more rare to have a spammy site with a high DA.
The key here is to find a process for identifying these links that works for you and to stick with it.
Download current disavow file
The next step depends on whether or not your domain currently has a disavow file uploaded to Google Search Console. To check this, head to this link, choose the domain you are working on, and click on “Disavow Links”. If you (or someone else) has ever uploaded a disavow file before, you will see an option to download it. You can also see when the disavow file was submitted here. You will want to download your current disavow file, combine the links you find there with your updated list of bad links, and dedupe the two.
If you don’t currently have a disavow file, don’t worry about this step.
Creating the disavow file
Now that we have a clear list of links that we don’t want pointing to our domain, we can move forward to the next step which is creating a disavow file.
If you don’t feel like creating a disavow file (shame on you), we created a tool to help you out (you’re welcome:).
Some important things to note about the disavow file:
Always submit in a .txt file
Always save the file as “disavow.txt”
Each line will either represent a link you want to remove or an entire domain that you want removed from your link profile
If you have single URLs paste one per line into the file
If you want to remove an entire domain, add one domain per line in this format - “domain:exampledomain.com”
If you have specific comments about certain links or domains, you are encouraged to add them in your disavow file. To do this, add a line above the link or domain you are commenting on, and start the line with “#”. Google will consider your comments when reviewing your removal requests.
If you upload a disavow file it will override the current one in GSC. This is why you always want to combine the two.
Here is a screenshot of how a disavow file should look like when you are done:
Simply copy and paste the bad domains from your spreadsheet into your text editor and make sure it is formatted as described above.
Uploading disavow file to Google Search Console
The final step in this process is to upload your new and improved disavow file to Google Search Console. Follow this link, choose the domain you are working on, and click on “disavow links”, choose your .txt file, and hit “submit”.
I would highly recommend saving your new disavow file and your master spreadsheet to your local machine as well as a backup hard drive. Technically, Google provides us with our latest disavow files, but if they ever take this feature away you want to make sure and have your work.
Per Google’s guidelines, using the disavow tool should be a final resort to removing bad links from our domains. Technically, we are supposed to contact each webmaster first and ask them to remove the links themselves. If they don’t respond or comply, we can then go ahead and use the disavow tool. This is where the comments can be helpful within the disavow file.
As always, feedback and questions are more than appreciated in the comments below or on Twitter. I'd really like to know other processes and tips for tasks of this nature, along with any advice on how I could streamline this particular method even further.