The CLS score is a dimensionless number between 0 and — in severe cases — above 1. Understanding what it represents, how the thresholds were determined, and what score you actually need to pass Core Web Vitals gives you a clear target to work toward.
The Cumulative Layout Shift score is not a simple count of how many times content moved, nor is it a measure of how many pixels shifted. It is a composite score that accounts for both the proportion of the viewport affected by unexpected movement and the distance elements traveled relative to the viewport size. A score of 0 means no layout shifts occurred. Higher scores indicate greater visual instability.
Because the score combines viewport impact and movement distance, a single large shift affecting most of the visible area can produce a higher CLS score than many small shifts affecting narrow regions of the page. A shift that moves an element 200px down in an 800px-tall viewport (distance fraction of 0.25) and affects 60% of the viewport area (impact fraction of 0.60) produces an individual shift score of 0.15 — which by itself would rate as "Needs Improvement."
Each individual layout shift event produces a score calculated from two fractions:
The impact fraction is the fraction of the viewport (by area) affected by the shift. It is calculated as the union of the element's previous position and current position, divided by the total viewport area. If an element occupies 40% of the viewport before the shift and 40% after, but has moved so that the combined area of before and after positions is 60% of the viewport, the impact fraction is 0.60.
The distance fraction is the largest distance any single unstable element moved during the shift, divided by the greater of the viewport's width or height. If an element moved 150px and the viewport is 900px tall, the distance fraction is 150/900 = 0.167.
Multiple elements can shift simultaneously in a single layout shift event. In that case, the impact fraction covers all shifting elements, and the distance fraction uses the greatest distance moved by any single element — not a combined or average distance.
The CLS score is not the sum of all individual shift scores. Since 2021, Google uses a session window approach. Layout shifts are grouped into windows of up to five seconds, where no more than one second passes between any two consecutive shifts. The CLS score reported for a page is the maximum score of any single session window — the worst burst of instability that occurred during the page's lifetime.
This distinction matters in practice. A page that has ten small shifts spread evenly across 30 seconds may score lower than a page that has three large shifts occurring within two seconds of each other, because the three clustered shifts form a high-scoring session window even though the total number of shifts is lower.
Google evaluated a large corpus of real-world web performance data to determine the CLS thresholds that best correlate with user experience outcomes — specifically, the point at which users report a meaningful degradation in perceived visual stability.
The page is visually stable. Passes the Core Web Vitals CLS assessment. This is the target for every page on your site.
Noticeable but not severe visual instability. Users experience some unexpected movement. Improvement is warranted.
Significant visual instability. Fails the Core Web Vitals assessment. Users frequently experience disruptive unexpected movement.
The 0.1 threshold was chosen because it represents a level of shift that is small enough to be imperceptible or negligible to most users under normal conditions. A shift that scores exactly 0.1 might be caused by, for example, an image that loads and occupies 40% of the viewport and moves 25% of the viewport height — noticeable but not disruptive. Google's user research indicated that shifts below this magnitude do not meaningfully affect user satisfaction scores.
A CLS score above 0.25 represents shifts that are consistently disruptive. At this level, users are likely to lose their reading position, accidentally tap unintended elements, or experience frustration that causes them to abandon the page. The 0.25 threshold corresponds to shifts that are large, frequent, or both — for example, a full-width banner loading above the fold and displacing the entire page content downward by 30% of the viewport height.
A good CLS score is 0.1 or below. This is the threshold required to pass the Core Web Vitals assessment and earn a "Good" page experience designation in Google Search Console. Achieving a score of 0.1 or below should be the target for every page on your site, not just the homepage.
In practice, many well-optimized pages achieve CLS scores below 0.05, and pages built with careful attention to image dimensions, font loading, and dynamic content management frequently score 0.01 or lower. A score of 0.00 is achievable on pages with no dynamic content, no web fonts, and no ads — though it is not realistic for most commercial or content-heavy pages.
For most sites, a realistic and worthwhile target is to bring all key pages — homepage, top landing pages, product pages, and article templates — below 0.1 in both lab and field conditions.
The CLS score you see in PageSpeed Insights or Lighthouse is a lab score. It reflects the behavior of the page during a single simulated load under controlled conditions. The field score in the Search Console Core Web Vitals report reflects the 75th percentile of real-user CLS measurements collected over the previous 28 days from actual Chrome browser sessions.
These two scores frequently differ, sometimes significantly, for several predictable reasons.
The lab simulator makes no ad requests to ad networks. If your page serves display advertising, the lab score will not capture any ad-related CLS — but real users who see ads will experience that shift. A page that scores 0.05 in the lab but serves ads that have no reserved container height might score 0.30 in field data because of the ad slots loading unexpectedly.
The lab simulation accesses the page as an anonymous, uncached visitor. Pages that render differently for logged-in users — showing account information, personalized recommendations, or membership content — will have different CLS profiles for those user segments. The field data in Search Console averages across all user segments, including authenticated users who may experience shifts that anonymous users never see.
The lab uses a single emulated network speed and device configuration. Real users visit on a range of devices and connection speeds. Slower devices and slower connections take longer to load resources, which extends the window during which late-loading resources can trigger shifts. This is why mobile field CLS scores are often worse than desktop field scores, and why field data frequently shows worse CLS than lab data for pages with many third-party resources.
Google's Core Web Vitals assessment evaluates a URL based on its field data at the 75th percentile. This means that for a page to pass the CLS threshold, at least 75% of real-user visits must produce a CLS score of 0.1 or below. The assessment is based on field data, not lab data — so a good lab score does not guarantee passing the assessment.
For a URL to be rated "Good" in Search Console, it must have sufficient real-user traffic in the Chrome UX Report dataset (typically several thousand visits over the preceding 28 days). URLs with insufficient traffic may not be individually rated; their performance may be inferred from other URLs with similar structure on the same site.
CLS benchmarks vary significantly by site category, primarily because the amount and type of dynamic content loaded by different site types differs substantially.
News and media sites tend to have some of the worst CLS scores because they rely heavily on ad revenue, serve multiple ad units per page, and frequently inject late-loading content such as recirculation widgets, video players, and breaking news banners. Scores above 0.25 are common on ad-heavy news pages without explicit CLS remediation.
E-commerce sites typically have moderate CLS caused by product image loading, app-injected content, and promotional banners. Scores between 0.05 and 0.20 are common; well-optimized stores can consistently achieve below 0.05.
Blog and content sites with minimal third-party scripts and static content can usually achieve very low CLS scores — often below 0.02 — because they have fewer dynamic elements and no ad slots.
SaaS and application pages have highly variable CLS depending on how much dynamic content is rendered client-side. Pages that render significant content via JavaScript after the initial HTML load are at higher risk of CLS than server-rendered pages.
Get your exact CLS score, see the Good / Needs Improvement / Poor rating, and identify the specific elements causing shifts — all in one free test.
Test My CLS Score