Semalt platform — CWV

Core Web Vitals with Semalt: from lab to real users

Lighthouse gives you 100/100 on desktop with office Wi-Fi. Your real mobile 4G users see LCP of 4.2 seconds. Semalt CWV measures with real field data (CrUX + proprietary RUM) and tells you exactly which resource is holding each template back.

Read time: 12 minLevel: Technical SEO / devUpdated:

Contents

  1. The 3 metrics Google uses today
  2. Lab vs field: why Lighthouse lies
  3. LCP: 5 causes and platform-specific fixes
  4. INP: the new terror (replaced FID)
  5. CLS: the 4 antipatterns that break pages
  6. TTFB: the silent metric that drags everything
  7. 4-week improvement playbook
  8. Case: news site from LCP 4.8s to 1.9s
  9. FAQs
75%
Sites with at least 1 bad metric
2.5s
LCP p75 «Good»
200ms
INP p75 «Good»
0.1
CLS p75 «Good»

The 3 metrics Google uses today

L

LCP — Largest Contentful Paint

How long it takes for the largest visual element above the fold to appear. Threshold: <2.5s. Usually a hero image or an H1 with web font.

I

INP — Interaction to Next Paint

Worst latency between user input (click, tap, keyboard) and next visual paint. Threshold: <200ms. Replaced FID in March 2024.

C

CLS — Cumulative Layout Shift

How much layout shifts visually while loading. Threshold: <0.1. Cause: elements without defined dimensions.

The p75 rule that confuses everyone

Google evaluates the 75th percentile of your real users. Meaning: 3 out of 4 users must have «Good» experience. If your p50 (median) is excellent but p75 is bad, you still fail. Users in the worst 25% define your rating.

Diagram: crawl, render, index, rank — the four stages a page must pass and what breaks at each
Four stages, four different failure modes. An audit is worth doing in this order — fixing rank signals on a page that is not indexed changes nothing.

Lab vs field: why Lighthouse lies

Field data (CrUX + RUM)

  • Real users, real devices, real networks
  • Realistic p75 distribution
  • Google decides ranking with this
  • Detects issues per session / template
  • Minimum 28-day history

Lab data (Lighthouse)

  • Simulated device, simulated network
  • Single throttle profile
  • Google does NOT decide ranking with this
  • Gives false positives (100/100 in lab)
  • Only useful for local debugging

Semalt combines CrUX (Google's official dataset with real Chrome users, aggregated by origin) with proprietary RUM (via the Semalt Analytics tag). The result is per-URL visibility — not just per origin — something CrUX alone cannot give you.

LCP: 5 causes and platform-specific fixes

CauseSemalt detectionTypical fixImpact
Hero image without preloadWaterfall shows late fetch start<link rel="preload" as="image"> + fetchpriority="high"-40 to -60% LCP
Blocking web fontsText visible after 1.5s+font-display:swap + font preload-20 to -40% LCP
Heavy-format hero imageWeight >300kbWebP/AVIF with responsive srcset-30 to -50% LCP
Slow server (high TTFB)TTFB p75 >800msPage cache + CDNDepends
Render-blocking CSSCSS >80kb in <head>Inline critical CSS + rest async-15 to -30% LCP

Platform-specific fixes

WordPress

Official Semalt plugin applies preload, fetchpriority and srcset automatically. Compatible with Elementor, Divi, WPBakery, Gutenberg core.

Vtex / Shopify

Via AutoSEO (Cloudflare Worker). Injects preload in <head> before serving the response. No theme changes.

Next.js / React SPA

Recommendation of Image component with priority prop. Semalt detects and suggests specific component modifications.

Custom PHP

Snippet injected via AutoSEO in Nginx module or via PHP plugin for frameworks (Laravel, Symfony, Cake).

INP: the new terror (replaced FID)

INP measures the worst delay between user input and next paint. Harder to optimise than FID because it considers all interactions, not just the first. A single slow button ruins the whole score.

The 3 most common INP killers in 2026

1. Heavy tag manager scripts (Google Tag Manager with 40+ tags loading at once). 2. Third-party widgets (chat, cookie banner, review widget) blocking the main thread. 3. Massive React re-renders from poorly managed state. Semalt identifies the exact responsible script with stack trace.

Diagnostic with Semalt Performance Trace

Semalt's Performance Trace runs a simulated human-interaction session (click, tap, scroll, form input) on each URL and captures exact timing of each input. The report shows:

CLS: the 4 antipatterns that break pages

Quick CLS check (4 antipatterns)

All 4 are technically easy to fix. The problem is the team not knowing which ones they have. Semalt CWV detects them automatically and reports with before/after screenshot.

TTFB: the silent metric that drags everything

TTFB (Time to First Byte) is not an official Core Web Vital but if it is high, it drags LCP and gives the impression of a slow site even with everything perfect on the frontend. Target: <200ms p75.

Typical shared hosting780ms
VPS with LiteSpeed cache340ms
Cloudflare CDN + static cache140ms
Static site on edge (Vercel/Netlify)85ms

4-week improvement playbook

Week 1 — Diagnosis

Baseline and prioritisation

Run Semalt CWV on all templates. Identify 2-4 templates with highest traffic and worst rating. Document baseline p75 of LCP, INP, CLS, TTFB.

Week 2 — Quick wins

Preload + WebP + width/height

Apply preload to hero image, serve images as WebP/AVIF, define width/height on each image tag. Effect in 7-14 days (CrUX updates every 28 days).

Week 3 — Deep fixes

Fonts + critical CSS + INP

Fonts with font-display:swap, inline critical CSS, refactor heavy handlers detected by Performance Trace.

Week 4 — Infra

CDN + cache + TTFB

Set up Cloudflare or similar. Page cache for logged-out users. Verify TTFB p75 <200ms.

Week 8 — Verification

Green badge Search Console

Search Console takes 28 days to update. Semalt Analytics shows improvement in real time from day 3.

Case: news site from LCP 4.8s to 1.9s

Our news site had 400k+ sessions/month but mobile LCP p75 was 4.8 seconds. Google Search Console marked 82% of URLs as «Poor». We lost ranking every month on trending queries. In 6 weeks with Semalt CWV we dropped to 1.9s and recovered position on 34 head keywords.

Head of Product, news portal (400k sessions/month)
Mobile LCP p75 (before)4.8s (Poor)
Mobile LCP p75 (after)1.9s (Good)
INP p75 (before)340ms (Needs Improvement)
INP p75 (after)140ms (Good)
Organic sessions (month 8)+34%

FAQs

Does Google penalise sites with Poor CWV?

Uses them as ranking signal when two pages have similar content. Not a binary filter but a constant tiebreaker. In competitive sectors (news, ecommerce) the difference between «Good» and «Poor» can be 3-5 consistent positions.

How long until Search Console reflects the improvement?

CrUX updates every 28 days. Search Console reports with additional 1-2 week delay. Total: 4-6 weeks from the fix. Semalt Analytics shows improvement in own RUM from day 2-3.

Does it work for SPAs (React, Vue, Angular)?

Yes. Semalt detects SPAs automatically and applies route transition tracking (important in SPAs because LCP is re-measured on each internal navigation). Reports LCP per route, not just per origin.

Do I need expensive hosting?

Not always. Shared hosting with LiteSpeed cache + free Cloudflare can drop TTFB from 800ms to 200ms. Only when the site exceeds 200k sessions/month is it worth evaluating VPS or managed hosting.

How do I measure ROI of the CWV project?

Two metrics: (1) organic sessions before/after (Semalt Analytics), (2) mobile conversion rate before/after (every 100ms of LCP improves conversion ~1% in ecommerce, per Google/Cloudflare data).

Bottom line

Core Web Vitals is not a nice-to-have — it is a ranking signal. Semalt CWV gives you precise diagnosis with field data and applies fixes via AutoSEO. In 6-8 weeks you see green badge and recover lost ranking.

Audit your Core Web Vitals with Semalt today

Setup: 20 minutes. First per-template report: 24 hours (needs to capture RUM sample). Complete playbook with weekly roadmap included.

Sign in to Semalt CWV →

From the lab to the real user

CrUX field data + proprietary RUM, per-template diagnosis, automatic fixes via AutoSEO.

Sign in to Semalt →