Grade the network before usersfeel it.
A terminal rig that measures latency, jitter, loaded overhead, DNS, TLS, packet loss, and every hop between you and the edge. Not a speed number. The actual shape of the connection.
cloudflare-speed-tui --json --traceroute --compare-ip-versions
A score that punishes unstable links.
Bandwidth is only part of the story. The grade weights the moments that make calls stutter, games spike, deploys hang, and dashboards feel slow.
When loaded latency is not available, the overhead weight is reassigned to latency, producing a 50 / 25 / 25 / 0 split.
Every hop, mapped and timed.
TTL-exceeded ICMP probes walk the route to the edge one router at a time. When a page feels slow and throughput looks fine, the answer is usually sitting in this list.
Nine probes, each with a job.
The engine separates baseline speed from loaded behavior, transport setup, resolver cost, packet loss, route shape, and IP stack differences.
| # | Measurement | Description | Engine module | Status |
|---|---|---|---|---|
| 01 | Idle Latency | Mean, median, P25/P75 RTT, jitter, and loss to the Cloudflare edge with no competing traffic | latency.rs | measured |
| 02 | Loaded Latency | RTT during active download/upload, the bufferbloat tell | latency.rs | measured |
| 03 | Download Throughput | Multi-stream parallel download averaged across sampled segments | throughput.rs | measured |
| 04 | Upload Throughput | Parallel upload with independent sampling windows | throughput.rs | measured |
| 05 | UDP Packet Loss | Burst probes through Cloudflare TURN endpoint, counting lost and reordered packets | turn_udp.rs | measured |
| 06 | DNS Resolution | System-resolver timing for the configured speed-test hostname, with resolved addresses and DNS servers | dns.rs | measured |
| 07 | TLS Handshake | TLS handshake time in isolation after TCP connects, with negotiated protocol and cipher suite | tls.rs | measured |
| 08 | ICMP Traceroute | TTL-exceeded probes mapping the path to Cloudflare edge per hop | traceroute.rs | raw socket |
| 09 | IPv4 vs IPv6 | Side-by-side latency and throughput over both stacks | ip_comparison.rs | informational |
| No probes match that filter. Try latency, TLS, DNS, or throughput. | ||||
"timestamp_utc": "2026-06-29T14:22:07Z", "base_url": "https://speed.cloudflare.com", "idle_latency": { "median_ms": 12.4, "jitter_ms": 1.8, "loss": 0.0 }, "download": { "mbps": 943.0 }, "upload": { "mbps": 821.0 }, "dns": { "resolution_time_ms": 4.2 }, "tls": { "handshake_time_ms": 38.0, "protocol_version": "TLSv1_3" }, "ip_comparison": { "ipv4_result": { "latency_ms": 12.4 }, "ipv6_result": { "latency_ms": 11.9 } }
Run it once. Know what broke.
cloudflare-speed-tui is a private Rust/Ratatui project I'm building for fast, no-nonsense network diagnosis, straight from the terminal.