PeakKR

technical SEO audit

How to Run a Technical SEO Audit: Step-by-Step

Most agency technical SEO audits fail for the same reason: they end as a 90-page PDF that nobody implements. The crawl was fine. The findings were real. But the client's developer got a document instead of tickets, and six months later you're re-auditing the same broken canonical tags.

A good technical SEO audit is a project, not a report. Here's the process we see work across agencies running 8–30 client sites: scope it, crawl it, find the gap between what exists and what Google indexes, prioritize ruthlessly, and ship it as work a developer can actually do.

Before you crawl: scope and access (30 minutes)

Half of all audit overruns happen because the team started crawling before they knew what they were auditing. Lock these down first.

Access checklist

Define the boundary

Write one sentence: "We're auditing example.com and shop.example.com, excluding the legacy blog on WordPress, for crawlability, indexability, performance, and structured data." That sentence kills three hours of scope creep later. If the client has a subdomain nobody mentioned with 40,000 thin pages, you want to find it now and quote it separately.

Then timebox. A 5,000-URL site is a 12–16 hour audit. A 500,000-URL ecommerce site is 40–60 hours. If you're not tracking that time against the scope, you won't know your audits are losing money until Q3. Agencies that bill retainers tend to lose the most here — audits feel like "included work" until they've consumed 70% of the month's hours. Watching that in advance is the whole point of proper agency capacity planning.

Step 1: Baseline how Google sees the site

Before your own crawler touches anything, get Google's view. Open Search Console and record:

  1. Pages report — indexed count vs. not-indexed count, and the top five exclusion reasons
  2. Sitemaps — submitted vs. discovered vs. indexed, per sitemap file
  3. Core Web Vitals — URL groups failing on mobile
  4. Crawl stats (Settings → Crawl stats) — average response time, crawl requests per day, response code breakdown

Write these numbers down. A site with 4,200 submitted URLs and 1,100 indexed has a structural problem worth more than every meta description fix you'll find later. Crawl stats showing an average response time above 600ms tells you performance is suppressing crawl budget before you've run a single test.

Step 2: Run the crawl with the right settings

Default crawler settings produce misleading audits. Configure deliberately:

Schedule the crawl outside business hours at 3–5 URLs/second for shared hosting. Taking a client's site down during an audit is a memorable way to lose an account.

Step 3: Find the index gap

This is where the real findings live. You now have three URL lists: what your crawler found, what the XML sitemap claims, and what GSC says is indexed. Compare them.

Orphan pages

URLs in the sitemap or analytics with zero internal links. On a typical ecommerce site we'd expect under 2%. If 18% of product pages are orphaned, that's your headline finding — the category architecture is broken, not the individual pages.

Crawled but not indexed

Usually thin content, duplication, or quality signals. Pull 20 sample URLs and look at them manually. If they're all tag archives or paginated filters, the fix is directive-level, not content-level.

Indexed but shouldn't be

Staging subdomains, ?print= parameters, internal search results, PDF duplicates. Search site:example.com inurl:? and see what falls out. One B2B client we've seen had 31,000 indexed faceted-navigation URLs against 400 real pages — crawl budget was going almost entirely to junk.

Step 4: Audit directives and canonicals

Check for contradictions, which are more common than outright errors:

Step 5: Architecture, internal links, and redirects

Pull crawl depth distribution. On a healthy mid-size site, 80%+ of revenue pages sit within three clicks of the homepage. If your top 50 converting product pages average depth 6, you have an internal linking project, and it's usually higher ROI than anything else in the audit.

Then check redirects: chains longer than two hops, redirect loops, and 302s that should be 301s. Export every internal link pointing at a redirect — fixing the source links is a one-time dev task that recovers crawl efficiency immediately.

Step 6: Performance and rendering

Use field data (CrUX via GSC or PageSpeed Insights), not lab scores. Lab scores make clients panic about numbers that don't affect rankings. Record LCP, INP, and CLS for mobile, grouped by template: homepage, category, product, blog post. Fixing the product template fixes 14,000 URLs; fixing one page fixes one.

For JavaScript sites, test rendering directly: fetch a key page with the URL Inspection tool and check whether the main content, internal links, and canonical appear in the rendered HTML. If your product descriptions only exist post-hydration and the hydration takes 4 seconds, that's a finding worth more than the rest of the audit combined.

Step 7: Structured data, sitemaps, robots.txt

Validate schema against Google's Rich Results Test

Featured in this list? Grab your “Featured on PeakKR” badge and add it to your site — free.
Get your badge →

Frequently asked questions

How long should a technical SEO audit take?

For a site under 10,000 URLs, budget 12–20 billable hours spread over about a week — most of that is analysis and prioritization, not crawling. Enterprise sites with 500k+ URLs, multiple subdomains, or JavaScript rendering issues realistically take 40–60 hours. Always timebox it in your scope, or audits quietly eat an entire retainer month.

What tools do you need for a technical SEO audit?

A crawler (Screaming Frog, Sitebulb, or JetOctopus), Google Search Console, Google Analytics or your client's analytics tool, PageSpeed Insights or CrUX data, and ideally server log files. A rank tracker and a backlink tool help with context, but the crawl plus GSC covers roughly 80% of findings on most sites.

How often should agencies re-audit a client site?

Run a full technical SEO audit at onboarding, then a lighter re-audit every six months or after any major event — a redesign, CMS migration, domain change, or sudden traffic drop. In between, a monthly crawl comparison that flags new 404s, redirect chains, and indexability changes catches most regressions in under an hour.

What should a technical SEO audit deliverable include?

A one-page summary of the three to five issues that actually affect revenue, a prioritized issue table with impact, effort, and owner, and developer-ready tickets with URLs and acceptance criteria. Skip the 90-page auto-generated PDF — clients don't read them and developers can't action them.

Nick Quirk

Written by Nick Quirk

Founder of PeakKR

Nick Quirk is the founder of PeakKR, the agency workspace. He has spent decades running SEO and operations for marketing agencies, and writes about what holds up in real client work: technical audits, reporting, local campaigns, retainers and the systems behind them.

Run your agency on PeakKR

Client projects with phases, time tracking, technical SEO audits, client-ready reporting and AI briefs — the workspace this blog is written from.

Start free

Keep reading