Home
Pricing
Platform Blog About Contact FAQ Partners
Sign in Start free
Core Web Vitals

LCP, INP, and CLS
from real users.

Field data, not lab simulations. Track the three Core Web Vitals Google uses as a ranking signal (per page, at the p75), sourced from your actual visitors via the lightweight Site Qwality RUM script.

Free tier included No credit card 2-minute setup
Site Qwality RUM overview with sessions and Core Web Vitals

The performance signal Google actually uses.

Lighthouse measures a lab condition. Core Web Vitals from real users measures what Google's crawler sees when it evaluates your pages for ranking. Site Qwality collects field data from your visitors, 100% of sessions by default, and surfaces the p50, p75 and p95 over time, with the p75 for every page, so you can act on the numbers that matter.

LCP, INP and CLS at p75

The three ranking-signal metrics tracked at the 75th percentile, the threshold Google uses to assess whether a URL is "good."

Real user field data

Collected via the Site Qwality RUM snippet from genuine page loads, not a headless browser on a lab network.

Per-page breakdown

See which specific pages have regressed rather than just a site-wide average, with p75 LCP, INP, CLS and load time for each page.

Trend tracking over time

Measurements are stored for 458 days by default, a little over 15 months, on every plan, and you can set a shorter ceiling per application. The overview's time-range selector offers up to 30 days today, so charting a longer window means querying the API directly.

p50, p75 and p95 side by side

The same chart carries the median, the ranking threshold and the tail, so you can tell a site-wide regression apart from a small group of very slow sessions.

Complements synthetic audits

Scheduled Lighthouse and page-speed audits run alongside real-user vitals, so you have both the lab score and the field data for a page. They are two views today, not one combined chart.

Field data vs lab data

Lab scores look good.
Users disagree.

A Lighthouse audit runs in controlled conditions: fast connection, powerful machine, empty cache. Your real visitors arrive on a 4G phone from across the world with 20 browser tabs open. Core Web Vitals field data captures their experience, and that is the experience Google ranks.

  • Collects data from real page loads, every session by default, not lab runs
  • Shows the share of page views rated good, needs improvement and poor
  • The p75 threshold matches how Google's Page Experience signal is scored
app.siteqwality.com / vitals / product
acme.com / product HealthyLIVE
LCP p752.3s
INP p7596ms
CLS p750.04
/product1850ms
/product/mugs2300ms
/product/plates2050ms
/product/sale4200ms
Narrow it down

Find the page
that actually regressed.

A site-wide p75 tells you something moved. Top pages shows p75 LCP, INP, CLS and load time for each page in the same window, so you can see which routes carry it. From there, error tracking and session replay tell you what those users hit.

  • Top pages by view count, with p75 LCP, INP, CLS and load time per page
  • LCP, INP and CLS cards at p75, colored on Google's thresholds
  • Ranges from the last hour to the last 30 days on the same chart
install the RUM snippet<!-- add once to <head> -->
<script>
  (function(w,d,s,u){var r=w.SiteQwalityRUM=w.SiteQwalityRUM||{_q:[]};if(r._q&&!r._h){
  ['init','setUser','clearUser','setGlobalAttribute','removeGlobalAttribute',
   'addError','addAction','setView','setTrackingConsent','optOut','optIn',
   'isOptedOut','startReplay','stopReplay','getSessionUrl','getStatus'].forEach(function(m){
    r[m]=function(){r._q.push([m,arguments])}});
  r._h=function(e){r._q.push(['_e',[e]])};w.addEventListener('error',r._h);
  w.addEventListener('unhandledrejection',r._h);
  var e=d.createElement(s);e.async=1;e.src=u;(d.head||d.documentElement).appendChild(e)}
  })(window,document,'script','https://cdn.siteqwality.com/rum/v2/sdk.min.js');

  SiteQwalityRUM.init({
    applicationId: 'YOUR_APPLICATION_ID',
    clientToken: 'YOUR_CLIENT_TOKEN',
    trackingConsent: 'pending'
  });
</script>

✓ 25.8 KB gzipped core (SDK 2.2.1)
3

Google ranking-signal vitals tracked at p75

25.8 KB

gzipped SDK 2.2.1 core script, loads asynchronously and never blocks render

p75

the exact percentile Google uses in its Page Experience signal

$0

free tier, no credit card needed to start

FAQ

Lab data (from Lighthouse or synthetic audits) is measured in a controlled environment on a simulated device and connection. Field data is collected from real users on their actual devices and connections. Google's Page Experience ranking signal uses field data, not lab data, which is why tracking real-user vitals matters for SEO.

Google's Core Web Vitals assessment determines a URL's status ("Good," "Needs Improvement," or "Poor") based on the 75th percentile. If your p75 LCP is under 2.5 seconds, 75% of your users see a "Good" load. Tracking p75 aligns your monitoring to what actually affects your ranking.

Paste the snippet into your page's <head>. It queues early calls and errors, loads the SDK asynchronously from the CDN and calls SiteQwalityRUM.init({ applicationId, clientToken }). The SDK 2.2.1 core script is 25.8 KB gzipped and never blocks rendering. Vitals are measured with the browser's native PerformanceObserver API, using the same metric definitions as Google's web-vitals library. No framework required, and there is an npm package if you would rather import it.

Per page. The snippet captures the current URL for every event so you can view LCP, INP and CLS for the homepage, product pages, checkout, and any other route separately.

Yes. Filter the Overview or Pages tab by browser, operating system, device or device class and the vitals follow the selection. The breakdowns also rank devices, browsers and operating systems side by side. Segmenting by connection type is not available: the script does not read the Network Information API.

You can alert on a vital, but there are no deployment markers. A RUM alert rule can watch p75 LCP, INP or CLS over a time window, optionally limited to a route, release or environment, and notify your existing Site Qwality channels. Nothing records a release against the chart, and there is no before-and-after comparison for a specific deploy.

Aggregate measurements are kept for 458 days, a little over 15 months, on every plan including the free tier. Paying more does not extend it and downgrading does not shorten it, so it is the same window for everybody by default. You can ask for less: account admins set a retention ceiling per RUM application in RUM, Settings, Data settings, or through the API (settings.retention.observe_days on PATCH /rum/{app_id}). The floor is one day, and lowering it also removes measurements already stored for that application rather than only applying to new ones. The overview's time-range selector offers up to 30 days, so reading further back means querying the API directly.

Start free. No credit card.

Uptime, cron, synthetic, logs, RUM, incidents, and status pages. Free tier on every product.