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, per device, 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 every visitor and surfaces the p50, p75 and p95 values per page and per device, 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 and per-device breakdown

See how LCP on mobile compares to desktop, and which specific pages have regressions rather than just a site-wide average.

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 every real page load, not sampled lab runs
  • Segments by device type so mobile and desktop regressions are distinct
  • 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
Desktop1850ms
Mobile2300ms
Tablet2050ms
Safari4200ms
Narrow it down

Find the page and the device
that actually regressed.

A site-wide p75 tells you something moved. The overview breaks the same window down by page, device type, browser and operating system, so you can see whether LCP slipped everywhere or only on mobile Safari, and which routes carry it. From there, error tracking and session replay tell you what those users hit.

  • Top pages by view count, with average LCP and load time for each
  • Breakdowns by device type, browser and operating system
  • Ranges from the last hour to the last 30 days on the same chart
install the RUM snippet<!-- add once to <head> -->
<script type="module"
  src="https://cdn.siteqwality.com/rum/v1/sdk.min.js"></script>
<script type="module">
  SiteQwalityRUM.init({
    applicationId: 'YOUR_APPLICATION_ID',
    clientToken: 'YOUR_CLIENT_TOKEN',
  });
</script>
✓ 5.7kB gzipped · vitals appear within seconds
3

Google ranking-signal vitals tracked at p75

5.7kB

gzipped RUM script, deferred so it 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.

Add the module script tag to your page's and call SiteQwalityRUM.init({ applicationId, clientToken }). The bundle is 5.7 kB gzipped over the wire and loads as a deferred ES module, so it never blocks rendering. Vitals are measured with the web-vitals library on top of the browser's native PerformanceObserver API. 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. Device type (desktop, mobile, tablet), browser and operating system are derived from the request User-Agent on every event, and you can also filter by URL. Combine them to understand, for example, why mobile LCP is higher than desktop. Segmenting by connection type is not available: the script does not read the Network Information API.

Neither, today. There is no vitals alert rule, no p75 threshold to configure and nothing that fires when field data crosses one. There are also no deployment markers: nothing records a release against the timeline, and there is no before-and-after comparison for a specific deploy. An earlier version of this page advertised both, which was wrong. Alerting today covers uptime, cron, TLS, DNS and browser checks, not Core Web Vitals.

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: a retention ceiling is set per RUM application through the API (settings.retention.observe_days on PUT /rum/{app_id}), the floor is one day, and lowering it also applies to measurements already stored for that application rather than only to new ones. There is no control for this in the dashboard yet, so today it is an API call. 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.