SEO Audits
I used to run SEO audits as a checklist exercise, but I've learned that the only audit worth doing is the one that forces a change in how you build the site.
What I’d do first
- Start with Google Search Console's index coverage report to find pages that aren't indexed.
- Crawl the site with Screaming Frog and export all 4XX and 5XX URLs for immediate action.
- Check Core Web Vitals in CrUX for the pages that drive the most traffic, not the whole site.
- Review internal linking to find orphan pages that have no internal links pointing to them.
- Verify that canonical tags point to the correct URL and that they are not conflicting with hreflang or other signals.
The path I'd take
I start with Google Search Console, not a crawler. The Index coverage report tells me whether Google can find and index the pages I care about. I filter for "Excluded" and look at "Crawled - currently not indexed". That group often means thin content, poor internal linking, or a canonical pointing elsewhere. I then check the [robots.txt](/robots-txt/) file to see if critical resources are disallowed. I once found a site where the entire CSS and JS folder was blocked by a single line. Google could still render the page, but it was a sign of sloppy configuration.
Next I run Screaming Frog. I sort by status code and look for 4xx and 5xx responses. I also check for redirect chains longer than three hops. A chain of five 301 redirects adds latency and wastes crawl budget. I export the list of broken links and map them to the pages that contain them. Then I [analyse the site structure](/technical-seo/) — are there orphan pages with no internal links? I use the crawler's report on inlinks to find pages that have zero inbound links from the rest of the site. Those pages are invisible to users and often ignored by search engines.
Performance comes next. I open PageSpeed Insights for the ten pages that drive 80% of my traffic. I look at [Core Web Vitals](/core-web-vitals/) — LCP, INP, CLS. I compare the lab data to field data from CrUX. If the field data is worse, I know the issue is real. I also check mobile usability separately. A site can pass desktop checks but fail on mobile because of tap targets that are too small or viewport issues.
Finally, I validate structured data. I use Google's Rich Results Test on a sample of product pages, articles, and FAQs. I check for errors in [canonical tags](/canonical-tag/) and [duplicate content](/duplicate-content/). I once audited a site with 12,000 indexed pages but only 200 getting organic traffic. The crawl revealed that 80% of the pages were duplicates without proper canonicals. After fixing that, the index dropped to 3,000 pages, but traffic doubled. That's the kind of leverage an audit can give you.
Watch-outs
Do not trust a single tool. Screaming Frog might flag a missing alt tag, but that alt tag might be on an image that loads via JavaScript and never gets crawled. I always cross-reference with Search Console. If a tool says a page is blocked by robots.txt, I check the actual file to see if the rule is intentional. Many sites block admin pages on purpose, and that's fine.
The biggest blind spot is [JavaScript SEO](/javascript-seo/). A site can look perfect in a crawler that doesn't execute JS, but Google sees a blank page. I use the URL Inspection tool in Search Console to see what Google rendered. If the rendered HTML is empty or different from the raw HTML, I know I have a problem. I also check the [mobile version](/mobile-seo/) separately. Desktop and mobile renderings can differ, and Google indexes the mobile version first.
Canonical tags are hints, not directives. I have seen sites where every page canonicals to the homepage due to a CMS misconfiguration. Google may follow the hint, but it can also ignore it if it sees a clear signal of intent. Always check that the canonical URL is self-referencing unless you have a good reason to point elsewhere. Watch out for conflicting signals — a canonical tag that says one thing and a hreflang tag that says another. That confuses search engines.
Redirect chains are another common issue. I use Screaming Frog to find any chain longer than three hops. Each hop adds latency and can cause link equity to dissipate. I also check for soft 404s — pages that return a 200 status code but show a "no results" message. Those confuse search engines and waste crawl budget. Finally, do not obsess over a high PageSpeed score. It is a lab metric. I have seen sites with a score of 98 that still have poor LCP in the field because the lab test uses a fast connection. Always check CrUX data.
What I got wrong
I used to run audits as a one-off task. I would spend a week crawling a site, produce a 50-page report, and then never look at it again. The issues would reappear three months later because the development team had no recurring checks. Now I run a lightweight audit every quarter and a full audit once a year. I also set up automated monitoring for critical issues like broken links or index spikes.
I copied other people's playbooks without understanding the site's intent. When I started, I used a checklist from a popular blog post that included things like "check for missing alt tags" and "ensure page titles are under 60 characters". I spent hours on those items while ignoring the real problem: the site had a noindex tag on the homepage because of a staging environment that went live. That one tag cost the site 90% of its traffic. I now ask one question before every audit: what is the job-to-be-done of this site? If it is a lead generation site, I prioritise indexation and mobile usability. If it is a content site, I focus on internal linking and crawl efficiency.
I measured vanity metrics. I used to celebrate when I found 500 broken links or 1,000 missing meta descriptions. But those numbers meant nothing if the broken links were on pages that no one visited. Now I segment issues by traffic. An orphan page that gets 10 visits a month is less important than a broken link on the homepage. I also learned that technical SEO is not a silver bullet. A site can pass every audit check and still rank poorly because its content is thin or its backlink profile is weak. An audit is a diagnostic tool, not a cure. I now couple every audit with a content review and a competitive analysis.
Next step
Quick answers
How often should I run a technical SEO audit?
I run a full audit every three months for sites that are actively being updated. For stable sites, twice a year is enough. The key is to set up ongoing monitoring for critical issues like crawl errors and index coverage changes so you don't rely on manual checks alone.
What is the most common issue you find in audits?
The most common issue I see is duplicate content without proper canonical tags. Many CMS platforms create multiple URL versions of the same page, and if the canonical is missing or self-referencing on each version, Google can waste crawl budget and index the wrong version.
Do I need to use a paid tool like Screaming Frog or Semrush?
No, you can start with free tools. Google Search Console and PageSpeed Insights cover many audit areas. But a paid crawler like Screaming Frog saves time by giving you a full list of URLs and issues in one export. If you do this regularly, the investment pays for itself.
Sources
Primary documentation is linked directly. Anything commercial is marked nofollow.
- Google Search Central — Primary source for crawl, indexation, robots.txt, and structured data guidance.
- Google Search Console Help — Best source for interpreting Coverage and index-related reports.
- Google PageSpeed Insights — Core Web Vitals and performance audit checks.
- Semrush Academy / Blog — Practical practitioner reference for audit workflows and tool usage.
- Screaming Frog SEO Spider — Industry-standard crawler for technical audits and URL-level issue discovery.
Notes from Callum Bennett.