Template · 7 sections · ~14 pages

Technical SEO Audit Template

The exact structure we use for paid technical SEO audits — 7 sections, ~50 line items, prioritisation matrix, and a writeup format you can hand to your dev team without translation.

Author: Martin Vassilev · Updated 2026-04-25 · Reviewed by the Toronto SEO Editorial Board

Get a paid audit

How to use this template

  1. Walk each section in order — earlier sections are dependencies for later ones (no point auditing schema on pages Google can't crawl).
  2. For each line item, document: what to check, what you found, severity (P0–P3), effort (S/M/L), recommended fix, validation test.
  3. P0 + S findings ship immediately. P0 + M go to the next sprint. P1 onwards goes to a quarterly roadmap.
  4. Re-audit quarterly. Document drift. Treat re-audits as a recurring engineering ritual, not a one-time event.

1. Crawl & indexation (8 items)

The foundation. If Google or the AI crawlers can't reliably crawl, render, and index your pages, nothing else in the audit matters. Always start here.

  1. 1

    robots.txt review

    What to check

    Pull live robots.txt; map every Disallow rule against actual indexable URL patterns; note any AI crawler (ChatGPT-User, OAI-SearchBot, PerplexityBot, ClaudeBot, GoogleOther) that's blocked.

    Common finding

    Default Cloudflare hardening or default WordPress security plugins frequently disallow AI crawlers entirely.

  2. 2

    XML sitemap completeness

    What to check

    Compare crawled indexable URLs against sitemap; note orphans (pages not in sitemap) and ghosts (sitemap entries that 404 or noindex).

    Common finding

    Sitemap generated once at deploy and never regenerated; or auto-generation includes 404s and noindex pages.

  3. 3

    Search Console coverage report

    What to check

    Pull Indexed / Not indexed / Excluded; investigate every category over 100 URLs; tag root cause for each major bucket.

    Common finding

    Unknown 'Crawled — currently not indexed' bucket usually traces to thin or duplicate content; 'Discovered — currently not indexed' usually means crawl-budget exhaustion from low-value URL clusters.

  4. 4

    Canonical tag audit

    What to check

    Spider site, export rel=canonical column, find non-self-referential canonicals; investigate every cross-domain canonical and every conflicting cross-page canonical.

    Common finding

    Faceted nav or pagination canonicalising to root, fragmenting category-page rankings.

  5. 5

    Server response codes

    What to check

    Crawl all internal links; flag 4xx and 5xx responses; verify all 301 redirect chains resolve in ≤2 hops.

    Common finding

    Redirect chains 5+ hops deep after a CMS migration; intermittent 5xx during peak traffic.

  6. 6

    Render-blocking JS audit

    What to check

    View source vs rendered HTML on top 20 pages; verify H1, primary copy, and internal links appear in initial HTML.

    Common finding

    JS-only rendered SPA pages where the H1 is empty in source HTML — invisible to AI crawlers, weakly indexed by Google.

  7. 7

    International / hreflang

    What to check

    If multi-locale: confirm bidirectional hreflang on every page in every locale; verify x-default; spot-check Quebec FR pages for hreflang reciprocation.

    Common finding

    Unidirectional hreflang from EN to FR but not back — suppresses French SERP visibility.

  8. 8

    Structured-data inventory

    What to check

    Pull Search Console enhancements report; run top 10 page types through Rich Results Test; document every schema in use plus errors and warnings.

    Common finding

    Critical schema (Article, LocalBusiness, FAQPage) missing on the page types where it would matter most.

2. Performance & Core Web Vitals (7 items)

Performance is now ranking-relevant on every page that competes in a real SERP. Test on real devices and Canadian network conditions, not on a developer laptop with fibre internet.

  1. 1

    LCP (Largest Contentful Paint) on top revenue pages

    What to check

    Run PageSpeed Insights on top 10 pages; pull field data (CrUX) where available; test on mid-tier Android over Canadian 4G.

    Common finding

    Hero image not preloaded, oversized hero on mobile, web font causing LCP delay.

  2. 2

    INP (Interaction to Next Paint)

    What to check

    Field data; manual interaction test on top revenue pages; flag any element with interaction latency over 200ms.

    Common finding

    Heavy JS handlers on navigation, autocomplete, or filter UI.

  3. 3

    CLS (Cumulative Layout Shift)

    What to check

    Field data; manual scroll test; identify shifting elements (ads, images without dimensions, late-loading fonts).

    Common finding

    Hero or above-fold images without explicit width/height; web font swap causing layout shift.

  4. 4

    Time to first byte (TTFB)

    What to check

    Curl with -w timings from a Canadian region; flag pages over 800ms TTFB.

    Common finding

    Origin server in US East with no Canadian edge cache; database queries on uncached pages.

  5. 5

    Image weight and format

    What to check

    Audit top 10 pages for image size; flag any image over 500KB; verify WebP or AVIF where appropriate.

    Common finding

    Multi-MB hero images, no responsive srcset, JPEG/PNG instead of modern formats.

  6. 6

    JS bundle size

    What to check

    Network panel on top 5 pages; flag any single JS bundle over 250KB gzipped.

    Common finding

    Unsplit vendor bundles, full UI library shipped on every page, unused locale data from date libraries.

  7. 7

    Caching headers

    What to check

    Inspect response headers on static assets; verify cache-control max-age and immutable flag where appropriate; verify HTML cache strategy (CDN edge, no client cache for HTML).

    Common finding

    Static assets cached for one hour instead of one year; HTML cached aggressively at CDN, breaking authenticated experiences.

3. On-page & content (8 items)

The page-level fundamentals. Cheap leverage — most fixes here move rankings within 30–60 days when the underlying technical foundation is sound.

  1. 1

    Title tag inventory

    What to check

    Spider site; export title column; sort by duplicates and length; flag missing, truncated, or duplicated titles on indexable pages.

    Common finding

    Generic CMS-default titles ('Page – Site Name') on hundreds of pages; brand name leading every title at the expense of the actual query.

  2. 2

    Meta description inventory

    What to check

    Same crawl; flag missing, truncated, or duplicated descriptions on top-traffic pages.

    Common finding

    Auto-generated descriptions duplicating the page H1; or no description, letting Google synthesise.

  3. 3

    H1 audit

    What to check

    One H1 per indexable page; H1 mirrors search intent; not the brand name on commercial pages.

    Common finding

    Multiple H1s due to template confusion; H1 is brand or 'Welcome to'.

  4. 4

    Heading hierarchy

    What to check

    Spot-check top 20 pages for H1→H2→H3 logical nesting; flag skipped levels.

    Common finding

    H1 → H4 with no H2/H3 due to design styling overriding semantics.

  5. 5

    Internal link counts

    What to check

    Crawl with internal-link-counts column; flag indexable pages with 0 or 1 inbound links.

    Common finding

    30%+ of indexable pages effectively orphaned despite being in sitemap.

  6. 6

    Image alt text

    What to check

    Audit top 50 images; flag empty, generic ('image1.jpg'), or stuffed alt attributes.

    Common finding

    Bulk import migrations with empty alt on every image.

  7. 7

    Content depth vs SERP norm

    What to check

    Pull top-10 ranking pages for 5 target queries; compare word count, heading count, FAQ presence, schema, and original elements.

    Common finding

    Underbuilt pages competing with 2,000-word top-10 cohorts on 400 words of content.

  8. 8

    URL structure

    What to check

    Audit top 20 URL patterns; flag mixed case, underscores, parameter-heavy URLs in canonicals, excessive depth (>4 segments).

    Common finding

    Tracking parameters on canonical URLs; CamelCase URLs from a CMS upgrade.

4. Structured data (6 items)

Schema is now table stakes for any site competing for rich results or AI citations. The audit isn't 'do they have schema' — it's 'is the schema correct, complete, and consolidated under stable @ids'.

  1. 1

    Organization or LocalBusiness presence

    What to check

    Verify site-wide on every indexable page; check stable @id; check that all other schema @id-references this Org node.

    Common finding

    Multiple Organization nodes with different @ids fragmenting the entity.

  2. 2

    Article schema completeness

    What to check

    Spot-check top 10 articles for headline, description, datePublished, dateModified, author (with @id), publisher, mainEntityOfPage.

    Common finding

    Missing dateModified; author as plain string instead of Person @id.

  3. 3

    FAQPage validation

    What to check

    Validate every page with FAQPage schema in Rich Results Test; verify Question/Answer text matches visible content; flag fabricated FAQs.

    Common finding

    FAQ markup with answers that don't appear on the visible page (manual-action risk).

  4. 4

    Service / Product schema

    What to check

    Verify provider @id, areaServed, priceCurrency CAD on Canadian-targeted offers, availability, itemCondition.

    Common finding

    Missing priceCurrency, USD prices on a Canadian-targeted site, areaServed missing or overclaiming.

  5. 5

    BreadcrumbList consistency

    What to check

    Verify schema BreadcrumbList exactly mirrors visible breadcrumb navigation.

    Common finding

    Schema breadcrumb missing on key page templates, or includes hidden items not visible to users.

  6. 6

    Review / AggregateRating verification

    What to check

    Trace every Review and AggregateRating schema to a verifiable third-party source; flag any self-reported review schema without source.

    Common finding

    Synthesised AggregateRating with high stars and no traceable source — manual-action risk.

6. AI search & AEO readiness (6 items)

Increasingly material as a discovery channel. This section answers: are we citation-eligible by ChatGPT, Perplexity, Google AIO, Gemini, and Claude — and are we actually being cited?

  1. 1

    AI crawler accessibility

    What to check

    Verify ChatGPT-User, OAI-SearchBot, PerplexityBot, ClaudeBot, GoogleOther are not blocked at robots.txt or WAF level.

    Common finding

    Cloudflare bot-fight mode blocking AI crawlers entirely; default robots.txt with overbroad disallow.

  2. 2

    Citation share baseline

    What to check

    Run brand-name and key category queries in ChatGPT, Perplexity, Google AIO, Gemini, Claude; document who is cited alongside (or instead of) the brand.

    Common finding

    Major competitors cited; brand absent or relegated to 'similar options' lists.

  3. 3

    Author / Reviewer entity consolidation

    What to check

    Verify every article points to the same Person @ids for author and reviewer; flag inconsistent or missing author attribution.

    Common finding

    'Editorial team' as author, fragmenting author entity across the site.

  4. 4

    FAQ schema and citability

    What to check

    Verify FAQ markup on the page types where buyers actually ask questions (services, products, pricing); flag eligible pages without FAQ markup.

    Common finding

    FAQ content present but not marked up; or boilerplate FAQs across every page (low information gain).

  5. 5

    Original-research / first-party-data presence

    What to check

    Identify content that publishes original observations, data, or methodology; assess whether it's citation-friendly (clear methodology, named author, stable URL).

    Common finding

    Pure synthesis content with no first-party data; or original research published without methodology section.

  6. 6

    AI engine speed/timeout testing

    What to check

    curl with realistic timeout (3s); test top 20 pages; flag any page that doesn't return full HTML within the AI crawler timeout.

    Common finding

    Slow origin causing AI crawlers to time out before content loads, even though Googlebot succeeds.

7. Deliverables & writeup format (5 items)

What the actual audit document looks like when you hand it back to the client. The findings only matter if they ship — the writeup format is where engineering velocity is won or lost.

  1. 1

    Prioritisation matrix

    What to check

    Every finding tagged with severity (P0–P3) and effort (S/M/L); P0 + S findings are the immediate-fix list.

    Common finding

    Audits delivered with 200 findings and no prioritisation; nothing ships.

  2. 2

    Engineering-ready writeup

    What to check

    Each P0/P1 finding includes: one-paragraph problem statement, exact URL pattern affected, recommended fix, validation steps, expected impact.

    Common finding

    Findings written as marketing language; engineering team cannot translate to ticket scope.

  3. 3

    Validation test list

    What to check

    Per finding, an explicit 'how we'll know it's fixed' test — URL inspection, header check, schema validator, etc.

    Common finding

    Findings closed without verification, regressions go undetected.

  4. 4

    Roadmap (90-day)

    What to check

    Sequenced rollout plan tying P0 fixes to upcoming sprint cycles; dependencies surfaced.

    Common finding

    Audit delivered as static document; no follow-through into sprint planning.

  5. 5

    Re-audit cadence

    What to check

    Define quarterly re-audit scope; identify drift-prone areas (sitemap completeness, schema validity, redirect chain depth).

    Common finding

    One-shot audit with no re-audit; technical debt re-accumulates within 6 months.