Most technical SEO audits are expensive and incomplete. Agencies run Screaming Frog, export a spreadsheet with 300 issues, prioritize by “high/medium/low” with no business context, and hand it off. Six months later, traffic hasn’t moved because the actual ranking-limiting problems were buried in line 247.
This is the 80-point technical SEO audit checklist used by top agencies who actually move organic traffic. It’s organized by impact tier, covers every technical signal that matters in 2026, and includes the specific tools you need for each check — not generic advice, but the exact diagnostic workflow.
How to Structure Your Technical SEO Audit
Before running a single tool, establish three things: your site’s baseline traffic (Google Search Console, 12-month view), the traffic trend (growing, flat, declining), and the date of any major drops or gains. An audit without historical context is just a snapshot — you need the story.
Audit phases:
- Crawl and Index Audit — what Google can find and access
- On-Site Technical Audit — what Google finds when it crawls
- Performance Audit — how fast the site loads for users and Googlebot
- Content and Canonicalization Audit — what Google considers the source of truth
- Link and Authority Audit — the backlink profile and internal link architecture
Phase 1: Crawl and Indexation Audit (Points 1–20)
robots.txt Checks
- [1] Verify robots.txt exists: fetch yourdomain.com/robots.txt — confirm 200 response, not 404
- [2] Check for accidental crawl blocking: look for
Disallow: /or disallow rules that block key page sections - [3] Verify sitemap is referenced:
Sitemap: https://www.yourdomain.com/sitemap.xmlshould appear at the bottom - [4] Check for wildcards that over-block:
Disallow: /*?can block important filtered URLs you want indexed - [5] Test with Google’s robots.txt Tester in Search Console for specific URLs
XML Sitemap Checks
- [6] Sitemap returns 200: check the sitemap URL, confirm it’s accessible
- [7] All sitemap URLs return 200: crawl the sitemap with Screaming Frog; filter by status codes to find 301/404 URLs in the sitemap
- [8] No noindex pages in sitemap: pages with noindex tags should not be listed in the sitemap — contradictory signals
- [9] Sitemap is submitted in Search Console: Sitemaps report shows “Success” status
- [10] Image and video sitemaps exist for media-heavy sites — these enable rich image/video search results
Index Coverage Checks
- [11] Compare indexed pages vs. submitted pages: Search Console → Coverage → Indexed pages vs. sitemap count. A large gap signals either duplicate content, crawl budget waste, or Google choosing canonical alternatives
- [12] Review “Discovered – currently not indexed” URLs: these are pages Google knows about but has deprioritized. High count = crawl budget problem or thin content issue
- [13] Check “Crawled – currently not indexed” URLs: Google crawled these but chose not to index them — investigate for thin content, near-duplicates, or quality signals
- [14] Verify no important pages are in “Excluded”: sort by reason and identify any accidentally excluded pages
- [15] Run site:domain.com in Google: rough indexed page count and first-page quality check
Crawl Access Checks
- [16] Test Googlebot user-agent: use SEO tools like Screaming Frog with Googlebot UA to check what Googlebot sees vs. a regular browser
- [17] Check for cloaking: if different content appears for Googlebot vs. users, this is a manual action risk
- [18] Verify JavaScript rendering: compare rendered vs. non-rendered HTML. Critical content should appear in raw HTML, not only after JS execution
- [19] Check server response to Googlebot: log file analysis (via Cloudflare or server logs) shows actual crawl frequency and which URLs Googlebot visits
- [20] Verify no rate-limiting of Googlebot: check server logs for 429 responses to Googlebot
Phase 2: On-Site Technical Checks (Points 21–45)
URL Structure
- [21] Check for uppercase in URLs: all URLs should be lowercase to prevent duplicate content
- [22] Verify URL consistency: trailing slash vs. no trailing slash — pick one and 301 the other site-wide
- [23] Check URL parameter handling: session IDs, tracking parameters, sorting/filtering params should be handled in Search Console parameter tool or via canonical tags
- [24] Verify HTTPS everywhere: all pages, including internal resources (images, scripts) should serve over HTTPS. Mixed content triggers browser warnings
- [25] Check www vs. non-www: one version should 301 to the other; both shouldn’t work simultaneously
Redirect Audit
- [26] Map all 301 redirects: Screaming Frog → Response Codes → 3xx filter. Identify redirect chains
- [27] Fix redirect chains: A→B→C should be A→C. Each hop in a chain loses some link equity and slows the page
- [28] Fix redirect loops: A→B→A. These cause 500ms+ delays and can cause crawl errors
- [29] Verify old redirects still work: 301s from site migrations more than 2 years ago sometimes break when hosting changes. Spot-check 50+ from your migration list
- [30] Check for 302s that should be 301s: temporary redirects shouldn’t be used for permanent content moves
HTTP Headers
- [31] Verify canonical tags are correct: every non-canonical URL should point to the correct canonical. Self-referencing canonicals on canonical pages = correct
- [32] Check for conflicting canonical signals: canonical tag pointing to URL X, but sitemap includes URL Y for the same content
- [33] Verify hreflang implementation: for multilingual/multi-regional sites, check hreflang tags are bidirectional (each language version points to all others)
- [34] Check X-Robots-Tag headers: some CMS platforms add noindex headers via HTTP for certain page types
- [35] Verify Cache-Control headers: static resources should have long max-age; HTML should have shorter or no-cache depending on update frequency
Meta and Head Tags
- [36] Check for duplicate title tags: Screaming Frog → Page Titles → filter Duplicate. Duplicates dilute page-level relevance signals
- [37] Check for missing title tags: pages without title tags get auto-generated titles from Google — usually worse than what you’d write
- [38] Check title tag length: target 50-60 characters; over 70 gets truncated in most SERPs
- [39] Check meta descriptions: target 150-160 characters; check for duplicates and missing (Google generates them anyway but yours are usually better)
- [40] Check for duplicate H1s on a page: each page should have exactly one H1
- [41] Check for pages missing H1s: especially common on category and product listing pages
- [42] Verify robots meta tags: ensure critical pages don’t have
noindexornofollowtags applied accidentally - [43] Check Open Graph tags: og:title, og:description, og:image on key pages for social sharing quality
- [44] Verify viewport meta tag:
<meta name="viewport" content="width=device-width, initial-scale=1">must be present for mobile-first indexing - [45] Check for duplicate meta descriptions: like duplicate titles, these are missed opportunities for differentiation
Phase 3: Performance Audit (Points 46–60)
Core Web Vitals
- [46] Run PageSpeed Insights on 10+ key URLs: homepage, top-traffic landing pages, product/service pages, blog category pages
- [47] Check Search Console CWV report: identify URL groups classified as “Poor” or “Needs Improvement”
- [48] Measure LCP element for each key page: Chrome DevTools → Performance tab
- [49] Verify fetchpriority=”high” on LCP images: inspect source code on pages with image LCP elements
- [50] Check for layout shift sources: run Chrome DevTools with CLS enabled; check Layout Instability API
- [51] Measure INP on interactive pages: run scripted interactions in WebPageTest or use web-vitals.js in production
Server and Hosting Performance
- [52] Measure TTFB from multiple locations: WebPageTest → TTFB from US, Europe, Asia. Over 800ms = hosting problem
- [53] Verify CDN is active: check response headers for CDN provider headers (cf-cache-status for Cloudflare)
- [54] Check cache hit rates: Cloudflare Analytics → Caching tab; target 80%+ cache hit ratio for static assets
- [55] Verify GZIP/Brotli compression: Chrome DevTools → Network tab → check Content-Encoding header. Brotli is 15-20% more efficient than Gzip
- [56] Check for render-blocking resources: PageSpeed Insights → Eliminate render-blocking resources opportunity. Each blocking resource adds to LCP
- [57] Audit third-party script impact: WebPageTest waterfall view; measure total size and load time of third-party domains
Image Optimization
- [58] Check image formats: Screaming Frog → Images tab → filter by JPEG/PNG; flag any that should be converted to WebP/AVIF
- [59] Check for oversized images: images served larger than displayed size. Common on responsive sites that send desktop images to mobile
- [60] Verify lazy loading on below-the-fold images:
loading="lazy"on images not in initial viewport
Phase 4: Content and Canonicalization Audit (Points 61–70)
- [61] Identify thin content pages: Screaming Frog → filter pages with under 300 words. Thin pages dilute site quality signals
- [62] Check for duplicate content internally: Siteliner.com scans for internal duplicate content blocks
- [63] Check for near-duplicate pages: tag archive + category pages + search result pages often produce thousands of near-duplicate thin pages
- [64] Audit pagination handling: paginated series should use canonical or rel=next/prev (though Google deprecated the latter). Ensure page 2+ aren’t diluting page 1
- [65] Check for content cannibalization: multiple pages targeting the same keyword. Use Search Console → Performance → filter by query to see if multiple pages compete
- [66] Verify E-E-A-T signals: author bylines with linked author pages, expertise signals in content, citation of external sources, review dates visible
- [67] Check for orphan pages: pages with no internal links pointing to them. Crawl the site and cross-reference against pages receiving internal links
- [68] Audit parameter-based duplicate content: e-commerce sites with sort/filter/color parameters often generate thousands of near-identical URLs
- [69] Check for session ID URLs being indexed: session IDs in URLs create infinite duplicate versions of every page
- [70] Verify structured data doesn’t contradict page content: schema markup should describe visible on-page content exactly
Phase 5: Link and Architecture Audit (Points 71–80)
- [71] Check for broken internal links: Screaming Frog → Response Codes → filter 4xx internal links. Every broken internal link wastes crawl budget and kills user experience
- [72] Audit internal link anchor text: export internal links from Screaming Frog; check that anchor text is descriptive and keyword-relevant, not “click here”
- [73] Verify links to important pages: your highest-value commercial pages should have the most internal links pointing to them, not your blog posts
- [74] Check link depth: important pages should be reachable within 3 clicks from the homepage. Pages at depth 6+ rarely get crawled thoroughly
- [75] Audit external backlink profile: Ahrefs or Semrush → Backlinks report. Check referring domain count, anchor text distribution, toxic links
- [76] Identify and disavow toxic links: links from link farms, PBNs, or irrelevant foreign directories. Use Google Search Console Disavow Tool
- [77] Check for lost backlinks: Ahrefs → Lost Backlinks, last 30 days. Lost links to 404 pages = 301 redirect opportunity
- [78] Verify internal linking structure matches silo architecture: related pages should link to each other; unrelated category pages should not cross-link
- [79] Check for nofollow overuse internally: unnecessary internal nofollow tags waste link equity flow
- [80] Audit link velocity and anchor text for manual action risk: if 40%+ of backlink anchor text is exact-match keyword, that’s a Penguin-era signal worth reviewing
Prioritizing Audit Findings
Not every issue matters equally. Here’s how to triage:
- P1 (Fix Immediately): accidental noindex/disallow on key pages, sitemap 404s, redirect loops, broken canonicals, HTTPS mixed content
- P2 (Fix This Sprint): LCP failures on top landing pages, thin content on commercial pages, broken internal links, missing structured data on high-traffic pages
- P3 (Fix This Quarter): Image optimization, meta description optimization, content cannibalization, parameter handling
- P4 (Backlog): Secondary page performance improvements, supplementary schema types, historical redirect cleanup
Frequently Asked Questions
How often should I run a technical SEO audit?
Run a full 80-point audit once per year for stable sites and quarterly for sites with active development teams. Supplement with lightweight automated scans monthly — Screaming Frog on a cron schedule or a continuous monitoring tool like Oncrawl or ContentKing. Any major site change (migration, redesign, new CMS, major URL structure change) warrants a full audit immediately before and within 30 days after the change.
What tools do top agencies use for technical SEO audits?
The standard agency toolkit: Screaming Frog SEO Spider (crawl and on-site), Ahrefs or Semrush (backlinks, keyword rankings, site audit features), Google Search Console (index coverage, CWV, manual actions), PageSpeed Insights + WebPageTest (performance), Siteliner (internal duplicate content), and server log analyzers like Splunk or Screaming Frog Log Analyzer. For enterprise sites, Botify or Lumar (formerly DeepCrawl) add log file integration and JavaScript rendering analysis.
What’s the most commonly missed issue in technical SEO audits?
Crawl budget waste. Most audits identify broken links and missing meta descriptions, but miss the fact that Googlebot is spending 60% of its crawl budget on URL parameters, session IDs, faceted navigation URLs, and pagination variants — leaving priority pages under-crawled. Log file analysis is the only way to see this directly, and most auditors skip it.
How do I prioritize fixes when the budget is limited?
Focus on the issues that are actively blocking ranking, in this order: anything preventing key pages from being indexed (noindex bugs, robots.txt blocks, crawl errors), then anything causing canonical fragmentation (duplicate content, parameter issues), then Core Web Vitals failures on your highest-traffic pages, then structured data gaps on commercial pages. Everything else is improvement, not repair.
Can I run a technical SEO audit without paid tools?
Yes, with limitations. Google Search Console gives you indexation data, CWV, and manual action status for free. Screaming Frog has a free version (up to 500 URLs). PageSpeed Insights and WebPageTest are free. The main gaps without paid tools: backlink analysis (Ahrefs/Semrush are worth the cost for this), log file analysis, and bulk crawling of large sites over 500 URLs. For sites under 500 pages, the free toolkit covers 80% of what you need.