Measure your server's connection from the command line
HIZTESTI CLI measures download, upload, latency and connection quality without a browser. It reports in JSON, CSV or Prometheus format.
HIZTESTI CLI by NETMETRIK Server: ALASTYR · İzmir (id: 1) ISP: Türk Telekom (95.6.X.X) Latency: 14.32 ms (jitter: 1.08 ms) Download: 94.6 Mbps (data used: 118.3 MB) 21.47 ms (jitter: 2.31 ms) Upload: 19.4 Mbps (data used: 24.6 MB) 24.85 ms (jitter: 3.02 ms) RPM: 847 (responsiveness)Bufferbloat: 7 ms Result: hiztesti.com/result/x7k2q9What it is for
To measure a server's connection you have to measure it from that machine. A browser test only tells you about the connection of the desktop you are sitting at; it says nothing about the line in your data centre. HIZTESTI CLI fills that gap: one command on the machine you are already connected to over SSH, and a result you can feed straight into other tools.
What it measures
The same measurement engine as the web interface: five metrics, one command.
Download / Upload
Data transferred per second (Mbps)
Latency (ping)
Round-trip time, with jitter, low and high values
Loaded latency
Latency while the line is saturated — this is what decides video calls and gaming
Bufferbloat
How much latency swells once the line fills up
RPM
RFC 9097 responsiveness: round trips per minute under load
The measurement method is the same as the hiztesti.com web interface and has been published academically. Measuring the same line from the browser and the command line should give you comparable figures.
Install
Pick your package manager; new versions arrive through your usual update flow.
brew tap netmetrik/hiztesti
brew update
brew install hiztesti
# to uninstall
brew uninstall hiztesti
brew untap netmetrik/hiztestiInstalling via Homebrew keeps you on the latest version; updates arrive through `brew upgrade`. The same commands work with Homebrew on Linux.
Download
Prebuilt binaries are published on GitHub with every release, together with sha256 checksums.
Usage
hiztesti # measure and display
hiztesti -L # server list (id · city · country · capacity)
hiztesti -s 2 # measure against a specific server by id
hiztesti --simple # latency, download and upload only
hiztesti --no-share # do not submit the result, no link
hiztesti --help # all optionsServer selection is automatic by default: candidates are measured and the most suitable one is chosen. To pick one yourself, list them with `-L` and pass its id to `-s`. Ids are stable; server names can change.
Using it with monitoring systems
The CLI can report in machine-readable formats. Prometheus output can be written straight into node_exporter's textfile collector; in continuous mode it measures at the interval you set and appends one JSON record per line.
# node_exporter textfile collector (from cron)
hiztesti -f prometheus > /var/lib/node_exporter/hiztesti.prom
# continuous mode — every 15 minutes, one JSON record per line
hiztesti --interval 900 -f jsonl >> /var/log/hiztesti.jsonlWhen a measurement fails the Prometheus output does not stay silent: it reports `up=0` along with the reason. Otherwise the collector would keep reading the previous file and your dashboard would show everything as fine.
Each phase ends early once the measurement settles, which cuts data usage noticeably for an agent that runs on a schedule. Use `--full-duration` when you need fixed-length phases.
Exit codes
Exit codes are separated so that scripts can tell "no network" apart from "server is slow".
| Code | Meaning |
|---|---|
| 0 | Success |
| 2 | Usage error |
| 3 | Network unreachable |
| 4 | Download failed |
| 5 | Upload failed |
| 6 | Timeout |
| 130 | Interrupted |
Privacy
- When a test finishes the result is saved to a shareable page and you get a link. Run with --no-share to opt out.
- Command-line measurements are excluded from consumer statistics, ISP reports and published datasets.
- The CLI sends no location data.