Skip to content
Now accepting Q2 projects — limited slots available. Get started →
Performance · Updated Apr 30, 2026

What is Chrome User Experience Report (CrUX)?

CrUX is a public dataset of real-user performance metrics collected from opted-in Chrome browser sessions.

What is CrUX?

The Chrome User Experience Report (CrUX) is a public dataset maintained by Google that captures real-world performance metrics from Chrome users who've opted in to usage-statistic reporting. Launched in October 2017, CrUX collects field data — actual user experiences — as opposed to lab data generated by synthetic tools like Lighthouse. The dataset includes Core Web Vitals (LCP, INP, CLS) along with supplementary metrics like TTFB and first-contentful paint. Data is aggregated at both origin and URL level and published monthly in BigQuery, with a rolling 28-day window available through the CrUX API and PageSpeed Insights. Google uses CrUX data directly in its page experience ranking signals. If you're optimizing a production site for search, CrUX is the single source of truth for whether Google considers your pages fast enough.

How it works

CrUX gathers anonymized, aggregated performance data from real Chrome sessions on Android, ChromeOS, macOS, Windows, and Linux. Users must have sync enabled and usage-statistic reporting turned on. That means the dataset skews slightly toward logged-in Chrome users, but at scale (millions of origins), it's the best field-data source available.

Data is bucketed into three assessment bands per metric:

  • Good — e.g., LCP ≤ 2.5s, INP ≤ 200ms, CLS ≤ 0.1
  • Needs Improvement — between good and poor thresholds
  • Poor — e.g., LCP > 4.0s, INP > 500ms, CLS > 0.25

A URL or origin passes a Core Web Vitals assessment when at least 75% of page loads hit the "good" threshold for all three metrics.

You can query CrUX in several ways:

# CrUX API — 28-day rolling window
curl "https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=YOUR_KEY" \
  -d '{"url": "https://example.com/"}'
-- BigQuery — monthly tables
SELECT
  origin,
  p75_lcp,
  p75_inp,
  p75_cls
FROM `chrome-ux-report.materialized.metrics_summary`
WHERE origin = 'https://example.com'
ORDER BY date DESC
LIMIT 1;

The CrUX API returns p75 values and metric-level histograms. BigQuery tables give you monthly snapshots going back to 201711 and let you run longitudinal analysis across millions of origins.

When to use it

CrUX is the right data source whenever you need to understand how real users experience your site — not how a simulated test performs.

Use CrUX when:

  • Validating whether your Core Web Vitals pass Google's ranking thresholds
  • Comparing your field performance against competitors (BigQuery lets you query any public origin)
  • Reporting performance trends to stakeholders over months or quarters
  • Debugging discrepancies between lab scores and actual user experience

Don't rely on CrUX when:

  • Your site has very low traffic — origins need enough samples to appear in the dataset (typically thousands of monthly visits)
  • You need real-time performance monitoring — the API has a 28-day rolling window, and BigQuery is monthly
  • You need per-session debugging detail — CrUX is aggregated and anonymized, not a replacement for RUM tools like SpeedCurve or web-vitals.js

We've shipped performance audits on 50+ projects, and CrUX is always our first stop for baseline field data before touching any lab tool.

CrUX vs alternatives

Feature CrUX Lighthouse RUM (e.g., SpeedCurve, Datadog)
Data type Field (real users) Lab (simulated) Field (real users)
Cost Free Free Paid
Granularity Origin + URL aggregates Single page load Per-session, per-user
Update frequency 28-day rolling / monthly On-demand Real-time
Used by Google for ranking Yes No No
Custom metrics No Limited Yes
Traffic threshold ~thousands/month None None

Lighthouse is great for diagnosing why something is slow. CrUX tells you whether it's actually slow for real users. RUM tools give you the granularity CrUX can't — individual sessions, custom business metrics, alerting. Our preferred stack is CrUX for ranking-signal validation, web-vitals.js for lightweight RUM, and Lighthouse CI in the deploy pipeline.

Real-world example

We had a client whose Lighthouse scores were consistently 90+ on mobile, but their Search Console Core Web Vitals report showed failing INP on 40% of URLs. By querying CrUX via BigQuery, we confirmed that the p75 INP was 380ms — well above the 200ms threshold. The culprit was a third-party chat widget that hijacked the main thread on user interaction, something Lighthouse's simulated clicks never triggered. After lazy-loading the widget and deferring its initialization until after first interaction, the 28-day CrUX data showed INP dropping to 140ms within five weeks. The origin went from "needs improvement" to "good" in Search Console the following month.

Frequently asked questions about Chrome User Experience Report (CrUX)

Is CrUX the same as PageSpeed Insights?
No. CrUX is the underlying dataset; PageSpeed Insights is a tool that surfaces CrUX data alongside a Lighthouse lab audit. When you see the "Field Data" section at the top of a PageSpeed Insights report, that's pulled directly from the CrUX API's 28-day rolling window. The "Lab Data" section below it comes from a Lighthouse run triggered on the spot. PageSpeed Insights also uses CrUX to determine whether to show a green, amber, or red Core Web Vitals badge. You can access CrUX data without PageSpeed Insights by querying the API directly or running SQL against the BigQuery tables.
When did CrUX become standard for Google rankings?
CrUX launched in October 2017 as a BigQuery dataset. Google announced in May 2020 that Core Web Vitals — sourced from CrUX — would become a ranking signal, and the page experience update officially rolled out between June and August 2021. In March 2024, Google replaced First Input Delay (FID) with Interaction to Next Paint (INP) as the responsiveness metric in CrUX and Core Web Vitals. As of April 2026, CrUX remains the sole field-data source Google uses for its page experience ranking signals.
What's the alternative to CrUX for field performance data?
The main alternatives are Real User Monitoring (RUM) tools like SpeedCurve, Datadog RUM, New Relic Browser, or the open-source web-vitals.js library. These collect the same underlying browser performance APIs (PerformanceObserver, Event Timing API) but give you per-session granularity, custom metric tracking, and real-time alerting — things CrUX can't do. The trade-off is cost and implementation effort. For small sites that don't meet CrUX's traffic threshold, self-hosted RUM with web-vitals.js is the practical option. But no RUM tool feeds into Google's ranking algorithm — only CrUX does that.
Why does my site not appear in CrUX?
CrUX requires a minimum number of eligible page loads from opted-in Chrome users within the 28-day collection window. Google doesn't publish the exact threshold, but in practice, origins with fewer than a few thousand monthly Chrome visits often don't qualify. This is common for staging environments, B2B sites with small audiences, or sites where most traffic comes from non-Chrome browsers. If your origin doesn't appear, you won't have field data in PageSpeed Insights or Search Console's Core Web Vitals report. Your best workaround is to implement your own RUM using web-vitals.js so you still have real-user data to work with.
Get in touch

Let's build
something together.

Whether it's a migration, a new build, or an SEO challenge — the Social Animal team would love to hear from you.

Get in touch →