project hobby
speedBuffy
Zero-install network speed test in pure shell
speedBuffy is a network speed test you run with a single curl-pipe-bash. No install, no account, no Electron app phoning home. It measures latency, download, and upload throughput using tools that are already on your machine — ping, curl, grep, awk — then prints the results straight to your terminal. Perfect for the “is it the Wi-Fi or is it me” moments on a fresh server or someone else’s laptop.
The one-liner
curl -fsSL https://raw.githubusercontent.com/aichohan/speedBuffy/main/speedbuffy.sh | bash
The story
It started, as these things do, with a slow SSH session and a browser-based speed test I couldn’t run because the box was headless. The classic speed-test sites all want a browser; the CLI options all want an install step. On a machine you’ll touch once, neither is worth it.
The realization: everything a speed test actually does — ping something, pull some bytes, push some bytes, divide by the clock — can be done with tools every Unix box already carries. So the whole thing collapsed into a shell script you can pull and run in one line.
How it works
No compiled binary, no daemon, nothing to install — just bash driving the tools already on the box:
- Latency: a burst of pings (Google DNS at 8.8.8.8 by default; you can pick another target), with the average, jitter, and packet loss parsed straight out of ping’s own summary line.
- Download throughput: curl pulls a test payload from Cloudflare’s speed endpoint — 100MB by default, with a 30-second cap — fetched as ten ranged chunks when the server supports it, so you get a real progress bar even over SSH. Speed is bytes over wall-clock time; no magic.
- Upload throughput: curl POSTs a temp file (a tenth of the download size) to an echo server and times that too.
- Output: a compact terminal report you can read at a glance over a laggy SSH session — or
--jsonwhen a script is the one asking.
The ranged-chunk trick is the heart of the download test:
curl -s -m "$cap" -r "$start_byte-$end_byte" "$server" -o /dev/null
It’s about 1,300 lines of bash — longer than you’d guess, but most of that is the ASCII dashboard, the interactive server menus, and papering over the ways ping and curl differ from system to system. Still one file, still plain shell, and you should absolutely read it before piping it into bash. That advice applies to every one-liner on the internet, this one included.
The name
It’s named after Buffy, my Mini Aussie × Golden Doodle: also extremely fast, also requires zero installation, also shows up instantly when called. The dog remains the reference implementation.