Skip to content

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.

CWV

Core Web Vitals

Google's set of three field metrics for loading (LCP), interactivity (INP) and visual stability (CLS) of a page.

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 more
LCP

Largest Contentful Paint

Good <= 2.5 s

The time until the largest visible element in the viewport (image, video or text block) has rendered.

LCP 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.
Learn more
INP

Interaction to Next Paint

Good <= 200 ms

How long the page takes to visually respond after a user interacts, measured across the whole visit.

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.
Learn more
CLS

Cumulative Layout Shift

Good <= 0.1

A unitless score for how much visible content unexpectedly moves around while the page loads and runs.

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.
Learn more
FCP

First Contentful Paint

Good <= 1.8 s

The moment the browser renders the first piece of content: text, an image or a canvas.

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

Time to First Byte

Good <= 0.8 s

The time from the start of navigation until the browser receives the first byte of the response.

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

First Input Delay (retired)

Good <= 100 ms

The delay between a visitor's first interaction and the browser starting to process it. Replaced by INP.

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

Total Blocking Time

Good <= 200 ms

The total time the main thread was blocked by long tasks between first paint and interactivity, measured in the lab.

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.
SI

Speed Index

Good <= 3.4 s

A lab metric for how quickly the visible parts of a page fill in during load, based on video capture.

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

Time to Interactive (legacy)

A lab metric for when a page has rendered and can reliably respond to input quickly.

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 classic load event: everything on the initial page, including images and subresources, has finished loading.

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.

Route Load

The loading time of an in-app navigation in a single-page app, where no full page reload happens.

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.

Long Tasks & LoAF

Any piece of JavaScript that occupies the main thread for more than 50 ms, blocking the page from responding.

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.

Experience Score

A single 0 to 10 number fastmon derives from LCP, INP, CLS, FCP, TTFB, load time and error rate.

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 docs

Methods10 terms

Monitoring methods

How performance is measured, from real visitors to scheduled lab runs.

RUM

Real User Monitoring

Measuring performance from the browsers of your actual visitors, on their real devices and networks.

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 more

Synthetic Monitoring

Scheduled, repeatable tests that load a page in a controlled environment on a fixed interval.

Synthetic 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 more

Lab data vs field data

Lab data comes from a controlled test; field data comes from real visitors. Both matter, for different reasons.

Lab 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

Google's open-source tool that audits a page in a lab run and scores performance, accessibility, SEO and more.

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

Chrome UX Report

Google's public dataset of real-world Core Web Vitals, aggregated from opted-in Chrome users.

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.

p75

Percentile (p75)

The value below which a given share of visits fall. p75 means 75 percent were at least this fast.

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.

Web Vitals Attribution

The extra diagnostic data that explains why a metric was slow, not just how slow it was.

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.

Web Analytics

Traffic and behaviour measurement: page views, visitors, referrers and journeys, alongside performance.

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 more

Error Tracking

Capturing JavaScript errors and failed requests from real sessions, grouped so you see the real problems.

A 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.

Alerting

Notification rules that tell you when a metric breaches a threshold or degrades, before customers complain.

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.

Beacon

The small data packet the tracker sends to fastmon with a visit's measurements.

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.

Tracker

The lightweight script you embed once; it measures Core Web Vitals and errors directly in the browser.

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.

Stitch

fastmon's short-lived, edge-derived identifier that groups a visit without cookies or cross-site tracking.

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.

Session

One continuous visit: the sequence of page views and interactions a visitor makes before going idle.

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.

Pageview

A single page load or, in a single-page app, a route change counted as its own view.

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.

Collection modes

Presets (Light, Standard, Full) that decide how much detail the tracker collects.

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.

Server-Timing

An HTTP header your backend can send to break down where server time was spent, visible in RUM.

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.

Cache-Status

Whether a response came from a CDN edge, the origin server or the browser cache.

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.

Cookieless

Measuring without storing anything on the visitor's device: no cookies, no localStorage.

Classic analytics writes a cookie to recognise returning visitors, which triggers consent requirements and can be blocked or cleared. fastmon is cookieless by default: in read-only mode it stores nothing on the device at all.

Cookieless is not the same as consent-free. Reading browser performance APIs can still fall under consent rules, but by storing nothing fastmon removes an entire class of privacy and accuracy problems that cookie-based tools carry.

Learn more

Edge IP processing

The visitor's IP address is reduced to a country code at the edge and discarded before any app code sees it.

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 more
GDPR

GDPR

The EU General Data Protection Regulation, the legal baseline for handling personal data in Europe.

The 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 more

TDDDG (Section 25)

The German law implementing the ePrivacy rule that reading from or writing to a device needs consent.

TDDDG 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

Where your data physically lives and under whose jurisdiction it falls. For fastmon: Germany, end to end.

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 more

Monitoring 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