This browser No samples yet No data
Client —
Best—closest to true path delay
p50—typical request
p95—the unlucky one in twenty
Jitter—swing between samples
Loss—none sent
Sent0requests issued
STUN—UDP floor, no TLS

Round trip over time

Samples

# Time Target RTT Phases Status

Nothing measured yet. Enter one or more websites and press Start.

Analyze a ping log

Drop a file anywhere on this page, choose one, or paste the output. It is read in this tab and never uploaded.

  • Linux iputils, with or without -D / -O
  • BusyBox routers, Alpine, containers
  • macOS / BSD
  • Windows ping and ping -t, in any language
  • PowerShell Test-Connection
  • CSV exported from this tool

Timestamps added by a wrapper are understood too — ts, $(date), Get-Date, ISO dates. Without one, times are estimated from the sequence number.

How this log was read

What this actually measures

A browser cannot send ICMP. No web API exposes raw sockets, so the ping command's actual protocol is unavailable to any web page. Each sample here is a real HTTPS request to the target — cache and credentials off, aborted at the timeout — and the figure is how long it took.

Does it agree with the ping command?

Mostly yes, and where it does not the reason is knowable. Measured on one machine, one network, the same minute:

HostICMP min / avgThis tool
carino.systems40.6 / 42.2 ms43 msagrees
github.com96.3 / 98.4 ms102 msagrees
cloudflare.com4.9 / 7.0 ms34 ms5×
www.cloudflare.com4.9 / 7.0 ms22 msbetter

The first two match ICMP to within a few percent. The third does not, and the measurement is not at fault: cloudflare.com/favicon.ico answers 301 and redirects to www.cloudflare.com. The browser follows it, so every probe pays a second request to a second host — a fresh DNS lookup, TCP handshake and TLS handshake on the first one, and an extra round trip on every one after. Probing the final URL directly cuts it from 34 ms to 22 ms.

So why is mine still higher than the terminal?

Cross-checks on the same screen

Downlink not measured Interface not published Reported — Public host not measured

STUN is a single UDP exchange with no TLS and no server-side work — the closest a browser gets to a raw round trip. It is the floor: what a target reads above it is protocol and application overhead, not distance. Downlink is measured before the run and never during it, because a saturated link has a full queue and a full queue adds delay to everything behind it.

The STUN exchange is the one probe that leaves for a host you did not name. It runs when you press Start or Test, never on page load, and it goes to . It returns your public address as a side effect — that is what a server-reflexive candidate is.

Why it cannot name your network interface

There is no web API for it, and that is deliberate rather than missing. Chrome and Firefox replace WebRTC host candidates with a random <uuid>.local name precisely so a page cannot enumerate the network it is on. navigator.connection.type is the nearest thing and only Chromium on Android and ChromeOS populates it; on desktop it is undefined, and Firefox and Safari do not ship the API at all. The Interface field reads not published rather than guessing from the effective type.

Reading a saved log

Log file mode reads output the ping command already wrote — real ICMP round trips, taken by whatever machine ran it. The file is read in this tab and never uploaded. Linux, BusyBox, macOS, Windows in any language, PowerShell Test-Connection and this tool's own CSV are recognised automatically, as are timestamps added by ts, $(date) or Get-Date. Files saved by cmd in an OEM code page or by PowerShell in UTF-16 are decoded correctly.

Other things worth knowing

IP addresses. A few answer — 8.8.8.8, 1.1.1.1 and 9.9.9.9 serve HTTPS with certificates valid for the address — but you are timing their web server, not the address's reachability. Most others have no HTTPS listener and come back unreachable, which says nothing about whether the host is up.

A 404 is a perfectly good round trip and is timed like any other reply, so the probe path does not have to exist. Some targets will log 404s in devtools; the measurement is unaffected.

Loss is counted, not hidden. A probe that times out or never connects increments loss and breaks the chart line, and a target that fails every request reads 100% loss rather than showing an empty graph.

Everything stays in this tab: targets and the client identifier are kept in this browser's local storage, samples exist only in memory until you export them, and no result is sent anywhere. The requests themselves obviously do reach the hosts you name.