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 hiztestibrew 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 |
| 1 | General error |
| 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 feed our ISP and infrastructure reports, exactly like web tests. Published open datasets are always aggregated so that they do not identify anyone.
- The CLI never uses your device's location permission; your location is estimated from your IP address at city and region level only. Precise coordinates are never collected.
- As with our web tests, your IP address is stored with the test record on access-restricted systems for security and service quality. It never appears on your result page or in open datasets, and partner reports show it only in shortened form (for example 95.6.X.X).
- We also record the app version, your operating system, your interface language, and whether the test was started by hand or by a scheduled job.
- Once a day the CLI checks whether a newer version is available. The check sends only the app version, operating system and CPU architecture; there is no identifier and your IP address is never written to these counts. Set the HIZTESTI_NO_UPDATE_CHECK=1 environment variable to turn the check off entirely.