SEO & Content StrategyTechnical SEO basics · Lesson 7 of 17

Core Web Vitals, speed and mobile experience

Article · 11 min · 8 min lecture

Video lecture

Core Web Vitals, speed and mobile experience

13 chapters · about 8 min · full transcript

Coming soon

Chapter 1 of 13

Core Web Vitals and mobile

  • LCP, INP, CLS
  • Field vs lab data
  • Causes and fixes
  • Prioritising work

The narrated lecture is in production

Every chapter is scripted and ready. Browse the chapters and read the full transcript now — the video will appear here when it’s published.

Chapters

Why page experience matters

Fast, stable, mobile-friendly pages keep visitors engaged and convert better. Google uses page experience signals, including Core Web Vitals, as part of its ranking systems, though great content that best matches intent still matters most. Think of speed as a tie-breaker for rankings and a major factor for conversions.

The three Core Web Vitals

MetricMeasures"Good" threshold
LCP – Largest Contentful PaintLoading: how quickly the main content (often a hero image or heading) appears2.5 seconds or less
INP – Interaction to Next PaintResponsiveness: how quickly the page responds to taps, clicks and key presses200 milliseconds or less
CLS – Cumulative Layout ShiftVisual stability: how much content unexpectedly moves while loading0.1 or less

INP replaced First Input Delay (FID) as a Core Web Vital in March 2024. Google assesses these at the 75th percentile of real user visits, separately for mobile and desktop.

Field data vs lab data

  • Field data comes from real users (for example the Chrome User Experience Report, shown in Search Console's Core Web Vitals report and PageSpeed Insights). This is what counts for assessment.
  • Lab data comes from simulated tests (Lighthouse, PageSpeed Insights lab section). Useful for debugging but not identical to real-world experience.

Many visitors in Pakistan, parts of the Gulf and elsewhere browse on mid-range phones and variable mobile networks. Test with throttled mobile settings, not only on a fast office connection.

Common causes and fixes

Slow LCP

  • Large, uncompressed hero images → compress, use WebP/AVIF, correct dimensions, and prioritise the hero image (do not lazy-load it).
  • Slow server response → better hosting, caching, a CDN.
  • Render-blocking CSS and JavaScript → defer non-critical scripts, inline critical CSS.

Poor INP

  • Heavy JavaScript and long tasks on the main thread → remove unused scripts, split code, defer third-party tags.
  • Too many third-party widgets (chat, heatmaps, multiple pixels) → audit and remove what you do not use; load others after interaction where possible.

High CLS

  • Images and videos without width and height → always set dimensions or aspect-ratio.
  • Ads, banners or cookie notices that push content down → reserve space.
  • Web fonts swapping late → use font-display strategies and preload key fonts.

Mobile-first indexing

Google primarily uses the mobile version of a page for indexing and ranking. Ensure:

  • The same main content, headings, structured data and internal links exist on mobile as on desktop.
  • Text is readable without zooming and tap targets are not too close together.
  • Pop-ups do not cover the main content on mobile (intrusive interstitials harm experience).

Other page experience basics

  • HTTPS across the site.
  • No deceptive or intrusive interstitials.
  • Accessible design: sufficient colour contrast, labelled form fields and logical heading order also help usability.

A speed improvement process

  1. Check Search Console's Core Web Vitals report to find groups of URLs with issues.
  2. Test representative URLs in PageSpeed Insights.
  3. Prioritise fixes by impact (templates used by many pages first).
  4. Implement changes with developers or plugins; test on staging.
  5. Wait for field data to update (it is based on a rolling window of real visits) and re-check.

Worked example (illustrative)

A UK restaurant site's mobile LCP is poor because a 4 MB hero photo loads first and is lazy-loaded by a plugin. Compressing it to a modern format, sizing it for mobile and marking it as high priority brings LCP into the "good" range in lab tests. Removing two unused tracking scripts improves INP. Setting image dimensions fixes a menu that jumped as photos loaded (CLS).

Hands-on: pull real-user Core Web Vitals with the CrUX API

The Chrome UX Report (CrUX) API returns the same real-user field data that powers PageSpeed Insights, for URLs or whole origins with enough traffic. Create an API key in Google Cloud (restrict it to the CrUX API) and keep it in an environment variable:

import os
import requests

API = "https://chromeuxreport.googleapis.com/v1/records:queryRecord"
key = os.environ["CRUX_API_KEY"]

def p75(url: str, form_factor: str = "PHONE") -> dict:
    r = requests.post(f"{API}?key={key}", json={"url": url, "formFactor": form_factor}, timeout=20)
    if r.status_code == 404:
        return {"url": url, "note": "not enough real-user data"}
    r.raise_for_status()
    m = r.json()["record"]["metrics"]
    get = lambda name: m.get(name, {}).get("percentiles", {}).get("p75")
    return {"url": url,
            "LCP_ms": get("largest_contentful_paint"),
            "INP_ms": get("interaction_to_next_paint"),
            "CLS": get("cumulative_layout_shift")}

for u in ["https://www.example.com/", "https://www.example.com/menu/"]:
    print(p75(u))

Compare the p75 values with the thresholds above (LCP ≤ 2,500 ms, INP ≤ 200 ms, CLS ≤ 0.1). Pages without enough traffic return no URL-level data — use the origin ({"origin": "https://www.example.com"}) or lab tests instead.

Prioritising speed work as a content strategist

You rarely fix Core Web Vitals yourself, but you decide where developer time goes. Rank templates by organic clicks (Search Console) × share of URLs failing (Core Web Vitals report). A failing product template with 10,000 URLs and most of your revenue beats a slow "about us" page every time. For deeper performance engineering, see Technical SEO Mastery (technical-seo-mastery).

Common mistakes

  • Optimising only for a desktop lab score.
  • Lazy-loading the hero image.
  • Piling on third-party scripts.
  • Hiding content on mobile that exists on desktop.

Key takeaways

  • Core Web Vitals are LCP (≤ 2.5 s), INP (≤ 200 ms) and CLS (≤ 0.1), measured on real users at the 75th percentile.
  • Field data counts for assessment; lab data is for debugging. Test on mid-range phones and slower networks.
  • Fix LCP with image and server optimisation, INP by reducing JavaScript and CLS by reserving space for elements.
  • Google uses mobile-first indexing, so mobile pages need the same key content and a usable layout.

Check your understanding

Quick questions to lock in the lesson. They don’t count towards your certificate.

  1. Which Core Web Vital measures responsiveness to user interactions?
  2. A page's content jumps down when a banner loads. Which metric is affected?
  3. Why should you avoid lazy-loading the main hero image?

Put it into practice

Run PageSpeed Insights on the mobile version of three important pages. Record LCP, INP and CLS field data (if available) and list the top two fixes for each page.

Enrol for free to save your progress

Reading is always free. Enrol to keep your place, take the final assessment and earn a verifiable certificate.