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 SpeedCurve 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.
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 longest Long Task < 380ms
- AND total CPU Time < 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 longest Long Task > 2300ms
- OR total CPU Time > 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.
The details for your User Happiness chart are seen by click "Help" in the chart header. Here's an example:
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.