Pillar Guide · 12 min read

The Technical SEO Audit Playbook (2026)

What actually moves rankings in 2026: Core Web Vitals after INP became a ranking factor, JavaScript rendering for LLM crawlers, log-file forensics, and the index-bloat fixes that recover lost traffic.

Updated April 23, 2026 12 min read 2,500 words Reviewed by Martin Vassilev
Technical SEO audit playbook 2026 — Core Web Vitals, JavaScript rendering, log files

Key takeaways

  • INP replaced FID as a Core Web Vital in March 2024 — most sites we audit are still optimised for FID and have INP scores >500ms on mobile, costing visible ranking.
  • LLM crawlers (GPTBot, ClaudeBot, PerplexityBot) are weaker at JavaScript rendering than Googlebot. Pages relying on client-side hydration are routinely missed entirely.
  • Index bloat (>30% 'discovered – not indexed') is the most common ranking-suppressor we find on programmatic sites. Pruning 15–25% of low-value URLs typically lifts indexed-rate by 25–40 percentage points within 6 weeks.
  • Log-file analysis still beats every other technical SEO data source for finding crawl-budget waste. One sample week of Cloudflare or Vercel logs reveals the bot diet better than any third-party tool.
Section 01

Core Web Vitals after INP: where most sites still fail

Interaction to Next Paint (INP) replaced First Input Delay as a Core Web Vital in March 2024. INP measures the latency of every user interaction across the page lifetime, not just the first one. The bar for 'good' is <200ms; 'needs improvement' is 200–500ms; 'poor' is >500ms. Most sites we audit in 2026 are sitting at 350–600ms on mobile and have not noticed because their CrUX dashboards still show old FID green.

MetricGoodNeeds improvementPoor
LCP (Largest Contentful Paint)≤2.5s2.5–4.0s>4.0s
INP (Interaction to Next Paint)≤200ms200–500ms>500ms
CLS (Cumulative Layout Shift)≤0.10.1–0.25>0.25
Core Web Vitals 2026 thresholds (75th percentile, mobile)

The four most common INP killers we find

  1. 1Heavy third-party tag managers loading on user interaction (cookie consent, chat widgets, A/B testers).
  2. 2Hydration on click — a React/Vue island that re-hydrates on user interaction blocks the next paint for 200–800ms.
  3. 3Synchronous analytics calls in click handlers (Hotjar, Mixpanel, custom GA4 wrappers).
  4. 4Long main-thread tasks from large React renders triggered by interaction (open a modal, expand an accordion).
Quick INP win

Move every non-essential third-party script (chat widgets, A/B testers, analytics that don't drive product) behind a 'partytown' or web-worker delegation pattern. Typical INP improvement in our audits: 100–250ms.

Section 02

JavaScript rendering for LLM crawlers (GPTBot, ClaudeBot, PerplexityBot)

Googlebot has been a fully-rendering crawler since 2019. The major LLM crawlers in 2026 are not. GPTBot, ClaudeBot, PerplexityBot, and Amazonbot fetch the initial HTML response and largely do not execute JavaScript. Pages that rely on client-side hydration to render their primary content are routinely missed entirely.

The fix is server-side rendering or prerendering for the initial HTML. We typically use a hybrid pattern: prerender critical pages (homepage, top revenue landing pages, pillar guides) and serve a SPA shell for everything else, with the SPA shell still containing the canonical tag, title, and meta description in the initial HTML.

Robots.txt: don't block the LLMs you want to be cited by

If you want your content cited in ChatGPT, Perplexity, or Claude answers, you must allow GPTBot, PerplexityBot, ClaudeBot, and Amazonbot in robots.txt. Many CDN-default robots.txt files block these by default. Check yours.

Section 03

Index bloat: the silent ranking suppressor

Index bloat is the gap between URLs you want indexed and URLs Google has chosen to index. The Search Console 'Pages' report tells you the truth — the relevant signal is the size of 'Discovered – currently not indexed' relative to the total URL set.

On programmatic sites we audit (location × service matrices, FSA pages, comparison directories), 30–50% of URLs sitting in 'discovered – not indexed' is typical. This is Google telling you the URLs aren't worth crawl-budget. Pruning the bottom 15–25% by quality lifts indexed-rate of the remaining URLs by 25–40 percentage points within 6 weeks in our intervention set.

How to prune safely

  1. 1Score every URL on a composite: internal-link count + unique fact density + 90-day organic clicks.
  2. 2Identify the bottom 25% by score.
  3. 3Add `noindex` meta and remove from sitemap. Keep the URL accessible (don't 404 or 301 yet — this lets Google process the noindex).
  4. 4Wait 6 weeks for the noindex to be processed and the rest of the site to be re-evaluated.
  5. 5After 6 weeks, 301 the noindexed URLs to their nearest live equivalent or 410 them outright.
Why noindex first, then 301

If you 301 immediately, Google may treat the redirect as a canonicalisation hint and the destination may inherit the low-quality signal. Noindex first lets Google fully demote the URL before you redirect away the residual link equity.

Section 04

Log-file forensics: still the highest-leverage technical SEO data source

Third-party crawlers (Screaming Frog, Sitebulb, Ahrefs) tell you what is on your site. Log files tell you what Googlebot, Bingbot, GPTBot, and the rest are actually doing. The asymmetry is enormous — we routinely find crawl-budget being burned on 30–60% of URLs that don't generate any traffic.

One sample week of logs from your CDN (Cloudflare, Fastly, AWS CloudFront) or platform (Vercel, Netlify) is enough to find the worst offenders. Filter to user-agents containing Googlebot, Bingbot, GPTBot, ClaudeBot, PerplexityBot, then group by URL pattern.

What to look for in a log file analysis

  • URLs Googlebot crawls most often — should match your most important pages, not your archive or pagination
  • URLs that 404 to bots — typically broken internal links, fix or 301 in bulk
  • URL patterns being crawled but not indexed — the noindex/prune candidates
  • Faceted URLs (?sort, ?filter, ?page=) eating crawl budget — block in robots.txt or canonicalise
  • LLM crawler activity — confirm your robots.txt allows the ones you want, check how often each visits
Section 06

Schema validation: the 2026 rich-results landscape

Google removed FAQ rich results for non-government/health sites in August 2023, and the rich-result landscape has been narrowing since. In 2026, the rich results that still fire reliably are Product, Recipe, HowTo (mobile), Review, Job Posting, Event, and Course. Article and FAQ are now mostly invisible as rich results — but the structured data still helps AI Overview and LLM citation.

  1. 1Run every page through the Schema.org Validator and Google's Rich Results Test.
  2. 2Fix structural errors (missing required fields, wrong types) before fixing warnings.
  3. 3Strip schema for content that isn't visible on the page — this triggers manual actions and erodes LLM trust.
  4. 4Use the most specific type available (LegalService, not LocalBusiness; Dentist, not MedicalBusiness).
  5. 5Add `sameAs` links on Person and Organization schema pointing to authoritative external profiles.
FAQ

Frequently asked questions

Sources & further reading

Want this applied to your site?

Book a 30-minute call with a strategist. We'll walk you through the highest-leverage changes for your specific URLs and queries.