Cumulative Layout Shift in the Real World
Table of Contents
- Across the Web
- By Industry
- By Page Group
- Desktop vs. Mobile
- vs. Bounce Rate
- vs. Session Length
- vs. Page Load Time
- vs. Rage Clicks
- What’s Next?
This is a companion post to Cumulative Layout Shift in Practice, which goes over what Cumulative Layout Shift (CLS) is, how it can be measured in lab (synthetic) and real-world (RUM) environments, and why it matters.
Real World Data
What do Cumulative Layout Shift scores look like in the real world?
Akamai’s mPulse RUM product uses boomerang.js to gather performance metrics for Akamai’s customers.
As part of their Core Web Vitals, Google recommends a CLS score under
0.1 for a Good experience, and under
0.25 for Needs Improvement. Anything above
0.25 falls under the Poor category. They explain how they came up with these thresholds in a blog post with more details.
Across the Web
Let’s take a look at a sample of the Cumulative Layout Shift distribution over all mPulse websites. This histogram reflects hundreds of millions of page load experiences captured over a week in September 2020:
We see what looks like a logarithmic distribution with higher occurrences of CLS near
0.00 and a long tail out towards
2.0+. Note all CLS values over
2.0 are limited to
2.0 for these graphs.
Some interesting findings from this dataset:
- 7.5% of page loads have CLS scores of
0.01(the most common bucket)
- 50% of page loads have CLS under
- 75% of page loads have CLS under
0.28(what Google recommends to measure at)
- 90% of page loads have CLS under
- 95% of page loads have CLS under
- 99% of page loads have CLS under
- 0.5% of page loads have CLS over
There also seems to be a strange spike around
1.00 — I wonder if there’s a common scenario or type of website that shifts all visible content once? I hope to investigate this more later.
The 75th percentile (which Google recommends measuring at) shows a CLS score of
0.28 for these websites — just outside of the Needs Improvement range (
0.25), and in to the Poor bucket (
0.25 and higher). Luckily the median experience is at
0.10, right at the edge of the threshold for Good experiences (according to Google).
Note that all of the data you see in the chart above (and sections below) will be biased towards the websites mPulse measures, which skews more towards North America and European websites, across retail, financial and other sectors. It is not a representative sample of all websites.
This data may also be biased towards the higher-traffic websites that mPulse measures (it is not normalized by traffic rates).
Let’s break down Cumulative Layout Shift by industry.
For these charts, we’re taking a sample of at least 5 websites for each industry, split by the top-level categories of Retail, News and Travel:
These three graphs highlight how different industries (and for that matter, different websites) may have different page styles, and as a result, different user experiences.
These sample Retail websites show a relatively smooth logarithmic decrease from
2.00. The 75th percentile user experience is
0.23 — in the Needs Improvement bucket, but better than the other sectors.
These sample News websites look similar to Retail, but also have a few spikes of data around
0.10 (and a smaller one at
1.00). The 75th percentile user experience is at
0.29, and it appears these experiences shift more towards the Poor bucket than Retail.
These sample Travel websites show a much different distribution, with spikes at a lot of different score buckets. These sites have a 75th percentile CLS score of
0.41, which is worse than the other two industries. In fact, this is the only sector with a median (
0.29) in the Poor category.
(Obviously, the exact websites that go into each of these samples will have a dramatic effect on the shape of the graphs, but we tried to use similarly sized and traffic’d websites so one particular website doesn’t overly skew the data.)
By Page Group
A Page Group, for a specific website, is a set of pages with a common design or layout. Common Page Groups might be called Home, Product Page, Product List, Cart, etc. for a Retail website.
Each Page Group may be constructed differently, with varying content. While we can’t really compare Page Groups across different websites, it can be interesting to see how dramatically Cumulative Layout Shift scores may differ by Page Group on a single website.
For this example Retail website, we can see CLS scores for two unique Page Groups. The first Page Group shows a majority of Good experiences, while the second Page Group has mainly Poor experiences:
When looking at CLS for a website, or your website, make sure you understand all of the experiences going into the reported value, and that you have enough data to be able to target and reduce the largest factors of that score.
Desktop vs. Mobile
Breaking down CLS from all mPulse websites by device type shows slightly different curves:
Desktop CLS scores are skewed more towards
0.00 and logarithmically decrease towards
2.0+, while mobile CLS scores still have a spike around
0.00 but have additional peaks around
0.01 and drop off more slowly towards
There’s also a noticeable spike for mobile CLS around
1.0, which we don’t see as pronounced in desktop. Maybe there is a subset of mobile pages or ads or widgets that shift all content at once?
The 75th percentile CLS for mobile (
0.39) is notably worse than for desktop (
0.23), and are in different ranking buckets (Poor vs. Needs Improvement). Mobile websites are often built differently than desktop layouts, but it’s a shame mobile users see such an increase in layout shifts. Shifting content can be frustrating and cause users to loose their place or mis-click on the wrong content, and those frustrations can be amplified on smaller screens.
vs. Bounce Rate
How does Cumulative Layout Shift affect Bounce Rate?
Bounce Rate is a measure of whether your visitors bounce (leave) after visiting a single page. Any user that visits two or more pages is considered a non-Bounce.
Since the first page will help decide whether the user navigates elsewhere, let’s take a look at Landing Page Cumulative Layout Shift vs. that user’s Bounce Rate (whether they left the site after the first page or not).
The theory is that if a user has a high Cumulative Layout Shift (i.e. negative experience) on the first page, they may be more likely to bounce.
Here’s one example Retail website. CLS (from
2.0 max) is on the X axis, Bounce Rate (as a percentage of users who bounced after one page at that CLS) on the Y axis. The size of the circle is the relative number of data points for that bucket:
We can see correlation (ρ=0.74) between Cumulative Layout Shift and Bounce Rate. There are obviously outliers, but the Poor (
> 0.25) CLS scores generally increase Bounce Rate as the CLS increases.
Here’s a second retail website, which seems to show a similar correlation (ρ=0.83) to Bounce Rate:
Let’s look at a different sector of websites. Here’s a News website that shows less of a correlation (ρ=0.53):
(note the Y scale has changed)
The lowest CLS scores (Good experiences) show a relatively low Bounce Rate. As soon as the CLS goes out of the range of Good (
0.1) towards Needs Improvement (
0.25) and beyond, Bounce Rate stays relatively the same.
For this site, why doesn’t the Bounce Rate change much as the CLS increases? Honestly, I’m not sure, though if I had time I could dig into the data. It’s possible the lowest-CLS experiences are pages that entice the user to stay more.
For the retail websites, obviously CLS is just one measure of the user experience, and we just see a correlation with Bounce Rate. Improving CLS alone may not improve bounce rates. It’s probable that some of the lower-bouncing pages have lower CLS because of how they’re designed. Or, those lower-CLS pages are crafted “landing pages” that try to get the visitor to go to more pages on the site.
It’s also possible other factors like ad-blockers are affecting things here — maybe an ad-free non-shifting user experience keeps visitors longer? It would take a bit more research into the specific sites to understand this better.
vs. Session Length
Similar to Bounce Rate, Session Length is a measure of how many pages a visitor accesses over a specific period of time (e.g. 30 minutes).
Here’s the same retailer’s Session Length vs. Landing Page CLS. Like how Bounce Rate increased with CLS, let’s look to see if the Session Length decreases with higher CLS scores:
As expected, the higher the Landing Page Cumulative Layout Shift, the fewer number of pages those visitors go to.
As we saw before with the same News website, lower CLS values seem to give a slightly higher Session Length (e.g. more pages were visited) for Good experiences, but the drop in Session Length isn’t as pronounced for higher CLS scores (the difference between ~1.5 and ~2.0 pages per Session).
Also note this graph is just comparing the Landing Page CLS score — i.e. their first experience on the site — not the subsequent CLS scores from additional pages.
This data just shows a correlation, not causation. When looking at data like this, try to consider what is causing the shifts in the first place. Was it ads? Social widgets? Removing the content that causes the shifts will help multiple aspects of performance, including network activity, runtime tasks, layout shifts, and more.
vs. Page Load Time
Does Cumulative Layout Shift correlate with Page Load times?
Here’s a plot of hundreds of millions of CLS score buckets versus the median Page Load times:
There appears to be strong correlation (ρ=0.84) for Cumulative Layout Shift increasing with increased Page Load time.
Intuitively, I would expect this to be the case — the more content that is added to a page (which increases its Load Time), the more likely that content will cause layout shifts.
Again, this is just showing a correlation. Some layout shifts may be caused by simple layout inefficiencies or bugs. Other layout shifts may be directly caused by third-party content, which is also increasing Page Load time.
vs. Rage Clicks
Does Cumulative Layout Shift correlate with Rage Clicks?
Using Boomerang, we can collect Rage Clicks, which are a measure of how commonly a visitor clicks the same area repeatedly. One of the cases where this may happen is when a website stops reacting to user input, and the user repeats the same clicks in the same region.
Here’s a plot of hundreds of millions of CLS score buckets versus average Rage Clicks per page:
We again see a decent correlation (ρ=0.77) between Cumulative Layout Shifts and Rage Clicks.
There is a strange spike of Rage Clicks around CLS values of ~
0.10, and I haven’t had a chance to investigate why. That could be an over-representation of some website that has a lot of CLS values around
0.10 and higher Rage Click occurrences. Or it could be a common design pattern or widget/ad that is causing issues! Something to dig into in the future.
Rage Clicks can frustrate your users, and cause them to bounce. Even if you’re not measuring Rage Clicks directly, your CLS scores may give a hint toward how often it happens. It’s intuitive that the worst CLS scores (over
1.0) have a strong correlation with users (mis)clicking, if content is shifting around a lot.
Cumulative Layout Shift is still a relatively new metric for websites to measure. At mPulse, we capture billions of performance metrics a day, and there are still are a lot of aspects of CLS that we haven’t dug into yet. Over time, I hope to share more insights and graphs around CLS (and other performance metrics) in this post or others.
Being a relatively new metric, there is still a lot of opportunity to understand how closely CLS reflects the user experience. From the above data, we see correlations with business and performance metrics, but on its own, CLS scores may just be a side effect of how the rest of the site is built and the third party components or ads you include. If you’re interested in improving your own CLS score, you really need to dig into your own data and use developer tools to find and fix the shifts.
If you want to learn more about CLS in general, you can read the companion post Cumulative Layout Shift in Practice.
If you have any interesting insights into your own CLS data, please share below!