Documentation
Thresholds
Thresholds for good
/ needs improvement
/ poor
are used in many different widgets.
Internally the codebase defines them similarly to how Lighthouse defines its internal Scoring Curves (reference).
For more information about what these values mean or how they were calculated (which later inspired Core Web Vitals thresholds), see How metric scores are calculated in Google’s documentation.
However, if a widget pulls data from Google CrUX APIs, it will favor using the CrUX API’s own thresholds to stay up to date in case there are changes in the future. At the time of this writing, they are the same as Lighthouse’s mobile thresholds.
Internal thresholds
export const LIGHTHOUSE_SCORING_CURVES: LighthouseScoringCurves = {
phone: {
// lighthouse v10
FCP: { p10: 1800, median: 3000 },
SI: { p10: 3387, median: 5800 },
LCP: { p10: 2500, median: 4000 },
TBT: { p10: 200, median: 600 },
CLS: { p10: 0.1, median: 0.25 },
// custom - from CrUX thresholds
TTFB: { p10: 800, median: 1800 },
INP: { p10: 200, median: 500 },
},
desktop: {
// lighthouse v10
FCP: { p10: 934, median: 1600 },
SI: { p10: 1311, median: 2300 },
LCP: { p10: 1200, median: 2400 },
TBT: { p10: 150, median: 350 },
CLS: { p10: 0.1, median: 0.25 },
// custom - from CrUX thresholds
TTFB: { p10: 800, median: 1800 },
// custom - from CrUX thresholds but lowered following TBT ratios
INP: { p10: 150, median: 290 },
},
};
Score gauges
- Both CrUX and laboratory metrics will use their equivalent Lighthouse Scoring Curves, so they become more challenging for desktop compared to mobile.
Number values
- CrUX metrics will use their equivalent Google CrUX thresholds which are the same for both mobile and desktop.
- Laboratory metrics will differentiate between mobile and desktop by using the appropriate Scoring Curve, either original from Lighthouse or the ones we’ve defined ourselves.