Glossary
Web performance,without the guesswork.
Every metric, method and building block behind fastmon, defined in plain language. Core Web Vitals with their real thresholds, the difference between lab and field data, and the concepts that make monitoring privacy-first.
Metrics14 terms
Web performance metrics
What actually gets measured, and the thresholds that decide good from poor.
Core Web Vitals are the subset of web performance signals Google treats as essential for user experience and feeds into ranking. Each one captures a different moment: how fast the main content appears, how quickly the page responds to input, and how much the layout jumps around.
A page is considered to pass only when all three are in the good range at the 75th percentile of real visits. Lab tools can estimate them, but the official assessment always uses field data from real users.
Learn moreLCP is the loading Core Web Vital. It answers the question a visitor cares about most: when does the page look ready? The clock starts when navigation begins and stops when the biggest above-the-fold element paints.
Because the largest element is usually a hero image or headline, LCP is dominated by how fast the server responds and how quickly that one resource can be delivered and decoded.
- Good
- <= 2.5 s
- Needs work
- 2.5 to 4 s
- Poor
- > 4 s
Field data (75th percentile)
What moves it
- Slow server response (high TTFB) delays everything downstream.
- Large or unoptimised hero images, or images without a priority hint.
- Render-blocking CSS and JavaScript in the document head.
- Client-side rendering that paints the main content late.
INP is the responsiveness Core Web Vital. It observes every click, tap and key press during a visit, measures the delay until the next frame is painted, and reports close to the worst one. A low INP means the interface feels instant.
INP replaced First Input Delay in March 2024. Unlike FID, which only looked at the first interaction's input delay, INP covers the full interaction including event processing and rendering, so it reflects real sluggishness far better.
- Good
- <= 200 ms
- Needs work
- 200 to 500 ms
- Poor
- > 500 ms
Field data (75th percentile)
What moves it
- Long JavaScript tasks that block the main thread during interaction.
- Heavy event handlers doing work before the next paint.
- Large DOM updates or layout thrashing triggered by an interaction.
- Third-party scripts competing for the main thread.
CLS is the visual stability Core Web Vital. Every time an element shifts without a user action, the browser scores it by how much of the viewport moved and how far. CLS sums the worst burst of those shifts during the visit.
It is the metric behind the familiar frustration of tapping a button that jumps the instant a late banner or image loads. Unlike the time-based vitals it has no unit: lower is better, and 0 means nothing moved.
- Good
- <= 0.1
- Needs work
- 0.1 to 0.25
- Poor
- > 0.25
Field data (75th percentile)
What moves it
- Images and embeds without width and height (or an aspect ratio).
- Ads, banners and iframes injected above existing content.
- Web fonts that reflow text when they swap in.
- Content inserted dynamically without reserved space.
FCP marks the transition from a blank screen to the first visible sign that the page is loading. It is not a Core Web Vital itself, but it is a strong early indicator and a common diagnostic for a slow LCP.
A fast FCP reassures visitors that something is happening. If FCP is slow, the cause is almost always upstream: server time, DNS, redirects or render-blocking resources.
- Good
- <= 1.8 s
- Needs work
- 1.8 to 3 s
- Poor
- > 3 s
Field data (75th percentile)
What moves it
- High TTFB and slow initial server response.
- Render-blocking stylesheets and synchronous scripts.
- Slow font delivery that hides text until it arrives.
TTFB captures everything that happens before rendering can even begin: DNS lookup, connection setup, TLS handshake, redirects, and the server producing the response. It is the foundation every other loading metric sits on.
A high TTFB caps how fast FCP and LCP can ever be, which is why it is the first thing to check when a page feels slow. Server logic, database queries and cold caches are the usual culprits.
- Good
- <= 0.8 s
- Needs work
- 0.8 to 1.8 s
- Poor
- > 1.8 s
Field data (75th percentile)
What moves it
- Slow backend processing or uncached database queries.
- No CDN, so visitors far from the origin pay the round-trip.
- Redirect chains before the final document loads.
FID was the original responsiveness Core Web Vital. It only measured the input delay of the very first interaction, and only that delay, not the work or rendering that followed, so a page could score a good FID yet still feel sluggish.
Google retired FID on 12 March 2024 in favour of INP, which measures the full interaction across the whole visit. FID is included here for context: you may still see it in older reports and tools.
- Good
- <= 100 ms
- Needs work
- 100 to 300 ms
- Poor
- > 300 ms
Field data (75th percentile)
TBT is a lab metric and the closest lab proxy for INP. It sums the blocking portion (everything over 50 ms) of every long task after FCP, showing how much a page would ignore input while scripts run.
Because it is measured in a controlled lab run, TBT is stable and great for catching regressions in CI before they reach real users as a poor INP.
- Good
- <= 200 ms
- Needs work
- 200 to 600 ms
- Poor
- > 600 ms
Lab data (Lighthouse)
What moves it
- Large JavaScript bundles parsed and executed at load.
- Expensive hydration in client-rendered frameworks.
- Third-party tags running heavy work on the main thread.
Speed Index records the loading filmstrip and scores how fast pixels above the fold become visually complete. Two pages with the same LCP can have very different Speed Index if one fills in gradually and the other pops in all at once.
It is a Lighthouse lab metric, useful for comparing perceived loading speed between builds, but it is not measured on real users.
- Good
- <= 3.4 s
- Needs work
- 3.4 to 5.8 s
- Poor
- > 5.8 s
Lab data (Lighthouse)
TTI estimated the point at which the main thread had been quiet long enough for the page to handle interactions dependably. It was once a headline Lighthouse score.
Lighthouse dropped TTI from its scoring in version 10 (2023) because TBT and INP describe responsiveness more reliably. It appears here for context with older audits.
Page Load (the window load event) is the oldest performance milestone. It is easy to understand and still useful as a coarse signal, but it says nothing about when the page looked or felt usable, which is why the Core Web Vitals exist.
fastmon records it alongside the vitals so you keep the familiar number while seeing the metrics that actually track experience.
In a single-page application, clicking a link swaps content client-side instead of loading a fresh document, so the classic load event never fires again. Route Load measures those soft navigations: how long a view change takes from click to painted content.
Without it, SPAs look artificially fast because only the very first load is measured. fastmon detects soft navigations and times each route change so the numbers reflect what visitors actually wait for.
While a long task runs, the browser cannot handle clicks, scrolls or paints, which is exactly what a visitor perceives as jank. Long Animation Frames (LoAF) is the newer API that goes further, attributing a slow frame to the script and even the source line responsible.
Long tasks are the raw material behind a poor INP or TBT. Finding and breaking them up, or moving work off the main thread, is the most direct way to make an interface feel fast.
Individual metrics are precise but hard to track at a glance across many pages. The Experience Score rolls them into one figure so a team can see the health of a page, a segment or a whole site at once, then drill down when it drops.
It never replaces the underlying vitals: it points you at where to look, and the metric cards tell you why.
Read the docsMethods10 terms
Monitoring methods
How performance is measured, from real visitors to scheduled lab runs.
RUM collects metrics from every real session: the phones, laptops, browsers and connections your audience actually uses. That is field data, and it is the only way to know what people truly experience, including the slow long tail that lab tests miss.
It is the foundation of Core Web Vitals assessment. fastmon's RUM is cookieless by default and strips IP addresses at the edge, so you get the field truth without building visitor profiles.
Learn moreSynthetic monitoring runs a page through a lab (for fastmon, scheduled Lighthouse and TTFB checks) on a schedule, from the same device profile and network every time. Because the conditions are fixed, results are stable and comparable, which makes them ideal for catching regressions and testing pages before they have any traffic.
It complements RUM rather than replacing it: synthetic tells you a page changed, RUM tells you whether real users felt it.
Learn moreLab data is reproducible: same device, same network, same steps, so it is perfect for debugging and CI. But one machine cannot represent every visitor, so it can look rosy while real users struggle.
Field data is messy and honest: it captures the full range of devices and connections in the wild. Core Web Vitals are officially assessed on field data. The healthiest workflow uses lab data to prevent regressions and field data to confirm the real-world result.
Lighthouse loads a page under simulated conditions and produces a 0 to 100 performance score from lab metrics like FCP, LCP, TBT, CLS and Speed Index, plus concrete recommendations. It powers the lab side of PageSpeed Insights.
fastmon's synthetic checks run Lighthouse on a schedule so you get its diagnostics continuously, not just when someone happens to run an audit.
CrUX is the field data source behind Google Search's Core Web Vitals assessment and the field section of PageSpeed Insights. It reports the 75th percentile per metric, aggregated monthly across eligible Chrome traffic.
It is invaluable but coarse: monthly, origin- or page-group level, Chrome only, and only for pages with enough traffic. Your own RUM fills those gaps with per-page, real-time, all-browser data.
Averages hide pain: a handful of very slow sessions can be masked by many fast ones. Percentiles describe the distribution instead. The 75th percentile is the threshold Core Web Vitals use, so that three out of four visits are represented and the worst quarter cannot be averaged away.
Watching p75 (and p90 or p95 for the tail) shows what most people experience and how bad it gets for the unlucky, which an average never reveals.
Knowing LCP was 4 seconds is only half the story. Attribution breaks a metric into its phases (for LCP: time to first byte, resource load delay, load time, render delay) and names the responsible element or the CSS selector behind a layout shift or slow interaction.
That turns a number into an action: instead of guessing, you see the exact image, script or element to fix.
Analytics answers who visited, from where, and what they did. Paired with performance data it becomes far more useful: you can see whether a slow page costs conversions or which traffic source lands on your worst experiences.
fastmon's analytics is privacy-first: no cookies in the default mode, no cross-site tracking, and IPs reduced to a country code at the edge, so it needs far less consent machinery than classic trackers.
Learn moreA page can score perfect vitals and still be broken for a segment of users because a script throws. Error tracking records those failures from the browser, with enough context (page, browser, sequence) to reproduce them.
Similar errors are collapsed into one fingerprint, so a thousand occurrences of the same bug show up as a single ranked issue instead of noise.
Dashboards only help when someone is looking. Alerting watches the numbers for you and fires when a Core Web Vital, error rate or Experience Score crosses a line you set, or trends the wrong way.
Good alerting is specific enough to be trusted: scoped to the pages and metrics that matter, so a page that turns critical reaches the right people instead of getting lost.
Building blocks8 terms
fastmon building blocks
The pieces that make up fastmon: from the beacon to the way visitors are counted.
When a page finishes measuring, the tracker packs the metrics, timings and any errors into a compact payload and sends it, typically via the Beacon API, so delivery does not block or slow the page.
You can inspect exactly what a beacon contains with the fastmon Beacon Inspector browser extension, which is part of how fastmon keeps what it collects transparent.
The tracker is the snippet that does the measuring. It hooks into standard browser APIs (the Performance API, PerformanceObserver, error events) and is aligned with the same web-vitals library Google uses, so the numbers are comparable to Chrome's.
It is small and loads without blocking rendering, so adding monitoring does not itself hurt the performance you are trying to measure.
To count unique visitors and connect the pages of one visit, some identifier is needed. Stitch is derived at the edge and rotates on a 24-hour basis, so it can group a session but cannot follow anyone across days, sites or devices.
It is how fastmon avoids the double-counting and orphaned sessions of pure cookieless approaches while still setting no cookies and building no long-lived profiles.
A session ties together the pages, timings and errors of a single visit so you can follow a journey rather than isolated hits. It is the unit behind metrics like pages per session and where in a flow people drop off.
In fastmon a session is bounded by the short-lived Stitch identifier, so it reflects one visit and does not become a permanent profile.
The pageview is the atomic unit of analytics. Each one carries its metrics, timings and context, and many together make up a session and the traffic totals.
fastmon counts soft navigations in single-page apps as pageviews too, so SPA traffic is not undercounted the way it is with tools that only see full document loads.
Not every site needs the same depth. Light keeps data to the essentials, Standard is the balanced default, and Full unlocks the richest diagnostics like detailed attribution and resource timing.
The mode is a deliberate lever over the privacy and data trade-off, chosen by you rather than assumed, and it maps directly to what a visitor's device is asked for.
TTFB tells you the server was slow, but not why. With the Server-Timing header your backend can report its own phases (database, cache, rendering) and the browser exposes them to the tracker.
That connects a slow field TTFB to the exact backend step responsible, closing the gap between frontend symptom and backend cause.
The same URL can be fast or slow depending on where it was served from. Recording cache status per request shows your real hit rate and surfaces resources that keep missing the cache and hitting the origin.
It turns caching from a hopeful configuration into something you can actually verify against real traffic.
Privacy & EU5 terms
Privacy and EU
Why fastmon measures without cookies and keeps every byte inside Germany.
An IP address is personal data. Instead of logging it and anonymising later, fastmon derives only a coarse country code at the edge server and drops the raw IP immediately, so it never reaches storage or application logic.
This is data minimisation by design: you still get geographic breakdowns, but there is no raw IP to leak, subpoena or misuse because it was never kept.
Learn moreThe GDPR governs how personal data (including IP addresses and identifiers) may be collected, processed and stored, and grants people rights over their data. Analytics tools have to justify what they collect and on what legal basis.
fastmon is built inside the GDPR rather than retrofitted to it: minimal data, no raw IP retention, no cross-site profiles and EU-only processing, which keeps the compliance surface small by design.
Learn moreTDDDG Section 25 (formerly TTDSG) is the German transposition of the ePrivacy Directive. It says storing information on, or accessing information from, a user's device generally requires consent, independent of whether that information is personal data.
This is why even a cookieless tool can still need consent: reading the browser's performance APIs is access to the device. The website operator obtains that consent through their consent platform, exactly as with other tools, as described in fastmon's privacy policy.
Data residency matters because location decides which laws apply. Data held by US providers can be reachable under regimes like the CLOUD Act even when the servers sit in Europe.
fastmon is hosted 100 percent in Germany on Hetzner, with no US provider in the data path, so your monitoring data stays under EU jurisdiction from collection to storage.
Learn moreMonitoring that
belongs in the EU.
Read-only by default: no cookies*, no long-lived identifiers, no US provider in the data path. Live in about five minutes.
Light
€29/month
200,000 pageviews included.
Need debugging and all features? Standard from €99 for 1M pageviews. Enterprise on request. See all plans