User Happiness

An aggregate metric – available in RUM – that captures user happiness.

The goal of making websites faster is to make users happier. Since user happiness can't be measured directly, various metrics are used as a proxy for measuring user happiness - start render, First CPU Idle, First Input Delay, etc. Unfortunately, it's often difficult to decide which of these metrics best correlates to user happiness for your site. Further, when viewed in isolation these metrics might not reflect user happiness across your site.

To address these issues, we developed the User Happiness metric. It's a combination of multiple performance metrics that are closely tied to delivering a joyous user experience. Combining these metrics into an aggregate metric makes User Happiness more applicable across a wider variety of websites and conditions.

User Happiness is based on determining whether a page view is Happy, Unhappy, or Okay. This classification depends on how a page performs against a set of benchmarks. 

2016

Happy Page Views

A page view is considered Happy if it meets ALL of these conditions:

  • Start Render < 1100ms 

  • AND Page Load < 3400ms

  • AND DOM Content Loaded < 1600ms

  • AND First Contentful Paint < 1200ms

  • AND First Input Delay < 8ms

  • AND First CPU Idle < 3900ms

  • AND JavaScript Longest Task < 380ms

  • AND JavaScript Long Tasks < 1300ms

  • AND the user did not bounce

  • AND the user did not abandon the page before it finished loading

The thresholds above are the median values across all of SpeedCurve's RUM data. In other words, a page view is considered Happy if the page performed in the top half across all metrics. That sounds like it shouldn't be that difficult, but it can be challenging to achieve top half status across so many metrics.

Unhappy Page Views

A page view is considered Unhappy if it meets ANY of these conditions:

  • Start Render > 5200ms

  • OR Page Load > 20,000ms

  • OR DOM Content Loaded > 8300ms

  • OR First Contentful Paint > 5500ms

  • OR First Input Delay > 130ms

  • OR First CPU Idle > 18,700ms

  • OR JavaScript Longest Task > 2300ms

  • OR JavaScript Long Tasks > 9300ms

  • OR the user bounced

  • OR the user abandoned the page before it finished loading

The thresholds above are the 95th percentile values across all of SpeedCurve's RUM data. In other words, a page view is considered Unhappy if the page performed in the worst 5% of any of the metrics. 

Okay Page Views

A page is considered Okay if it is neither Happy nor Unhappy.

Happiness Details

The details for your User Happiness chart are seen by click Help in the chart header. Here's an example:

1716

The conditions are listed in priority order. In other words, the most stringent condition is listed first. In the example above, only 21% of Happy page views have a First Contentful Paint value less than 1200ms. Therefore, no matter what happens with the other conditions, the number of Happy page views will always be 21% or less. This list gives a prioritized list of the metrics to focus on in order to create more Happy page views: First Contentful Paint, followed by Start Render, followed by DOM Content Loaded, etc.

Looking at the Unhappy page views, the condition that contributes the most is "bounced". In other words, no matter how well the other conditions perform, the number of Unhappy page views will always be 19% or higher. 

How to adjust the algorithm

For some sites, bounce rate isn't a good indicator of user happiness – for example, if you're running a single page promotion, or if you have a media site that has a high bounce rate (which is typical of many media sites). You can toggle whether bounce rate is included in the User Happiness calculation in your RUM settings:

385