PerformanceUpdated Feb 2026

    How to Monitor Your Website's Core Web Vitals (Free Tools)

    Core Web Vitals are Google's page experience ranking signal, and you can measure them without spending a dollar. This guide covers every free tool, what each metric means, how to fix failing scores, and a monitoring workflow that keeps your site fast.

    Mallory Keegan
    Mallory Keegan

    Web hosting enthusiast who tests providers and breaks down features, pricing, and real world speed

    Core Web Vitals performance dashboard showing LCP, INP, and CLS metrics with Google PageSpeed Insights scores
    Monitoring and optimizing Core Web Vitals: LCP, INP, and CLS

    Key Thresholds at a Glance

    ⚡ LCP (Loading)

    ≤ 2.5 seconds

    Largest element fully rendered

    👆 INP (Interactivity)

    ≤ 200 milliseconds

    Click/tap to visual response

    📐 CLS (Stability)

    ≤ 0.1 score

    No unexpected layout shifts

    What Are Core Web Vitals?

    Core Web Vitals (CWV) are three specific metrics Google uses to measure real-world user experience on your website. They focus on loading speed, interactivity, and visual stability: the three things that frustrate users most when they're poor.

    MetricMeasuresGoodNeeds ImprovementPoor
    LCP (Largest Contentful Paint)How fast the main content loads≤ 2.5s2.5–4.0s> 4.0s
    INP (Interaction to Next Paint)How fast the page responds to input≤ 200ms200–500ms> 500ms
    CLS (Cumulative Layout Shift)How much the layout moves unexpectedly≤ 0.10.1–0.25> 0.25

    Important: Google evaluates CWV using the 75th percentile of real user data (field data from Chrome users over 28 days). This means 75% of your visitors must have a good experience, not just the average.

    Why Core Web Vitals Matter for SEO

    53%

    of mobile users abandon a site that takes more than 3 seconds to load (Google research)

    70%

    longer sessions on pages that pass all three CWV thresholds vs. pages that fail (Chrome UX data)

    24%

    fewer page abandonments when sites meet CWV thresholds (Google case studies)

    Ranking signal

    CWV is a confirmed ranking factor since June 2021, acts as a tiebreaker between equally relevant pages

    Rich results

    Some rich results (Top Stories) require passing CWV to be eligible

    LCP: Largest Contentful Paint

    LCP measures when the largest visible element in the viewport finishes rendering, typically a hero image, heading block, or video poster. It's the metric most affected by hosting quality and image optimization.

    LCP PhaseWhat HappensTarget TimeCommon Fix
    TTFB (server response)Browser sends request → server responds≤ 800msBetter hosting, CDN, edge caching
    Resource load delayTime before LCP resource starts downloading≤ 100msPreload hero image, inline critical CSS
    Resource load timeTime to download the LCP resource≤ 800msCompress images, use WebP/AVIF, resize
    Render delayTime between download and paint≤ 100msRemove render-blocking JS, font-display: swap

    INP: Interaction to Next Paint

    INP replaced FID in March 2024. While FID only measured the delay before the browser started processing your first interaction, INP measures the full latency of every interaction (from input to visual update ) and reports the worst one (at the 98th percentile).

    INP PhaseWhat's MeasuredCommon Cause of Slowness
    Input delayTime from user interaction to event handler startLong main-thread tasks (>50ms), heavy JS execution
    Processing timeTime spent in event handlersComplex state updates, synchronous DOM reads/writes
    Presentation delayTime from handler completion to next paintLarge DOM trees (>1,500 nodes), forced reflow/layout

    CLS: Cumulative Layout Shift

    CLS quantifies how much visible content shifts unexpectedly during page load. Every time an element moves without user interaction, it contributes to the CLS score. The most common culprits are images without dimensions, late-loading ads, and dynamically injected content.

    CLS CauseWhy It ShiftsFix
    Images without width/heightBrowser doesn't know size until loaded → content jumpsAlways set width and height attributes or use CSS aspect-ratio
    Web fonts (FOUT/FOIT)Fallback font renders → custom font loads → text reflowsfont-display: swap + preload key fonts + size-adjust
    Ads / embeds / iframesInjected after page load → pushes content downReserve space with min-height or aspect-ratio containers
    Dynamically injected contentBanners, cookie notices, notifications inserted above viewportInsert below the fold or use transform animations (no layout shift)
    Late-loading CSSStylesheets load after render → layout recalculatesInline critical CSS, preload important stylesheets

    Free CWV Tools Compared

    ToolData TypeScopeBest ForLimitation
    PageSpeed InsightsField + LabSingle URLQuick diagnosis + real user dataOne URL at a time; no trend tracking
    Google Search ConsoleField onlyEntire siteSite-wide CWV monitoring + URL groupingNo debugging details; delayed data (28-day)
    Lighthouse (DevTools)Lab onlySingle URLDebugging specific issues + actionable fixesSimulated, doesn't reflect real users
    web-vitals JS libraryField (RUM)Your analyticsContinuous real-user monitoring + custom eventsRequires code integration + analytics platform
    CrUX DashboardField onlyDomain-levelMonthly trend charts + competitor comparisonOnly domains with enough traffic; monthly updates
    Web Vitals ExtensionLabCurrent pageInstant CWV overlay while browsingYour device only; not real user data
    DebugBear (free tier)Lab + Field3 pagesAutomated monitoring + historical chartsLimited to 3 URLs on free plan
    Treo Site SpeedField onlyDomain-levelCrUX data visualization + page-level breakdownDepends on CrUX data availability

    Google PageSpeed Insights

    URL: pagespeed.web.dev: The single most useful CWV tool. It combines field data (from CrUX, what Google actually uses for ranking) with lab data (Lighthouse, for debugging).

    1

    Enter your URL

    Test both mobile and desktop. Google evaluates mobile CWV for mobile search rankings and desktop CWV for desktop rankings.

    2

    Check the field data section first

    Look at 'Discover what your real users are experiencing': this shows the 75th percentile CWV from Chrome users. If your URL has enough traffic, you'll see green/yellow/red indicators for LCP, INP, CLS.

    3

    Review Lighthouse diagnostics

    Scroll to the 'Diagnose performance issues' section. Each audit has an estimated time saving and priority level. Focus on the biggest wins first.

    4

    Check the 'Opportunities' section

    These are specific actions: serve images in WebP, eliminate render-blocking resources, reduce unused JavaScript, etc. Each shows estimated savings in seconds.

    Google Search Console CWV Report

    Search Console's Core Web Vitals report is the only tool that shows site-wide CWV status across all your pages using real field data. Navigate to Experience → Core Web Vitals.

    FeatureWhat It ShowsHow to Use It
    URL groupingGroups similar URLs by template (e.g., all blog posts)Fix one page in the group → validate fix → it applies to all similar pages
    Mobile vs Desktop splitSeparate CWV assessments for each device typePrioritize mobile, Google uses mobile-first indexing for rankings
    Trend chart28-day rolling view of Good/Needs Improvement/Poor URLsWatch for regressions after deployments or plugin updates
    Issue detailsSpecific failing metric + affected URL countClick into each issue to see example URLs for debugging
    Validate fix buttonTriggers Google to re-evaluate pages after you fix issuesClick after deploying fixes, GSC re-checks within 28 days

    Lighthouse (Chrome DevTools)

    Lighthouse is the best debugging tool for CWV. It runs in a simulated environment and gives you specific, actionable recommendations with estimated time savings.

    Use Incognito mode

    Extensions can skew results by injecting scripts and modifying the DOM. Always test in an Incognito window.

    Test mobile mode

    Lighthouse simulates a mid-tier phone on 4G. Desktop scores are almost always higher, focus on mobile for SEO.

    Run 3–5 times

    Lab results vary between runs. Average multiple runs or use the median for reliable results.

    Check the Performance trace

    Click 'View Trace' to see a detailed timeline, find exactly which resource or script is blocking LCP or causing layout shifts.

    Use the Treemap

    Click 'View Treemap' to visualize JavaScript bundle sizes, find the largest modules to code-split or lazy-load.

    web-vitals JavaScript Library

    Google's open-source web-vitals library (npm) lets you collect real user metrics (RUM) from every visitor and send them to your analytics platform.

    Basic setup (send to Google Analytics 4)

    import { onLCP, onINP, onCLS } from 'web-vitals';
    
    function sendToGA4(metric) {
      gtag('event', metric.name, {
        value: Math.round(metric.name === 'CLS' 
          ? metric.delta * 1000 : metric.delta),
        event_label: metric.id,
        metric_rating: metric.rating, // good|needs-improvement|poor
        non_interaction: true,
      });
    }
    
    onLCP(sendToGA4);
    onINP(sendToGA4);
    onCLS(sendToGA4);

    Why this matters: CrUX and Search Console only report data for pages with enough Chrome traffic. The web-vitals library captures data from every visitor, giving you complete coverage and the ability to segment by page, device, geography, or connection speed.

    Chrome UX Report (CrUX) & Dashboard

    CrUX is the dataset behind PageSpeed Insights and Search Console. You can query it directly via BigQuery or use the free CrUX Dashboard in Looker Studio for monthly trend charts.

    CrUX Access MethodBest ForCost
    CrUX Dashboard (Looker Studio)Monthly trend charts, competitor comparison, easy sharingFree
    CrUX APIProgrammatic access, custom dashboards, CI/CD integrationFree (quota limits)
    BigQuery (CrUX dataset)Advanced analysis, cross-origin queries, custom percentilesFree 1TB/mo + $5/TB after
    PageSpeed Insights APIAutomated testing in CI/CD pipelines, batch URL analysisFree (quota limits)

    Other Free Tools Worth Using

    Web Vitals Chrome Extension : Chrome Web Store

    Real-time CWV overlay on every page you visit. Shows LCP, INP, CLS in the toolbar. Great for quick spot-checks during development.

    GTmetrix (free tier) : gtmetrix.com

    Lighthouse-based analysis with waterfall charts and historical tracking (1 URL, daily). Good for monitoring a single critical page.

    WebPageTest : webpagetest.org

    Advanced lab testing with filmstrip view, connection throttling, and multi-location testing. Best for deep debugging.

    Unlighthouse : unlighthouse.dev

    Open-source tool that crawls your entire site and runs Lighthouse on every page. Generates a single dashboard with all scores.

    Perfume.js : npm: perfume.js

    Lightweight RUM library (alternative to web-vitals) with built-in reporting to analytics platforms. Measures CWV + custom metrics.

    How to Fix Poor LCP

    FixImpactDifficultyImplementation
    Upgrade hosting / add CDNHigh (500ms–2s)EasySwitch to managed hosting with edge caching; add Cloudflare (free)
    Preload LCP imageHigh (200ms–800ms)Easy<link rel="preload" as="image" href="/hero.webp"> in <head>
    Serve images in WebP/AVIFHigh (30–80% smaller)EasyUse <picture> with WebP fallback; or auto-convert via CDN
    Inline critical CSSMedium (100–300ms)MediumExtract above-the-fold CSS into <style> in <head>; defer the rest
    Remove render-blocking JSMedium (200–500ms)MediumAdd defer/async to <script> tags; code-split with dynamic imports
    Enable HTTP/2 or HTTP/3Medium (100–300ms)EasyMost CDNs enable by default; check server config for origin
    Set fetchpriority='high' on LCP imageMedium (50–200ms)EasyAdd fetchpriority="high" to your hero <img> element
    Use font-display: swapLow (50–100ms)EasyPrevents invisible text while custom fonts load

    How to Fix Poor INP

    FixImpactImplementation
    Break up long tasks (>50ms)HighUse setTimeout, requestIdleCallback, or scheduler.yield() to split work
    Reduce JavaScript bundle sizeHighCode-split with dynamic import(); tree-shake unused code; lazy-load routes
    Debounce/throttle event handlersMediumLimit scroll, resize, input handlers to 100–200ms intervals
    Use CSS containmentMediumcontain: layout style paint on isolated components to limit reflow scope
    Reduce DOM sizeMediumTarget <1,500 nodes. Virtualize long lists (react-window, tanstack-virtual)
    Move work to Web WorkersHighOffload parsing, computation, or data transformation off the main thread
    Avoid forced synchronous layoutsMediumDon't read layout properties (offsetHeight) then write (style changes) in a loop
    Use content-visibility: autoMediumBrowser skips rendering off-screen content until needed, reduces initial rendering work

    How to Fix Poor CLS

    FixImpactImplementation
    Set explicit width/height on images & videoHighAlways include width and height attributes on <img> and <video> elements
    Use aspect-ratio CSSHighaspect-ratio: 16/9 on containers for responsive media without shifts
    Reserve space for ads/embedsHighSet min-height on ad containers before they load
    Preload fonts + font-display: swapMediumUse <link rel="preload" as="font"> + size-adjust for fallback fonts
    Avoid inserting content above viewportMediumBanners and notifications should appear below fold or use overlay/transform
    Use transform for animationsLowtransform: translateY() instead of top/margin changes, no layout shift
    Load CSS synchronouslyMediumCritical CSS inline in <head>; avoid dynamically injecting stylesheets late

    Recommended Monitoring Workflow

    FrequencyToolAction
    Every deployLighthouse CI (in CI/CD pipeline)Fail the build if performance score drops below threshold (e.g., 80)
    Dailyweb-vitals JS → analytics dashboardMonitor real-user CWV trends; alert on regressions > 10%
    WeeklyGoogle Search Console → CWV reportCheck for new failing URL groups; validate previous fixes
    MonthlyPageSpeed Insights on top 10 pagesDeep audit of highest-traffic pages; document scores
    MonthlyCrUX Dashboard (Looker Studio)Review monthly trend charts; compare against competitors
    QuarterlyUnlighthouse full-site crawlAudit every page for CWV regressions; prioritize fixes by traffic

    Hosting Impact on Core Web Vitals

    Hosting TypeTypical TTFBLCP ImpactCWV Grade
    Shared hosting (budget)300–800msAdds 300ms–800ms to LCP baseline⚠️ Often fails LCP
    Managed WordPress (SiteGround, Kinsta)80–200msMinimal overhead, server-level caching helps✅ Usually passes
    VPS (untuned)200–500msDepends on your config, no automatic optimization⚠️ Mixed results
    Edge hosting (Vercel, Cloudflare Pages)30–80msExcellent, content served from nearest edge location✅ Best LCP scores
    CDN + origin (Cloudflare, Fastly)50–150msStatic assets cached at edge; origin only for dynamic✅ Great for static content

    Core Web Vitals Optimization Checklist

    CategoryActionMetric Helped
    ServerUse managed hosting or CDN with TTFB < 200msLCP
    ServerEnable HTTP/2 or HTTP/3 (QUIC)LCP
    ServerEnable Brotli compressionLCP
    ImagesServe WebP/AVIF with explicit width/heightLCP + CLS
    ImagesPreload hero image with <link rel="preload">LCP
    ImagesLazy-load below-fold imagesLCP
    CSSInline critical CSS; defer non-criticalLCP
    CSSUse font-display: swap + preload fontsLCP + CLS
    JavaScriptDefer/async all non-critical scriptsLCP + INP
    JavaScriptCode-split with dynamic import()INP
    JavaScriptBreak long tasks into <50ms chunksINP
    LayoutSet width/height on all media elementsCLS
    LayoutReserve space for ads/embedsCLS
    MonitoringInstall web-vitals JS libraryAll
    MonitoringSet up Lighthouse CI in deployment pipelineAll
    MonitoringReview Search Console CWV report weeklyAll

    Frequently Asked Questions

    What are the three Core Web Vitals in 2026?
    The three Core Web Vitals are: LCP (Largest Contentful Paint), measures loading performance, target ≤2.5s. INP (Interaction to Next Paint), measures responsiveness, target ≤200ms. CLS (Cumulative Layout Shift), measures visual stability, target ≤0.1. INP replaced FID (First Input Delay) in March 2024 as it captures the full interaction latency, not just input delay.
    Do Core Web Vitals affect Google rankings?
    Yes. Core Web Vitals are a confirmed Google ranking signal since June 2021 (Page Experience update). They serve as a tiebreaker between pages with similar content quality. Pages with good CWV scores get a small but measurable ranking boost. More importantly, poor CWV leads to higher bounce rates (53% of users abandon pages that take >3s to load), which indirectly hurts rankings further.
    What's the difference between lab data and field data?
    Lab data (Lighthouse, DevTools) simulates page loading in a controlled environment, consistent network, CPU, and device settings. It's reproducible but doesn't reflect real users. Field data (CrUX, Search Console) collects actual performance from Chrome users over 28 days. Google uses field data (75th percentile) for ranking decisions. Use lab data for debugging; field data for tracking real impact.
    How often should I check Core Web Vitals?
    Check lab data (Lighthouse) after every significant code change or deployment. Review field data (Search Console) weekly, it updates daily but reflects a 28-day rolling window. Set up automated monitoring (web-vitals JS library) for continuous tracking. Run a full audit monthly with PageSpeed Insights on your top 10 pages by traffic.
    Can my hosting provider affect Core Web Vitals?
    Absolutely. Your hosting provider directly impacts LCP through server response time (TTFB). A slow server adds 500ms–3s to LCP before any optimization can help. Shared hosting typically delivers 300–800ms TTFB, while premium managed hosting achieves 50–150ms. CDN integration, HTTP/2-3 support, edge caching, and server location all significantly affect CWV scores.
    Is a Lighthouse score of 90+ necessary?
    No. Lighthouse scores are lab-based estimates, Google ranks based on field data (CrUX), not Lighthouse scores. A page with a Lighthouse score of 75 but good field data will outrank a page with a score of 95 but poor field data. Focus on passing CWV thresholds in the field: LCP ≤2.5s, INP ≤200ms, CLS ≤0.1. Lighthouse is a debugging tool, not a ranking tool.
    What's the best free tool for monitoring Core Web Vitals?
    For ongoing monitoring: Google Search Console (free, uses real field data, covers all your pages). For debugging specific pages: PageSpeed Insights (combines field + lab data). For continuous measurement: web-vitals JavaScript library (free, sends real user data to your analytics). For competitive analysis: CrUX Dashboard in Looker Studio (free, compare your domain against competitors).
    How long does it take to see CWV improvements in search rankings?
    CrUX data uses a 28-day rolling window. After deploying fixes: field data reflects changes within 28 days. Search Console CWV report updates within 2–4 weeks. Ranking impact typically appears 4–8 weeks after field data improves. Google recrawls and reprocesses pages on different schedules, so some pages update faster than others.

    Need Faster Hosting for Better CWV?

    Your hosting provider directly impacts LCP. Find a host with sub-200ms TTFB, built-in CDN, and edge caching to pass Core Web Vitals effortlessly.

    Find Fast Hosting