skip to content

What is the Chrome UX Report (CrUX), where does its data come from, and what are its limits as a source of field performance data for a site you own?

level: middleimportance: should knowfreq 50%

answer

  1. public field data, browser-contributed
  2. opted-in Chrome, desktop and Android
  3. rolling four-week aggregate
  4. origin level unless the URL is popular
  5. tells you what, never why

basics

~20 s

CrUX is Google's public dataset of real-user Core Web Vitals, gathered from opted-in Chrome users on desktop and Android and aggregated over a rolling 28-day window per origin, and per URL where a page has enough traffic. It reports what happened, never why.

solid answer

~50 s

CrUX is a public dataset of real-user experience data collected from Chrome users who opted into usage reporting, covering publicly reachable pages that get enough traffic to qualify. It is aggregated over a rolling 28-day window and published per origin, and per individual URL for popular pages, split by form factor. It is genuine field data, which is why it backs the Core Web Vitals shown in PageSpeed Insights and Search Console, and it is the only way to see a competitor's real numbers. The limits matter though: it is Chrome on desktop and Android only, so Safari, Firefox and every iOS browser are missing; it excludes pages behind a login; the rolling window means a fix takes weeks to show fully; low-traffic URLs fall back to origin-level data or nothing; and it carries no attribution, so it never tells you which element was the LCP or which script blocked the thread. For that you need your own RUM plus lab work.

go deeper

for a junior

Know that CrUX is public field data from real Chrome users, that it backs the Core Web Vitals shown in public reports, and that you do not have to instrument anything to get it.

for a middle

Explain the sourcing and shape: opted-in Chrome on desktop and Android, public pages only, a rolling 28-day aggregate published per origin and per popular URL, sliced by form factor.

for a senior

Show that you plan around its limits — the reporting lag when verifying a fix, origin-level fallback for long-tail URLs, and the absence of attribution that forces you into your own RUM and lab reproductions.

for a principal

Own the decision of what CrUX is authoritative for. It is the external, comparable scorecard; first-party RUM is the operational instrument. Be able to justify the cost of running both instead of leaning on the free one.

## What CrUX is The Chrome UX Report is a public dataset of how real people experienced real web pages. It is field data — collected in real browsers during real visits — but you do not have to instrument anything to get it, because the browser itself contributes the measurements. That property makes it unusual and useful. It is the only field data you can read for a site you do not control, which is why competitor comparisons, industry benchmarks and third-party performance reports are almost always built on it, and it is the dataset behind the Core Web Vitals assessments surfaced in PageSpeed Insights and in Search Console's Core Web Vitals report. ## Where the data comes from The population is Chrome users who have opted into usage statistic reporting and meet Chrome's eligibility conditions. Their navigations to publicly reachable pages contribute metric samples, which are aggregated before publication. Three consequences follow directly from that sourcing: - **Browser coverage is partial.** Chrome on desktop and Android contributes; Safari, Firefox and browsers on iOS do not. If a large share of your audience is on iPhones, a substantial part of your traffic is invisible in CrUX. - **It is opt-in, not census.** The contributing users are a subset of Chrome users, so the dataset is a sample, not every visit. - **Only public pages appear.** Pages behind authentication, internal tools and URLs that are not publicly reachable are excluded, so an application whose interesting pages sit behind a login gets little or nothing. ## How it is shaped CrUX publishes aggregates rather than individual page views: - A **rolling 28-day window**, so any single reading blends four weeks of sessions. - **Per origin**, always if the origin qualifies, and **per URL** for pages with enough eligible samples. - A **distribution** across the good / needs-improvement / poor buckets for each metric, plus the 75th percentile value. - Sliced by a small set of dimensions such as **form factor** (phone, desktop, tablet) and connection type. It is exposed through several front doors: an API for current data, a history endpoint for weekly trends, a monthly BigQuery dataset for large-scale analysis, and the reports built on top of them. ## The limits that bite in practice **No attribution.** This is the big one. CrUX tells you the 75th-percentile LCP for phone users on a URL. It does not tell you which element was the LCP candidate, when it was discovered, what blocked it, which script produced the long task behind a bad INP, or which component shifted. Diagnosis needs your own instrumentation or a lab reproduction. **Lag.** With a 28-day rolling window, a fix that lands today is one day out of twenty-eight in tomorrow's reading. Teams routinely panic that a fix "did nothing" a few days after deploying it. The history endpoint's weekly series makes the trend clearer, but the lag is real and you should plan verification around it, not against it. **Coverage thresholds.** A URL needs enough eligible samples to be published on its own. Below that threshold you fall back to origin-level data, which pools every page on the site — so a fast landing page can inherit the reputation of a slow section, and a fix to one template can be invisible in the pooled number. **Coarse dimensions.** You cannot slice by page template, logged-in state, A/B variant, deploy, or your own customer segments. Those are exactly the cuts that turn a number into an action, and they are only available in RUM you collect yourself. **Population skew.** Because the sample is Chrome-only and opt-in, comparing CrUX against your own RUM will show differences that are sourcing artefacts, not regressions. Expect the two to disagree in level while agreeing in direction. ## How to use it well Treat CrUX as the external scorecard and the sanity check. It answers "do real users pass, per the same yardstick everyone else is judged by, and how do we compare with peers?" — and it costs nothing to obtain. Then run your own RUM as the operational instrument: same metrics, but sliced by template, release, cohort and whatever else your product needs, with enough attached context to start a diagnosis. Use lab runs to explain what either one reports. A team that only watches CrUX will know it has a problem about three weeks late and will not know why.

  • A product page returns no URL-level data in CrUX. What happened, and what do you do?
    The URL did not reach the sample threshold needed for its own entry, which is common for long-tail pages. You fall back to the origin-level record, which pools all pages and is therefore blunt, or better, use your own RUM where you can group all pages of that template together to get a sample large enough to mean something.
  • Your own RUM and CrUX report noticeably different values for the same page. Is one of them broken?
    Usually not. The populations differ: CrUX is opted-in Chrome on desktop and Android over a rolling 28 days, while your RUM covers every browser your instrumentation reaches, in whatever window you query. Different browsers, different sampling and different windows produce different levels. Worry when the two move in opposite directions, not when they sit at different values.
  • Why can CrUX not help you at all with an internal admin application?
    It only covers publicly reachable pages visited by eligible Chrome users, so anything behind authentication contributes nothing. An internal tool also has far too little traffic to reach any publication threshold. Field data for such an app has to come from your own instrumentation, and lab runs are often the only practical signal.

saying these in an interview costs you the question

  • Thinks CrUX includes Safari, Firefox and iOS users
  • Expects a fix to show in CrUX the next day
  • Believes CrUX explains which element caused a bad LCP
  • Assumes every URL has its own CrUX entry
  • Treats CrUX as a replacement for first-party RUM

context