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.
| Metric | Good | Needs improvement | Poor |
|---|---|---|---|
| LCP (Largest Contentful Paint) | ≤2.5s | 2.5–4.0s | >4.0s |
| INP (Interaction to Next Paint) | ≤200ms | 200–500ms | >500ms |
| CLS (Cumulative Layout Shift) | ≤0.1 | 0.1–0.25 | >0.25 |
The four most common INP killers we find
- 1Heavy third-party tag managers loading on user interaction (cookie consent, chat widgets, A/B testers).
- 2Hydration on click — a React/Vue island that re-hydrates on user interaction blocks the next paint for 200–800ms.
- 3Synchronous analytics calls in click handlers (Hotjar, Mixpanel, custom GA4 wrappers).
- 4Long main-thread tasks from large React renders triggered by interaction (open a modal, expand an accordion).
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.
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.
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.
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
- 1Score every URL on a composite: internal-link count + unique fact density + 90-day organic clicks.
- 2Identify the bottom 25% by score.
- 3Add `noindex` meta and remove from sitemap. Keep the URL accessible (don't 404 or 301 yet — this lets Google process the noindex).
- 4Wait 6 weeks for the noindex to be processed and the rest of the site to be re-evaluated.
- 5After 6 weeks, 301 the noindexed URLs to their nearest live equivalent or 410 them outright.
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.
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
Internal-link mathematics: PageRank still applies
PageRank as a published metric is gone, but PageRank as the underlying algorithm is alive and unchanged. Internal links are the most controllable lever you have for distributing authority to the pages that need to rank. Most sites we audit have a power-law distribution: the homepage and top-level navigation pages have 100s of internal links, and the revenue-driving deep pages have <5.
The fix is contextual internal linking. Every pillar guide should link to 3–6 supporting pages. Every supporting page should link back to the pillar and laterally to 2–3 sibling pages. Service pages should link to relevant location pages and vice versa. The result is a denser internal-link graph that distributes authority more evenly.
A URL with zero internal links other than the sitemap is an orphan. It will rank, indexed, but has no PageRank flowing to it from your domain. Run a quarterly orphan check — they accumulate silently as content shifts.
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.
- 1Run every page through the Schema.org Validator and Google's Rich Results Test.
- 2Fix structural errors (missing required fields, wrong types) before fixing warnings.
- 3Strip schema for content that isn't visible on the page — this triggers manual actions and erodes LLM trust.
- 4Use the most specific type available (LegalService, not LocalBusiness; Dentist, not MedicalBusiness).
- 5Add `sameAs` links on Person and Organization schema pointing to authoritative external profiles.
