HTTPing probes an HTTP or HTTPS endpoint and reports response latency.
Download an archive or run an installer from the latest GitHub Release.
On macOS or Linux:
curl --proto '=https' --tlsv1.2 -LsSf \
https://github.com/stianfro/httping/releases/download/v0.2.0/httping-installer.sh | shOn Windows PowerShell:
powershell -ExecutionPolicy Bypass -c "irm https://github.com/stianfro/httping/releases/download/v0.2.0/httping-installer.ps1 | iex"The installer puts httping in $CARGO_HOME/bin, or in
$HOME/.cargo/bin when CARGO_HOME is not set. It tries to update the
shell startup files automatically. Restart the shell after installation.
If httping --version still reports that the command is not found, run the
command for your shell once to add the default install directory permanently.
For Bash:
printf '\nexport PATH="$HOME/.cargo/bin:$PATH"\n' >> "$HOME/.bashrc"
source "$HOME/.bashrc"For Zsh:
printf '\nexport PATH="$HOME/.cargo/bin:$PATH"\n' >> "$HOME/.zshrc"
source "$HOME/.zshrc"For Fish:
fish_add_path --universal "$HOME/.cargo/bin"If CARGO_HOME points to another directory, use $CARGO_HOME/bin instead.
The PowerShell installer updates the user PATH. Open a new PowerShell window
after it finishes.
❯ httping --help
Ping an HTTP endpoint and report response latency
Usage: httping [OPTIONS] <URL>
httping [OPTIONS] [URL] <COMMAND>
Commands:
serve Show live probe statistics in a local web dashboard
help Print this message or the help of the given subcommand(s)
Arguments:
<URL> HTTP or HTTPS URL to probe
Options:
-c, --count <COUNT> Number of probes to send. By default, probes continue until Ctrl-C
-i, --interval <DURATION> Minimum time between probe starts [default: 1s]
-t, --timeout <DURATION> Maximum time for DNS setup and for each probe [default: 10s]
--otlp Export OpenTelemetry metrics over OTLP HTTP/protobuf
--target-name <NAME> Stable target name for exported metrics
-h, --help Print help
-V, --version Print versionDurations accept values such as 250ms, 1s, and 2m.
Start the local dashboard for a target:
$ httping serve https://example.com
HTTPing https://example.com/
resolved: 93.184.216.34:443
dashboard: http://127.0.0.1:52143/HTTPing selects a free local port and opens the dashboard in the default
browser. The dashboard shows live summary cards, a latency chart, and recent
probe results. It binds only to 127.0.0.1.
Use --no-open to keep the browser closed, --port to select a fixed port,
and --history to set the number of recent results kept in memory:
httping serve --no-open --port 8080 --history 500 https://example.comThe server stays in the foreground until Ctrl-C. Run it through a shell job, systemd, or a container when it must continue in the background.
Metric export is off by default. Enable OTLP HTTP/protobuf export with --otlp:
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 \
httping --otlp --target-name public-api https://example.com/healthYou can also enable it with OTEL_METRICS_EXPORTER=otlp. Setting only an
endpoint does not enable export. Standard OTLP variables configure the metrics
endpoint, headers, timeout, compression, export interval, temporality, service
name, and resource attributes. HTTPing rejects gRPC and HTTP/JSON protocols.
HTTPing exports the standard http.client.request.duration histogram and the
httping.probe.attempts, httping.probe.responses, and
httping.probe.transport_errors counters. The default target name contains the
scheme, host, effective port, and path. It never contains URL user information
or query values.
Dashboard and metric export can run together:
httping serve --otlp --no-open https://example.com/healthA Kubernetes container can enable export without changing its arguments:
args: ["--interval", "10s", "https://example.com/health"]
env:
- name: OTEL_METRICS_EXPORTER
value: otlp
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: http://otel-collector:4318
- name: OTEL_SERVICE_NAME
value: httping-public-apiBackground export errors are written to stderr and do not stop probing. A finite run exits with status 1 when its final metric flush fails. Ctrl-C still prints the probe summary and exits with status 0.
$ httping --count 2 https://example.com
HTTPing https://example.com/
resolved: 93.184.216.34:443
2026-07-28T12:00:00.000Z 200 OK 124ms
2026-07-28T12:00:01.000Z 200 OK 42ms
--- httping statistics ---
attempts: 2, responses: 2, loss: 0.0%
time: min 42ms, avg 83ms, max 124msHTTPing starts the first probe immediately. It continues after request errors. A finite run exits with status 1 if any probe fails. Pressing Ctrl-C prints the summary and exits with status 0.
