Rank Frame Logo

Features

Plugin

Company

Resouces

Rank Frame Logo

8 min read

SEO Fundamentals

What Are Core Web Vitals? Google's Page Experience Metrics Explained (2026)

Core Web Vitals are three Google metrics that measure real-world page experience: LCP, CLS, and INP. Here's what each one means and how it affects rankings.

7 Seers

Team 7 Seers

Creators of

and

SH

Table of Content

No headings found on page

What Are Core Web Vitals? Google's Page Experience Metrics Explained (2026)

What are Core Web Vitals?

Core Web Vitals are a subset of Web Vitals, an initiative Google launched in 2020 to give site owners a common, simplified set of performance metrics that map directly to user experience. The "Core" Web Vitals are the three metrics Google considers most important for every page on the web, and they are the ones used as ranking signals.

The current three Core Web Vitals are:

  • Largest Contentful Paint (LCP): how fast the main content loads

  • Cumulative Layout Shift (CLS): how stable the layout is during loading

  • Interaction to Next Paint (INP): how quickly the page responds to user input

Each one targets a specific dimension of user experience. LCP is about loading. CLS is about visual stability. INP is about interactivity. A page that does well on all three feels fast, stable, and responsive to real users, which is exactly what Google wants to surface in search results.

Why Core Web Vitals matter for SEO

Google rolled Core Web Vitals into its ranking algorithm as part of the Page Experience update in mid-2021. They have been a confirmed ranking signal ever since. In March 2024, Google replaced the original responsiveness metric (FID, First Input Delay) with the more comprehensive INP, which is the version that has applied throughout 2024, 2025, and into 2026.

Three things to understand about CWV as a ranking factor:

  1. The impact is real but modest. Google has consistently described CWV as a tiebreaker, not a primary ranker. If two pages have similar relevance and content quality, the one with better CWV wins.

  2. Field data is what counts, not lab data. Google measures CWV from real Chrome users via the Chrome User Experience Report (CrUX) dataset. A page only gets the boost when at least 75% of real visits pass the threshold.

  3. The indirect effects are bigger than the direct ones. Faster pages get more conversions, lower bounce rates, more shares, and more backlinks. Those second-order effects often outweigh the direct ranking signal.

What "passing" means

A page passes Core Web Vitals when the 75th percentile of real user visits hits "Good" on all three metrics, measured separately for mobile and desktop over a rolling 28-day window.

The three metrics at a glance

Before going deep on each one, here is the cheat sheet you can refer back to.

Metric

Measures

Good

Needs improvement

Poor

LCP

Loading speed of main content

≤ 2.5s

2.5s to 4.0s

> 4.0s

CLS

Visual stability during load

≤ 0.1

0.1 to 0.25

> 0.25

INP

Responsiveness to user input

≤ 200ms

200ms to 500ms

> 500ms

LCP: Largest Contentful Paint

LCP measures how long it takes for the largest content element visible in the user's viewport to render. That element is usually a hero image, a featured product photo, a large block of headline text, or a video poster. The clock starts when the page begins loading and stops when that largest element is fully painted on screen.

LCP thresholds

  • Good: 2.5 seconds or less

  • Needs improvement: 2.5 to 4.0 seconds

  • Poor: over 4.0 seconds

What causes slow LCP

  • Slow server response time (TTFB). If your server takes 1.5 seconds to send the first byte, you have already burned over half your LCP budget before any rendering begins.

  • Render-blocking resources. Large CSS files or synchronous JavaScript in the <head> delay the browser from painting anything until they finish loading.

  • Large unoptimized images. A 4 MB hero image on a mobile connection is the single most common LCP killer.

  • Lazy-loading the LCP image. Loading="lazy" on the hero image is a frequent mistake. Lazy-loaded LCP images can take 1 to 2 extra seconds to start downloading.

  • Slow third-party scripts. Tag managers, chat widgets, and analytics that run on the main thread block paint events.

  • Slow CDN or no CDN at all. Geographic distance to your origin server adds latency to every request.

How to fix LCP

  1. Optimize your hero image. Convert to WebP or AVIF, serve responsive sizes via srcset, and compress aggressively. Aim for under 200 KB on mobile.

  2. Preload the LCP image. Add <link rel="preload" as="image" href="hero.webp" fetchpriority="high"> in your <head> so the browser starts the download immediately.

  3. Use fetchpriority="high" on the LCP <img> tag itself.

  4. Never lazy-load above-the-fold images. Reserve loading="lazy" for images below the fold.

  5. Defer non-critical JS using async or defer attributes, or load it after the main content paints.

  6. Inline critical CSS for above-the-fold content, defer the rest.

  7. Use a CDN to serve assets from a server geographically close to each visitor.

  8. Improve TTFB. Use server-side caching, reduce database query times, and consider edge rendering.

The 70/30 rule of LCP

For most sites, around 70% of LCP issues come from the image itself (size, format, lazy-loading, late discovery) and 30% from server and render-blocking factors. Start with your hero image.

CLS: Cumulative Layout Shift

CLS measures how much the visible page content moves around unexpectedly during loading. Every time an element shifts position because something new loaded above or beside it, that counts as a layout shift. CLS scores the total impact of all unexpected shifts across the entire page lifecycle.

The score is unitless. A score of 0 means nothing shifted. A score of 0.5 means a substantial chunk of the viewport jumped around. CLS is the metric most directly tied to the frustrating experience of trying to tap a button and accidentally tapping an ad that just loaded into the same spot.

CLS thresholds

  • Good: 0.1 or less

  • Needs improvement: 0.1 to 0.25

  • Poor: over 0.25

What causes layout shifts

  • Images without width and height attributes. The browser does not know how much vertical space to reserve, so when the image arrives it pushes everything else down.

  • Ads, embeds, and iframes loading late. Ad slots that have no reserved height jolt the page when filled.

  • Web fonts swapping in. When a custom font loads after a fallback, character widths often change, causing text to reflow.

  • Dynamically injected content. Banners, cookie notices, or "subscribe" popups inserted at the top of the DOM push everything below them down.

  • Animations that affect layout. Animating width, height, top, or margin triggers reflow. Animating transform and opacity does not.

  • Async resources changing dimensions. A YouTube embed that sizes itself after loading.

How to fix CLS

  1. Always set width and height on every <img> and <video>. The browser uses these to compute the aspect-ratio and reserve space before the asset loads.

  2. Reserve space for ads and embeds. Use min-height or fixed-aspect-ratio containers so slots do not collapse when empty.

  3. Preload web fonts with <link rel="preload" as="font" crossorigin> and use font-display: optional or swap with carefully matched fallback metrics.

  4. Use the size-adjust, ascent-override, and descent-override font descriptors to make fallback fonts match the dimensions of your custom fonts.

  5. Avoid inserting content above existing content unless triggered by a user interaction (interactions within 500ms are excluded from CLS).

  6. Use CSS transforms for animations instead of top/left/width/height.

  7. Test with throttled network conditions in DevTools to surface shifts that only appear on slow connections.

INP: Interaction to Next Paint

INP measures how quickly your page responds to user interactions, meaning clicks, taps, and key presses. Specifically, it measures the latency from the moment a user interacts with the page to the moment the next visual update appears on screen. INP looks at all interactions across a page session and reports a value representing the worst (or near-worst) interaction.

INP became a Core Web Vital on March 12, 2024, replacing the older First Input Delay (FID) metric. The reason for the swap: FID only measured the input delay of the very first interaction, ignoring everything that came after. INP measures the full interaction-to-paint latency of all interactions, which is much closer to how users actually perceive responsiveness.

INP thresholds

  • Good: 200 milliseconds or less

  • Needs improvement: 200 to 500 milliseconds

  • Poor: over 500 milliseconds

What causes high INP

  • Heavy JavaScript on the main thread. Long tasks (over 50ms) block the browser from responding to input.

  • Large event handlers. A click handler that runs 300ms of JavaScript before yielding will produce a 300ms INP score on every click.

  • Third-party scripts. Heavy tag managers, A/B testing tools, and analytics often run synchronous work during interactions.

  • Excessive DOM size. Pages with thousands of DOM nodes are slower to update because the browser has more layout and paint work to do.

  • Heavy framework hydration. Single-page-app frameworks doing hydration or re-rendering on interaction can produce long tasks.

  • Synchronous storage access. Reading large amounts of data from localStorage or IndexedDB on the main thread during input handling.

How to fix INP

  1. Break up long tasks. Split work into chunks under 50ms, yielding to the main thread between chunks using setTimeout, scheduler.yield(), or requestIdleCallback.

  2. Use the new scheduler.postTask API to prioritize input handling over background work.

  3. Defer non-essential work to after the next paint using requestAnimationFrame followed by setTimeout, so the visual response happens before the heavy logic.

  4. Move heavy computation to Web Workers. Workers run on a separate thread and never block input handling.

  5. Audit third-party scripts. Replace or remove ones that contribute to INP. Use Chrome DevTools Performance panel to identify culprits.

  6. Reduce DOM size. Aim for under 1,500 nodes per page. Use virtualization for long lists.

  7. Debounce and throttle expensive event handlers like scroll, resize, and input.

  8. Use CSS for visual feedback, not JavaScript, where possible. CSS-driven hover and active states do not add to INP.

INP is the hardest CWV to fix

Most sites that fail Core Web Vitals fail on INP, not LCP or CLS. Heavy JavaScript frameworks and accumulated third-party scripts make INP a persistent challenge. Plan for it deliberately.

Other Web Vitals you should know

Beyond the three Core Web Vitals, Google publishes additional Web Vitals that are useful for diagnosis even though they are not direct ranking factors. Two stand out.

TTFB (Time to First Byte)

TTFB measures the time between the browser requesting a page and receiving the first byte back from the server. It captures DNS lookup, TLS handshake, server processing time, and network latency. TTFB is the foundation of LCP: a slow TTFB makes a fast LCP almost impossible.

  • Good: 800ms or less

  • Needs improvement: 800ms to 1800ms

  • Poor: over 1800ms

How to improve TTFB: use a CDN, enable caching, optimize backend code and database queries, and choose hosting close to your audience.

FCP (First Contentful Paint)

FCP measures when the first piece of content (text, image, SVG, canvas) is painted to the screen. It marks the moment the user knows the page is loading, even if the main content is not ready yet. FCP is a useful diagnostic for LCP: if FCP is slow, LCP will almost always be slow too.

  • Good: 1.8 seconds or less

  • Needs improvement: 1.8 to 3.0 seconds

  • Poor: over 3.0 seconds

How to measure Core Web Vitals

You have several free tools, each with different strengths. Use a combination, do not rely on just one.

1. PageSpeed Insights

The fastest way to test a single URL. Visit pagespeed.web.dev, paste a URL, and get both lab data (Lighthouse) and field data (CrUX) in one report. Field data is shown at the top, broken into mobile and desktop. This is the closest you will get to seeing what Google sees.

2. Google Search Console: Core Web Vitals report

For site-wide field data, open Search Console and go to Experience > Core Web Vitals. The report groups your pages into Good, Needs Improvement, and Poor for both mobile and desktop, and lets you drill into specific URL groups. This is what Google uses for ranking purposes, so it is the most important report to monitor.

3. Lighthouse (Chrome DevTools)

For lab-based debugging, open Chrome DevTools (F12), go to the Lighthouse tab, choose Mobile and Performance, and run an audit. Lighthouse simulates a mid-range device on a slow 4G connection and gives you actionable optimization recommendations. Great for development, less useful for measuring actual user experience.

4. Chrome DevTools Performance panel

For deep diagnosis of INP and CLS, the Performance panel records every frame and layout shift in real time. You can see exactly which scripts are blocking the main thread and which elements are shifting. This is the tool engineers use to fix specific problems after Lighthouse identifies them.

5. CrUX (Chrome User Experience Report)

The raw, public dataset that powers PageSpeed Insights and Search Console. You can query it directly via the CrUX API, the CrUX BigQuery dataset, or the CrUX Dashboard in Looker Studio. Useful for tracking trends over time across multiple URLs at once.

6. web-vitals JavaScript library

For real user monitoring on your own site, the open-source web-vitals library from Google lets you collect LCP, CLS, and INP directly from your visitors and send the data to your analytics. Many analytics platforms (Google Analytics 4, Cloudflare, Vercel Analytics, SpeedCurve) integrate this automatically.

Field data vs lab data: why they disagree

One of the most confusing things about Core Web Vitals is when PageSpeed Insights shows green field data but red lab data, or the reverse. Understanding the difference is essential.








Lab data

Field data

Source

Lighthouse simulation

Real Chrome users (CrUX)

Device

Single emulated mid-range phone

Every device that visits your site

Network

Throttled simulated 4G

Whatever the user is actually on

Sample size

One run per audit

Aggregated over 28 days

Includes INP

No (lab cannot simulate user input well)

Yes

Used for ranking

No

Yes

The takeaway: field data is the truth. Lab data is a useful debugging tool, but it does not affect rankings. If your field data is green, you are passing CWV regardless of what Lighthouse says. If your field data is red, fixing it requires understanding what real users on real devices are experiencing, not just what Lighthouse simulates.

New site? You may not have field data yet

CrUX requires a minimum amount of traffic before it reports data for your URLs. New or low-traffic sites often see "Insufficient data" in PageSpeed Insights field data section. In that case, lab data is your only option until traffic grows.

If You Have a Framer Site

Framer was built with performance as a first-class concern, and many of the Core Web Vitals best practices are handled for you out of the box. Images uploaded to Framer are automatically converted to WebP, served from Framer's global CDN, and resized into responsive variants for each viewport. Below-the-fold images are lazy-loaded by default. Width and height attributes are set automatically, which protects your CLS score. Framer's runtime is also lightweight compared to most page builders, which helps INP.

That said, Framer alone does not guarantee green Core Web Vitals. The most common culprits on Framer sites are:

  • Heavy hero videos or 4K images placed above the fold, which inflate LCP and increase data usage.

  • Complex on-load animations that delay paint and visual stability.

  • Embedded third-party widgets (chat tools, calendars, marketing scripts) that block the main thread and damage INP.

  • Custom code components that ship more JavaScript than they need to.

  • Custom fonts loaded without preloading or proper font-display settings, causing layout shifts when they swap in.

This is exactly where RankFrame helps. RankFrame includes a Page Speed tab built into the Framer editor that pulls live Lighthouse data and Core Web Vitals metrics for every page on your site, so you can see LCP, CLS, and INP scores without leaving Framer. You get specific, actionable recommendations for the pages that are failing, and you can re-test after each publish to confirm your fixes worked. Combined with RankFrame's site audit (which catches issues like missing image dimensions, oversized images, and render-blocking scripts), it becomes much easier to keep your Framer site in the green on Core Web Vitals over time. Start your 14-day free trial to see your scores inside the Framer editor today.

Frequently asked questions

What are the three Core Web Vitals?

The three Core Web Vitals are Largest Contentful Paint (LCP), which measures loading performance; Cumulative Layout Shift (CLS), which measures visual stability; and Interaction to Next Paint (INP), which measures responsiveness to user input. Each has a defined threshold for Good, Needs Improvement, and Poor.

Do Core Web Vitals affect Google rankings?
Do Core Web Vitals affect Google rankings?

Yes. Core Web Vitals are a confirmed ranking signal in Google Search as part of the Page Experience update. Pages that pass all three Core Web Vitals thresholds receive a ranking benefit relative to equivalent pages that fail. The signal is not large enough to overcome major content quality or authority gaps, but in competitive niches where content quality is similar, it can determine which page wins a position.

Do Core Web Vitals affect Google rankings?

Yes. Core Web Vitals are a confirmed ranking signal in Google Search as part of the Page Experience update. Pages that pass all three Core Web Vitals thresholds receive a ranking benefit relative to equivalent pages that fail. The signal is not large enough to overcome major content quality or authority gaps, but in competitive niches where content quality is similar, it can determine which page wins a position.

What is a good LCP score?
What is a good LCP score?

A Good LCP score is under 2.5 seconds. Needs Improvement is between 2.5 and 4.0 seconds. Poor is above 4.0 seconds. LCP measures the time from when the user navigates to the page to when the largest content element in the viewport becomes visible. The LCP element is usually a hero image, a background image, a large block of text, or a video poster.

What is a good LCP score?

A Good LCP score is under 2.5 seconds. Needs Improvement is between 2.5 and 4.0 seconds. Poor is above 4.0 seconds. LCP measures the time from when the user navigates to the page to when the largest content element in the viewport becomes visible. The LCP element is usually a hero image, a background image, a large block of text, or a video poster.

What is a good CLS score?
What is a good CLS score?

A Good CLS score is under 0.1. Needs Improvement is between 0.1 and 0.25. Poor is above 0.25. CLS measures unexpected layout shifts: when elements on the page move after the initial render because images load without declared dimensions, ads inject content, or fonts swap and cause text to reflow.

What is a good CLS score?

A Good CLS score is under 0.1. Needs Improvement is between 0.1 and 0.25. Poor is above 0.25. CLS measures unexpected layout shifts: when elements on the page move after the initial render because images load without declared dimensions, ads inject content, or fonts swap and cause text to reflow.

What replaced FID in Core Web Vitals?
What replaced FID in Core Web Vitals?

Interaction to Next Paint (INP) replaced First Input Delay (FID) as the interactivity Core Web Vital in March 2024. FID only measured the delay before the first interaction. INP measures the full response latency of all interactions on the page throughout the user's visit, which is a more comprehensive measure of responsiveness. A Good INP score is under 200 milliseconds.

What replaced FID in Core Web Vitals?

Interaction to Next Paint (INP) replaced First Input Delay (FID) as the interactivity Core Web Vital in March 2024. FID only measured the delay before the first interaction. INP measures the full response latency of all interactions on the page throughout the user's visit, which is a more comprehensive measure of responsiveness. A Good INP score is under 200 milliseconds.

How do I check my Core Web Vitals?
How do I check my Core Web Vitals?

Use Google PageSpeed Insights at pagespeed.web.dev to check lab data and field data for any public URL. Google Search Console's Core Web Vitals report (under Experience) shows real-world data aggregated across all pages on your site. Lighthouse in Chrome DevTools provides lab measurements for testing before deployment. The Chrome User Experience Report (CrUX) is the field data source Google uses for ranking.

How do I check my Core Web Vitals?

Use Google PageSpeed Insights at pagespeed.web.dev to check lab data and field data for any public URL. Google Search Console's Core Web Vitals report (under Experience) shows real-world data aggregated across all pages on your site. Lighthouse in Chrome DevTools provides lab measurements for testing before deployment. The Chrome User Experience Report (CrUX) is the field data source Google uses for ranking.

Rank Frame Logo
Product

Features

Company
Resources

@2026 All Rights Reserve. A Product by 7 SEERS

Rank Frame Logo
Product

Features

Company
Resources

@2026 All Rights Reserve. A Product by 7 SEERS

Rank Frame Logo
Product

Features

Company
Resources

@2026 All Rights Reserve. A Product by 7 SEERS