# SEO

Core Web Vitals: Diagnose LCP, INP and CLS with Real-User Evidence

Core Web Vitals: Diagnose LCP, INP and CLS with Real-User Evidence

Core Web Vitals are field metrics for loading, interaction responsiveness and visual stability. They turn parts of user experience into a shared measurement system, but a green report is not a substitute for relevant content, accessible journeys, crawlability or business outcomes.

Use field data to choose the problem; use lab evidence to find the cause

CrUX and first-party real-user monitoring show what eligible visitors experienced. DevTools and repeatable lab tests reveal the element, interaction, resource or task behind it. Lighthouse 100 is not the objective.

Know the three current metrics and thresholds

Evaluate the 75th percentile of page visits, separately for mobile and desktop. Lower is better for all three metrics. LCP and INP are time values; CLS is a unitless visual-stability score.

INP replaced First Input Delay (FID) as a Core Web Vital on March 12, 2024. FID is no longer a current Core Web Vital, and Chrome performance tools ended support later that year. Total Blocking Time in Lighthouse is a useful lab diagnostic, not a substitute for field INP.

MetricGoodNeeds improvementPoorExperience measured
LCP≤ 2.5 seconds> 2.5 to 4 seconds> 4 secondsWhen the likely main content becomes visible
INP≤ 200 milliseconds> 200 to 500 ms> 500 msResponsiveness across qualifying interactions
CLS≤ 0.1> 0.1 to 0.25> 0.25Unexpected visual movement during the visit

Understand how the assessment passes or fails

A page or origin passes the Core Web Vitals assessment when the 75th-percentile values for LCP, INP and CLS are all “good”. In PageSpeed Insights, an aggregation with insufficient INP data can pass when LCP and CLS are good; if LCP or CLS lacks sufficient data, it cannot be assessed.

Search Console assigns a URL group the status of its worst-performing Core Web Vital. “No data” is not a pass or failure—it means the CrUX sample does not support that assessment.

SituationAssessmentInterpretation
All three metrics goodPassAt least 75% of measured visits meet every threshold
One metric needs improvementDoes not passFix that user-experience dimension
One metric poorPoor group/statusPrioritize representative affected journeys
INP insufficient; LCP and CLS goodMay pass in PSIToo few qualifying interactions for INP assessment
LCP or CLS insufficientCannot assessUse RUM and lab evidence; do not call it a pass
No CrUX dataUnknownOften insufficient eligible traffic, not proof of speed

Google says its ranking systems use Core Web Vitals, but there is no single page-experience signal. Relevance remains primary, and a perfect report does not guarantee top rankings. HTTPS, mobile presentation, intrusive interstitials, distracting ads and clear separation of main content still affect the experience users receive.

Use Core Web Vitals to improve important journeys and reduce friction—not to make every decorative feature disappear. Measure whether the change also protects accessibility, task completion and conversion quality.

ClaimAccurate position
“CWV guarantees rankings”False; it is one set of signals among many
“CWV does not matter because content ranks”False; poor experience can reduce user value and may contribute to Search outcomes
“Only green URLs are usable”False; thresholds are shared targets, not a complete UX diagnosis
“Page experience is one score”False; Google describes multiple aspects and page-specific plus some site-wide assessment

Use each evidence layer for the question it can answer

EvidenceBest questionTypical sourceMain limitation
CrUX field dataWhat did eligible Chrome users experience?PSI, Search Console, CrUX API/History/BigQueryAggregated sample; limited segmentation and eligibility
First-party RUMWhich route, element, interaction, user context and release regressed?web-vitals library or RUM platformNeeds governance, sampling, privacy and analysis
Lab load testWhat blocks this reproducible navigation?Lighthouse and PSI lab sectionOne simulated load; weak for post-load behavior
Interactive traceWhich task, handler, layout or paint delayed a flow?Chrome DevTools Performance panelManual test conditions may differ from users
Delivery evidenceDid server, CDN or asset behavior change?Server-Timing, CDN and application logsDoes not measure the complete visual experience
Business analyticsDid faster journeys improve useful outcomes?Analytics and conversion recordsCorrelation needs release and cohort controls

Know what CrUX includes—and what it does not

CrUX aggregates real experiences from eligible Chrome users on supported desktop platforms and Android Chrome. It excludes Chrome on iOS, Android WebView, other Chromium browsers and users who do not meet its settings criteria. Pages and origins also need to be publicly discoverable and sufficiently popular.

CrUX is therefore representative evidence, not a census of every visitor. Query parameters and fragments are stripped in page-level CrUX aggregation, and SPA soft navigations have platform-measurement limits. Supplement low-traffic, segmented or application-specific questions with first-party RUM.

CrUX propertyOperational consequence
28-day rolling aggregationA release mixes with up to 27 earlier days and changes gradually
Updated daily in API/PSINew data does not mean a fresh independent 28-day test
URL and origin levelsOrigin fallback can hide a slow or fast individual template
Eligible Chrome sampleDo not generalize blindly to every browser or audience
Popularity thresholdNew and low-traffic pages may show no field data
Privacy filtering and fuzzingUse distributions and trends, not traffic-volume inference

Read PageSpeed Insights and Search Console correctly

PageSpeed Insights combines a 28-day CrUX view with a new Lighthouse lab run. Confirm whether the field section says “This URL” or “Origin”; those scopes can tell different stories. Search Console groups URLs believed to provide similar experience and is intended for group-level diagnosis, not finding an exact score for every URL.

The Search Console group status reflects the worst metric. Open representative examples, compare PageSpeed URL versus origin data, and verify the actual Template before applying one fix everywhere.

Report-reading contract
  • Separate Mobile and Desktop.
  • Record collection dates, URL/origin scope and group name.
  • Do not compare Search Console group data directly with one Lighthouse run.
  • Confirm whether the tested page had enough URL-level CrUX data.
  • Check all three metric distributions, not only the overall label.
  • Save the affected Template, release version and representative URL.
  • Use CrUX History or RUM for trends rather than screenshots.
  • Treat “No data” as unknown.

Define the affected unit before touching code

A report URL is often only an example of a shared Header, Hero, Article Template, Product Gallery, Form or Consent Layer. Reproduce more than one URL and segment by Template, Device, Navigation Type and important user state.

Fixing one image on one URL is low leverage when a CMS rule generates the same failure across hundreds of pages. The reverse is also true: do not rewrite a global component because one personalized page is an outlier.

PatternLikely unitFirst comparison
Same metric across one TemplateTemplate markup or shared asset ruleThree representative URLs
Issue across most pagesHeader, font, consent, analytics or CDNHome, article, service and form
Only slow repeat visitsCache, service worker or client stateCold versus warm navigation
Only post-login flowApplication route/stateAnonymous versus authenticated RUM
Only one geographyCDN, origin distance or third partyRegion and network cohort
Only new releaseChanged bundle, component or backendVersion and deployment annotation

Diagnose LCP through its four subparts

LCP measures when the largest eligible content element in the initial viewport is painted. The candidate can differ by viewport, content and user, so capture the real element rather than assuming every page uses the Hero Image.

Every LCP can be separated into Time to First Byte, resource load delay, resource load duration and element render delay. Improve the largest evidenced subpart; compressing an image may not help when late discovery or client rendering is the real delay.

LCP subpartEvidenceCommon causeFocused response
TTFBDocument response begins lateOrigin work, redirects, cache miss, network distanceCache HTML, reduce backend work, remove redirect, use suitable CDN
Resource load delayLCP request starts long after TTFBCSS background, JS injection, lazy load, parser blockageDiscover in initial HTML, remove lazy load, use priority/preload only when justified
Resource load durationRequest itself takes too longOversized image/font or slow asset hostResponsive dimensions, compression, modern format, cache and delivery
Element render delayResource arrived but element paints lateRender-blocking CSS, font, hydration, animation or hidden stateReduce blocking work and render main content earlier

Apply LCP changes without creating new problems

For an image LCP, expose a crawlable src/srcset in initial HTML, request the right dimensions and avoid lazy loading. A deliberate fetchpriority="high" or preload can help a genuinely critical late-discovered resource, but preloading many files competes for bandwidth.

For text LCP, inspect font and CSS delivery. A faster TTFB also gives every discovered resource an earlier start. Use the Image SEO guide for responsive image and intrinsic-size decisions.

LCP release gate
  • Record the LCP element and four subparts.
  • Test cold and warm cache conditions.
  • Keep the primary resource in the initial document when possible.
  • Do not lazy-load the LCP image.
  • Serve dimensions appropriate to rendered size and DPR.
  • Preload only an identified critical resource.
  • Verify text remains visible during font loading.
  • Check Mobile viewport, not Desktop only.
  • Retest redirects, CDN cache and third-party Hero content.

Diagnose INP across the whole visit

INP observes qualifying Click, Tap and Keyboard interactions across a page visit and reports a high-latency interaction, normally the longest while allowing an outlier for pages with many interactions. A page with no qualifying interaction has no INP value.

Interaction latency has three parts: input delay before callbacks run, processing duration of event callbacks, and presentation delay until the next frame. Diagnose the slow part and target; a fast first click cannot prove the whole experience is responsive.

INP partWhat delays itEvidenceTypical response
Input delayExisting long task, script evaluation, timers or overlapping workInteraction trace and load stateReduce startup JavaScript, split/yield work, control recurring tasks
Processing durationHeavy event callback or synchronous calculationEvent timing and call stackDo less in handler, move/defer noncritical work
Presentation delayLarge DOM update, style/layout/paint or framework renderRendering work after callbackUpdate smaller regions, reduce DOM/layout cost and animation work
Iframe interactionWidget has its own main thread but shares constrained device resourcesFrame target and provider trace where possibleDelay, replace, isolate or renegotiate third-party behavior

Test the interactions users actually perform

Lighthouse load audits cannot discover every slow Menu, Search, Filter, Checkout, Form Validation or Chat interaction. Use field attribution to identify slow targets and interaction types, then reproduce them on constrained hardware with the DevTools Performance panel.

Break long tasks and yield after the urgent UI update so the browser can paint; defer Analytics, Save, Spellcheck or other secondary work. Avoid rendering huge DOM regions after a small action. Rendering choices are also covered in the JavaScript SEO guide.

INP journey set
  • Open and close navigation, Mega Menu and Dialog.
  • Type in Search and apply filters.
  • Expand FAQ or Accordion items.
  • Validate and submit lead or checkout forms.
  • Accept and reject consent choices.
  • Open WhatsApp, Chat or embedded tools.
  • Test an interaction during page startup.
  • Use low- or mid-tier Mobile conditions.
  • Record target, type, load state and three INP subparts.

Diagnose CLS throughout the page lifetime

CLS is a unitless score based on how much visible content moves and how far. It uses the worst session window of layout shifts, with a one-second gap and a five-second cap—not simply everything before the load event.

Some movement within 500 milliseconds of a qualifying input can be considered expected. Scroll and hover are not qualifying inputs, so shifts caused while scrolling or hovering can still count. CrUX can include user-visible iframe shifts that page JavaScript RUM cannot always observe.

CLS sourceWhy it shiftsEvidence
Image/video without dimensionsBrowser learns size after content is laid outLayout Shift track and element attributes
Ad/embed/widgetLate creative uses unknown or different heightField target, slot lifecycle and provider timing
Injected banner/contentNew block appears above existing contentPost-load and scroll flow
Web fontFallback and final font use different metricsFont waterfall and text shift
Animation/transitionLayout properties change geometryDevTools rendering/animation trace
Back/forward or long-lived pageLater lifecycle state is missed by load-only testingRUM, pageshow and full journey

Reserve space and control late content to improve CLS

Give images and videos intrinsic width/height or a correct aspect-ratio. Reserve realistic space for ads and embeds, and decide whether empty slots collapse before—not after—the surrounding content settles.

Use a metric-compatible fallback font or font-display strategy, and animate with transform and opacity where appropriate. Consent or promotion UI can overlay without pushing content, but must remain accessible and must not hide the main task.

CLS journey set
  • Load each Template at Mobile and Desktop widths.
  • Scroll through lazy images, ads and embeds.
  • Open menus, accordions, filters and validation errors.
  • Trigger consent, promotion, chat and localization UI.
  • Test web fonts under cold cache and slow network.
  • Use Back/Forward navigation.
  • Check hover and responsive breakpoint changes.
  • Capture the shifted element and the element that caused it.

Treat third-party code as a product decision

Tag managers, ads, consent platforms, chat, heatmaps, A/B tools, social embeds and video players can affect all three metrics. A third party may delay an LCP request, occupy the main thread during an interaction or resize an unreserved container.

Inventory owner, purpose, load rule, data destination and performance cost. Load after consent or intent when appropriate, reserve UI space and remove duplicate tags. If the business keeps a costly feature, document the tradeoff instead of hiding it with a score-only workaround.

DecisionQuestion
KeepDoes it support a measured user or business outcome?
DelayCan it load after consent, idle time, viewport proximity or explicit intent?
RestrictCan it run only on Templates that need it?
ReplaceIs a lighter provider or static preview sufficient?
RemoveIs it unused, duplicated, expired or ownerless?
MonitorCan version, load failure and CWV attribution be observed?

Fix the platform rule, not only the generated page

In WordPress and page builders, common causes include oversized source images, multiple optimization plugins, uncached HTML, global animation, font variants, slider Heroes, plugin JavaScript, duplicated analytics and DOM-heavy Components. Start with the responsible Template, Theme or Plugin setting and confirm output; do not stack more plugins before finding the cause.

On custom sites, treat Route data, image Component defaults, code splitting, hydration boundaries, CSS delivery and CDN caching as shared rules. Preserve useful functionality and test updates, forms, analytics, accessibility and SEO output after performance changes.

SymptomPlatform-level place to inspect
Same large Hero on every pageMedia pipeline and responsive image Component
Slow uncached first responsePage cache, origin, database and CDN policy
Poor INP after consentTag manager, CMP callbacks and vendor scripts
CLS on every CardShared image dimensions and skeleton Component
Fast staging, slow productionAds, analytics, CDN, personalization and consent
Improvement only with plugin disabledPlugin function and alternatives—not a permanent blind disable

Use first-party RUM when aggregates cannot explain the issue

The web-vitals library can collect LCP, INP and CLS using definitions aligned closely with Google tooling and its attribution build can record useful debug targets and subparts. Capture route/Template, metric ID, value, rating, navigation type, release version and a privacy-safe target or component label.

Send at appropriate lifecycle points and avoid unreliable unload/beforeunload dependence. Sampling, consent, retention and data minimization must follow the site’s privacy obligations. RUM and CrUX may differ because of population, iframe visibility, browser APIs, SPA attribution and aggregation.

RUM fieldWhy it mattersPrivacy/control
Template/route groupFind shared failuresPrefer normalized path; strip personal parameters
Release versionSeparate cached and new codeUse non-personal build ID
Metric value/rating/idAggregate and deduplicate correctlyAvoid session identity unless justified
Attribution targetFind LCP/INP/CLS componentUse safe component label, not user text
Navigation/device contextExplain cold, bfcache and constrained journeysKeep only necessary coarse dimensions
Business event linkMeasure task outcomeUse governed analytics and consent

Prioritize performance as a business and accessibility decision

Start with Poor before Needs Improvement, Mobile before Desktop when that is where the audience and failures are, high-value journeys before low-value archives, and shared Template causes before isolated URLs. Also account for users on slower devices, assistive technology and networks that averages can hide.

A performance budget is a release guardrail, not a promise that a byte count equals experience. Set limits tied to proven causes—for example maximum Hero bytes, third-party execution, route JavaScript or layout shifts—and retain UX, accessibility and conversion gates.

Priority signalHigher priority when
Status/severityPoor, recurrent and visible to many visits
Template reachOne cause affects many indexable or transactional URLs
Journey valueLead, signup, purchase, reading or support task
Audience riskMobile, constrained devices or key region is disproportionately affected
Change confidenceTrace points to a controllable root cause
Regression riskFix can be staged, measured and safely rolled back

Run a repeatable field-to-fix workflow

Store evidence, owner, risk and retest outcome in the SEO audit workflow. Performance should become a governed release discipline rather than an occasional plugin cleanup.

From report to verified release
  1. Select metric, device, date range and affected group.
  2. Confirm URL versus origin CrUX scope and sample limits.
  3. Map examples to real Templates and journeys.
  4. Use RUM attribution or representative field evidence where available.
  5. Reproduce the route and interaction under matched lab conditions.
  6. Identify element, target, shift and metric subparts.
  7. Trace the server, network, asset, CSS, JavaScript or third-party cause.
  8. Choose the smallest coherent change and define success/guardrails.
  9. Implement on staging with a release version.
  10. Regression-test content, accessibility, analytics and conversion actions.
  11. Deploy gradually when risk warrants it.
  12. Monitor immediate lab/RUM signals, then wait for the CrUX window before closing.

Use release QA that protects more than a green score

GatePass conditionEvidence
ContentMain answer, media and CTA still usefulVisual/content review
AccessibilityKeyboard, focus, labels, motion and contrast remain usableManual + automated checks
SEO deliveryStatus, Canonical, metadata, links, image and schema remain correctBuild/crawl samples
AnalyticsConsent, pageviews and conversions are not duplicated or lostDebug and production events
PerformanceTarget subpart improves without another Vital regressingMatched lab trace + RUM canary
ResilienceSlow API, third party, cache miss and error states remain usableFailure-path tests
RollbackPrevious version and configuration can be restoredRelease record and owner

Measure the change without overclaiming causality

Annotate the release and compare the same Device, Template, Navigation Type and business cohort. Immediate lab or RUM movement can confirm the mechanism; CrUX and Search Console move gradually because their 28-day window still contains pre-release visits.

Connect performance to the SEO measurement workflow: track CWV distribution, affected URLs, impressions, engagement and qualified conversions. A simultaneous design, content, campaign or ranking change prevents a simple “speed caused revenue” claim.

Time horizonEvidenceDecision
Before releaseBaseline distribution, trace and business metricDefine target and rollback threshold
Minutes/hoursSynthetic checks, errors and canary RUMCatch breakage or clear regressions
DaysVersioned RUM by Template/deviceConfirm root-cause improvement in users
Up to/after 28 daysCrUX, PSI and Search Console trendVerify eligible aggregate response
OngoingPerformance budget and release monitoringPrevent recurrence

Common Core Web Vitals myths

  • “A Lighthouse score of 100 means every user has a fast experience.”
  • “PageSpeed Insights field and lab numbers should match.”
  • “No CrUX data means the page is fast.”
  • “Search Console reports a precise score for every URL.”
  • “One optimized example fixes the whole URL group.”
  • “Compressing the Hero always fixes LCP.”
  • “Total Blocking Time is the same as INP.”
  • “CLS ends when the page finishes loading.”
  • “Any shift after a click is excluded.”
  • “A performance plugin can identify every root cause.”
  • “Removing JavaScript automatically improves the business journey.”
  • “Passing CWV guarantees higher rankings or conversions.”

Frequently asked questions

What are the Core Web Vitals in 2026?

Largest Contentful Paint, Interaction to Next Paint and Cumulative Layout Shift remain the three current Core Web Vitals for loading, responsiveness and visual stability.

Are Core Web Vitals a Google ranking factor?

Google says its ranking systems use Core Web Vitals, but there is no single page-experience signal and strong scores do not guarantee top rankings.

Why does PageSpeed Insights show two sets of numbers?

The field section uses aggregated CrUX experiences from the previous 28 days; the lab section is a new Lighthouse simulation used for diagnosis.

Why does Search Console differ from PageSpeed Insights?

Search Console uses groups of similar URLs and the worst metric for group status. PSI generally shows one URL when enough data exists, otherwise origin data.

How long does a Core Web Vitals fix take to appear?

Lab and first-party RUM can move immediately. CrUX is a rolling 28-day aggregate, so old and new experiences mix until the window turns over.

Does every page need CrUX data?

No. New or low-traffic pages may not meet CrUX eligibility. Use representative Templates, RUM and lab checks without pretending “No data” is a pass.

Is LCP always the Hero Image?

No. It can be an image or text element and can differ by viewport and user state. Capture the actual candidate and its subparts.

Why can INP be poor when the page loads quickly?

INP measures interactions throughout the visit. Startup tasks, menus, forms, filters, large DOM updates and third-party widgets can be slow after the page looks loaded.

Why is field CLS worse than Lighthouse CLS?

Real visitors scroll, open UI, see ads, fonts, embeds and long-lived states that a load-only lab test may not exercise. CrUX can also observe some iframe shifts unavailable to page RUM.

Should we remove a useful feature to pass?

Only after weighing user and business value. First reduce, delay, isolate or replace the actual cost, then measure both performance and task outcomes.

Official references

Need a practical next step?Fix the cause, not just the score.

Share the affected template, PageSpeed result and recent releases. Jack can separate server, image, CSS, JavaScript and third-party causes, then define a measurable verification plan.

Discuss Core Web Vitals on WhatsApp

Jack Lee

Jack Lee

Building Search Visibility with SEO, GEO & AI-Assisted Websites through practical projects and experiments.