Synthetic Monitoring vs Real User Monitoring: Which Do You Need?
They sound like alternatives, but they answer different questions. One tells you whether your website is up; the other tells you what your visitors actually experience.
Updated 3 September 2026 · 7 min read
-
Written by
Andrian Valeanu
Founder of Pulsetic
-
Reviewed by
Ionut Caval
Technical reviewer
Synthetic monitoring runs scripted checks against your website from outside your infrastructure on a fixed schedule, so it catches outages even when no one is visiting. Real user monitoring (RUM) records the experience of actual visitors, so it shows real-world performance across devices and networks. Most teams need both: synthetic for availability and alerting, RUM for real-world speed.
Key takeaways
- Synthetic monitoring is proactive: it tests your website on a schedule from the outside, so it finds problems before a customer does, even at 3am with zero traffic.
- RUM is descriptive: it measures what real visitors actually experienced, including slow devices, far-away networks, and pages you never thought to test.
- Synthetic is your alerting and uptime layer. RUM is your real-world performance and Core Web Vitals layer.
- They are complementary, not competing. Synthetic tells you something broke; RUM tells you who it affected and how badly.
- If you only run one to start, run synthetic monitoring: you cannot fix an outage you never hear about.
The difference in one line
Synthetic monitoring generates its own traffic: a scripted request fired from outside your infrastructure on a fixed interval, whether or not anybody is visiting. Real user monitoring generates none. It waits for a visitor, then reports what that visit was actually like.
Everything below follows from that one split. Synthetic can walk a checkout at 3am on a website with no traffic, catch an expired SSL certificate before a customer meets it, and prove a region is slow by testing from inside it. What it cannot tell you is how the page felt on a mid-tier Android phone on patchy mobile data, because it has never been one.
RUM has the opposite shape. It sees every device, browser and network your visitors actually have, which is where field Core Web Vitals come from and why search engines grade you on them. It also goes silent during an outage: a website nobody can load produces no sessions to measure.
Synthetic vs RUM at a glance
| Synthetic monitoring | Real user monitoring | |
|---|---|---|
| How it works | Scripted checks from the outside | Measures real visitor sessions |
| Runs when | On a fixed schedule, always | Only when people visit |
| Catches outages with no traffic | Yes | No |
| Real-world device and network data | No | Yes |
| Best for | Uptime, alerting, SLAs | Performance, Core Web Vitals, UX |
- 2.5s
- LCP good threshold: time to paint the largest element
- 200ms
- INP good threshold: interaction responsiveness
- 0.1
- CLS good threshold: visual stability
- 75th
- percentile of real visits Google scores you at
The numbers only RUM can produce
Google grades page experience on Core Web Vitals, at the 75th percentile of real visits: LCP at 2.5 seconds or less, INP at 200 ms or less, CLS at 0.1 or less. A synthetic agent can compute lab versions of all three, and the lab version of INP is close to meaningless, because no script can predict when a real person will tap. The scores that reach Search come from the field.
That is the sharpest line between the two layers. Synthetic answers whether the page worked. Only RUM answers whether it worked for the slowest quarter of the people who loaded it, and under the 75th-percentile rule that quarter decides the verdict.
Where RUM runs out of data and synthetic does not
RUM coverage is a function of your traffic. Synthetic coverage is not. On a quiet website you can keep 100% of sessions and the volume stays manageable; on a busy one, teams sample, keeping a representative slice of pageviews because storing and processing every beacon costs more than the extra precision buys. A well-chosen sample still produces accurate percentiles, which is all the Core Web Vitals assessment needs.
The failure mode is a cohort vanishing. Sample too hard and one country, one slow device class, or the checkout flow drops out of the data altogether, and you can no longer tell "fine" apart from "not measured". The usual guard is to keep every session that hits an error or a conversion step and sample the rest. Synthetic has no equivalent problem: the check runs on its cadence regardless, which is why a 3am release, a page behind a login, or a region you have no visitors in yet is synthetic territory rather than RUM territory.
Which layer answers which question
- Is the website up right now? Synthetic. RUM cannot see an outage it has no visitors left to measure.
- Did we meet the SLA last quarter? Synthetic, because it produces an unbroken record on a fixed cadence instead of one that thins out whenever traffic does.
- Does checkout still work end to end? Synthetic, scripted as a transaction check, so the flow is exercised before a customer finds the broken step.
- Are we passing Core Web Vitals? RUM. The scores Search acts on are field data; the lab equivalents decide nothing.
- Why is it slow for some people and not others? RUM, sliced by device, country and connection. That distribution is exactly what synthetic never sees.
- Did this morning's release make things worse? Both, on different clocks. Synthetic tells you within one check interval whether it broke; RUM tells you over the following hours whether it got slower.
What each one catches that the other misses
The real split is not synthetic versus RUM as rivals. It is lab versus field, and they fail in opposite directions. Lab tests run one device, one network and one fresh cache, on a schedule you control. Field data is a distribution of every real device, network and cache state your visitors actually have.
What synthetic misses, and only RUM catches: a lab test cannot predict when a user will tap, so INP is effectively unmeasurable synthetically. Lazy-loaded images and late ads without reserved dimensions shift layout only after a real person scrolls, so synthetic CLS reads clean while field CLS is poor. And your synthetic agent runs on a fast wired connection from one data center, so it never sees the mid-tier Android phone on patchy mobile data that defines your 75th percentile.
What RUM misses, and only synthetic catches: RUM needs traffic. A page no real user has visited yet, a checkout step behind a login, a new release at 3am, or a low-traffic region produce no field data at all. Synthetic checks run on a fixed cadence regardless, which is why they are the right tool for an API endpoint, an SSL certificate nearing expiry, or an SLA you have to prove uptime against. RUM tells you a problem is happening to someone; synthetic tells you it is happening at all, even at the quietest hour.
Rule of thumb: synthetic owns the things that must work before a customer arrives, like uptime, certificates, APIs and login flows. RUM owns the things you can only learn after they arrive, like real Core Web Vitals at the 75th percentile, on real devices.
Watch uptime and real-world performance in one place
Pulsetic runs synthetic checks from 15+ locations and tracks real user performance, with alerts when either slips.
Why most teams run both
The two are not competitors, they are two halves of the same picture. Synthetic monitoring is the smoke alarm: it is always on and it wakes you up when something breaks. RUM is the thermostat: it tells you how the room actually feels to the people in it.
A simple way to decide the order: start with synthetic monitoring for availability and alerting, because an outage you never hear about is the most expensive kind. Add RUM once you are watching uptime, to understand and improve real-world performance.
Pulsetic covers the synthetic side with uptime and API monitoring from 15-plus locations, and tracks real-world performance with real user monitoring, so the same dashboard answers both "is it up?" and "is it fast for real people?"
See how Pulsetic's uptime and API monitoring catches this from the outside, across 15+ locations.
Frequently asked questions
-
Is synthetic monitoring better than RUM?
Neither is better, they answer different questions. Synthetic monitoring tells you whether the website is up and meets your SLA. RUM tells you how fast it really is for actual visitors. Most teams run both.
-
Do I still need RUM if I already have synthetic monitoring?
Only if you care how fast the website is, not just whether it is up. Synthetic proves availability and backs an SLA, but it cannot tell you the checkout is slow on mid-range Android phones in one country, because it never runs on one. If uptime really is all you need, synthetic on its own is a reasonable place to stop.
-
Which should I set up first?
Synthetic monitoring. You cannot respond to an outage you never hear about, so availability and alerting come first, then add RUM to improve real-world performance.
-
Does synthetic monitoring measure Core Web Vitals?
It can measure lab versions of them, but the field data search engines actually use comes from real visitors, which is what RUM captures. For accurate Core Web Vitals you want RUM.
-
Catch the next outage before your visitors do.
2-minute setup · Cancel any time
-
No credit card needed