Latency Visualisation (LatencyMON)
LatencyMON is a client-side tool that visualises and compares latency trends using stacked, interactive charts. It is built with Vue 3 and Quasar, consistent with the rest of the RIPE Atlas UI.
Highlights
- Available for ping, traceroute, DNS, TLS (SSL) and HTTP measurements.
- Designed to make comparison easy: values are preprocessed and the axes are auto-tuned so multiple trends can be read side by side.
- New results are fetched automatically as they are collected — polling is timed to each measurement's sampling interval — and you can navigate back through historical results.
- Probes are grouped automatically (by target or country), and any group can be split into individual per-probe charts.
- Shows min, a middle value (avg/med) and max, with a toggle to show only the minimum.
- Both absolute (milliseconds) and relative (percentage) value representations are available.
- Charts are stacked and can be reordered, drag-resized and expanded to fullscreen.
Reading the charts
Each chart plots latency over time for a single probe or a group of probes. Three values are available per sample:
- min — the lowest of the round-trip times collected.
- max — the highest.
- the middle value — shown as
avgfor ping measurements (the average RTT) ormedfor traceroute, DNS, TLS and HTTP measurements (the median).
By default all three lines are drawn (the min line in green); use the Min / All toggle to switch to showing only the minimum. Each dot marks a collected sample, and values that the axis optimisation has clipped (so extreme outliers don't distort the chart) are shown with distinct dot styling. Hover near a sample — the popup snaps to the nearest one, so you only need to get close — to see its min, middle value (avg/med) and max in milliseconds, plus packet loss; these are always shown as the original millisecond values, even in the relative view.
When several probes are grouped into one chart, their results are aggregated into a single min, middle and max band, and the member probes are listed beneath the chart; split the group (see below) to see each probe on its own. An empty spot means no data was collected for that period. Packet loss is drawn as a shaded area whose opacity scales with the amount of loss, making heavier loss more visible. When the view is aggregated rather than at full resolution, the popup for a sample with partial packet loss adds a "Zoom in for per-sample detail" hint.
Axis: milliseconds vs relative
The x-axis always shows time on a linear scale. The y-axis can show absolute or relative values — switch between them with the ms / Relative toggle.
Milliseconds (absolute)
Shows the real latency values in milliseconds on a linear scale. The y-axis starts at the minimum latency collected in the time range for that chart, and extreme outliers are clipped so they don't distort the scale.
Relative
Shows each value as a percentage above the minimum baseline, with the baseline sitting at 0%. For example, if the latencies collected oscillate between 30 ms and 90 ms, 30 ms is the baseline (0%) and 90 ms appears as +200%.
Using the tool
When a measurement is first loaded, LatencyMON applies a default grouping — by target where that applies, otherwise by country, falling back to grouping the first probes. The probes belonging to each group are listed with its chart.
The toolbar's controls, in order from left to right:
| Control | What it does |
|---|---|
| Add measurement | Add another measurement to the view. |
| Add probes | Add specific probes from the loaded measurements (enabled once a measurement is present). |
| Time window | Pick a preset window (last hour, 2 days, 2 weeks or month) or choose Custom for an exact range. |
| ◀ Shift earlier | Move the window back by a quarter of its width. |
| Zoom in / out | Narrow or widen the time range (10× per step); zooming in loads higher-resolution data. |
| ▶ Shift later | Move the window forward by a quarter of its width. |
| Jump to now | Move the window to the current time. |
| Fullscreen | Expand the visualisation to fill the screen. |
| Relative / ms | Switch the axis between relative (% above the minimum) and absolute (milliseconds). |
| Min / All | Show only the minimum line, or min + middle + max. |
| Size / Distance | When grouping by country, choose which five countries to show: those with the most probes (Size) or those closest to the target (Distance). |
| Auto refresh | Jump to the current time and keep refreshing periodically (shown while a measurement is still running). |
| Share (🔗) | Copy a link to the current view — measurements, time range and settings — or embed code (a ready-to-paste <iframe>) for the same view. |
| About (ⓘ) | Open the LatencyMON info panel. Shown only in fullscreen view. |
Group, split and reorder
In addition to the automatic grouping, you can build your own groups and rearrange the view:
- Split a group into individual per-probe charts with a single button on the group, to inspect each probe on its own.
- Reorder charts by dragging them, and resize a chart by dragging.
Navigate through time
While a particular time frame is shown, use the time bar beneath the charts to move through the measurement's lifetime. The selected window can be widened or narrowed with the time bar or the toolbar controls, and you can zoom in or out by selecting a portion of a chart. When the selected time frame is recent enough, live updating activates: LatencyMON polls for new results in step with the measurement's sampling interval (it does not use a streaming feed). An indicator shows when live updating is active.
Open the measurement
LatencyMON links out to the underlying RIPE Atlas measurement by ID, so you can jump from a trend to the measurement's own page. The probes in a group are also listed as links beneath its chart.
High-resolution data beyond routequake limits
LatencyMON normally reads from the aggregated results API (routequake). For ranges that fall outside the routequake limits, it can load the underlying non-aggregated (per-sample) results directly — currently capped at 10,000 samples for performance.
Embed LatencyMON in your page
LatencyMON captures the whole view — measurements, time window, value mode, grouping, Min/All, and so on — in the page URL, so the tool can generate a ready-to-paste embed for the exact view you are looking at:
- Open LatencyMON for your measurement(s) at
https://atlas.ripe.net/latencymon/<measurementIds>and set up the view you want (time range, Relative/ms, Min/All, grouping, …). - Open the Share (🔗) menu in the toolbar and choose Copy embed code. This copies a complete
<iframe>snippet pointing at the/embedroute for that exact view — paste it straight into your page.
The copied snippet looks like this:
html
<iframe
src="https://atlas.ripe.net/latencymon/1791207/embed#…"
width="100%"
height="600"
style="border: 0"
></iframe>A few details:
- The whole view is carried in the URL's
#…fragment, so the embed reproduces your exact view inside the iframe — there is no need to hand-build parameters or edit the path yourself. (If you prefer a plain link to the full-page view, choose Copy link from the same menu.) <measurementIds>in the path is one or more measurement IDs joined by a hyphen (-); providing exactly two pairs them as an IPv4/IPv6 comparison (first IPv4, second IPv6).- Adjust
widthandheighton the<iframe>to suit your layout. - External embedding is only permitted on the
/embedroute. The embed view drops the page header and the fullscreen control, and embed pages are not indexed by search engines.