Real user monitoring

Real user monitoring (RUM) measures how a site performs and fails for the people actually using it. A small script runs in each visitor's browser and reports page load timings, errors and interactions back to a collector, so a team sees results across real devices, networks and locations rather than from a scripted test in a data centre.

The longer version

The script reads timing data the browser already collects, such as navigation and resource timings and the Core Web Vitals, along with uncaught errors, and sends it from the visitor's own session. The collector aggregates it by page, browser, device class, country and release. A team can then say that the checkout is slow on mid-range Android phones in one region, which no test run from a single office would reveal, and see whether a deploy moved the numbers.

Synthetic monitoring is the other half. A scripted probe loads a page or walks a flow on a schedule from fixed locations, so it runs whether or not anyone is visiting, gives a clean baseline and catches a dead page at three in the morning. It cannot reproduce the variety of real browsers, extensions and connections. Teams that run both use synthetic checks to answer whether the site is up and RUM to answer how it feels to the people on it. Largest contentful paint is a commonly read RUM metric because it reflects what a visitor waited for. The data has gaps: a page that fails before the script loads reports nothing, a site with little traffic yields too few samples to read, and sampling or a consent banner can thin what does arrive.

When a retailer ships a new product page template on a Tuesday, the average load time barely moves, but the view split by device shows the slowest visits on mid-range phones getting slower, and the errors cluster in one browser version. Nothing in a synthetic check from an office would have shown it. Because RUM records real people it needs the same care as any analytics: what is collected, for how long, and whether a visitor can decline. During a canary release it is a common way to see whether the small group on the new version is worse off than everyone else.

Common questions

What is real user monitoring?

Real user monitoring is the practice of measuring a site's performance and errors from the browsers of the people using it. A script in the page reports load timings, errors and interactions from each visit, and the results are grouped by device, browser, location and release to show how the site behaves in the field.

How does RUM compare with synthetic monitoring?

Synthetic monitoring runs scripted visits on a schedule from fixed locations and works with no traffic, while real user monitoring records what actual visitors experienced. Synthetic checks give a consistent baseline and early warning of outages. RUM shows the spread across real devices and networks that a scripted check cannot imitate.

What does RUM measure?

RUM measures page load timings, the Core Web Vitals such as largest contentful paint, resource loading, JavaScript errors and, in some tools, user interactions and route changes. Each measurement is tied to attributes of the visit, such as device type, browser, connection and page, so slow segments can be separated from fast ones.

Does real user monitoring replace bug reports?

Real user monitoring does not replace bug reports, because it records numbers and errors, not what the person was trying to do. It can show that a page failed for a group of visitors but not why they were there or what they expected, which is the context a written or annotated report supplies.

Is real user monitoring a privacy risk?

Real user monitoring collects data about real visitors, so it falls under the same consent and data-protection rules as other analytics. A team decides which fields to capture, avoids recording page content or typed input, and respects a visitor's refusal. A tool configured to collect only timings and error messages carries much less risk than one that records sessions.

Bug reports that arrive ready to triage.

Collect replay, console, network and browser context with the Free plan.

<script src="…/widget.js" data-key="pb_pub_…">