An enhanced ping utility written in Go using the prometheus-community/pro-bing library.
- Timestamps so you don't have to watch the clock
- RTT color-coding to highlight latency and jitter
- Time deltas between responses so you don't have to do math
Installation requires the following general steps:
- Downloading a binary from releases matching your OS and arch.
- Marking the binary as executable.
- Optionally, moving the binary to a location in your system's PATH.
You can install the latest version using the Quickstart commands below.
Linux Quickstart
Run the following in a terminal:
curl -Lo /tmp/pbing https://github.com/bcbrookman/pbing/releases/latest/download/pbing_$(uname -s)_$(uname -m) sudo chmod +x /tmp/pbing sudo mv /tmp/pbing /usr/local/bin/pbing pbing -hWindows Quickstart
Run the following in PowerShell as an Administrator:
New-Item -Path "$env:ProgramFiles\pbing" -ItemType Directory -Force $arch = [Environment]::GetEnvironmentVariable("PROCESSOR_ARCHITECTURE", [EnvironmentVariableTarget]::Machine) switch ($arch) { "ARM64" { $arch = "arm64" } default { $arch = "x86_64" } } Invoke-WebRequest ` -Uri "https://github.com/bcbrookman/pbing/releases/latest/download/pbing_Windows_$arch.exe" ` -OutFile "$env:ProgramFiles\pbing\pbing.exe" [Environment]::SetEnvironmentVariable("Path", $env:Path + ";$env:ProgramFiles\pbing", [EnvironmentVariableTarget]::Machine) pbing -hImportant
- On Linux, it may be necessary to set
sysctl -w net.ipv4.ping_group_range="0 2147483647"to allow "unprivileged" pings via UDP. - On Windows,
-privilegedis required and enabled by default. Accessing TTL values is also not supported due to low-level package limitations. - MacOS is not officially supported by the pro-bing library.
- For more information, see pro-bing's supported operating systems.
Use pbing as you would ping.
$ pbing -h Usage: pbing [options] <destination> Options: <destination> dns name or ip address to ping -h, -help print this help message -I interface interface name to source pings from -Q tclass QoS tclass (DSCP + ECN bits) as a decimal number (default 192) -T time maximum time to ping before exiting (default 27h46m40s) -V version print version and exit -c count maximum count of pings before exiting (default -1) -i interval time interval between pings (default 1s) -privileged enable privileged mode to send raw ICMP rather than UDP -s size payload size in bytes (default 24) -t TTL time to live (TTL) value (default 64) Examples: pbing example.com # ping continuously pbing -c 5 example.com # ping 5 times pbing -c 5 -i 500ms example.com # ping 5 times at 500ms intervals pbing -T 10s example.com # ping for 10 seconds pbing -I eth0 example.com # ping from a specific interface pbing -privileged example.com # ping using raw ICMP pings pbing -s 100 example.com # ping with 100-byte payloads pbing -Q 128 example.com # ping with DSCP CS4 and ECN 0 $ pbing github.com PING github.com (X.X.X.X): 2025-04-13 20:50:39 (Δ0.0s): 32 bytes from X.X.X.X: icmp_seq=0 time=42.479811ms ttl=52 2025-04-13 20:50:40 (Δ1.0s): 32 bytes from X.X.X.X: icmp_seq=1 time=43.59449ms ttl=52 2025-04-13 20:50:41 (Δ1.0s): 32 bytes from X.X.X.X: icmp_seq=2 time=41.741389ms ttl=52 2025-04-13 20:50:42 (Δ1.0s): 32 bytes from X.X.X.X: icmp_seq=3 time=42.7836ms ttl=52 2025-04-13 20:50:43 (Δ1.0s): 32 bytes from X.X.X.X: icmp_seq=4 time=41.19848ms ttl=52 2025-04-13 20:50:44 (Δ1.0s): 32 bytes from X.X.X.X: icmp_seq=5 time=40.197365ms ttl=52 2025-04-13 20:50:45 (Δ1.0s): 32 bytes from X.X.X.X: icmp_seq=6 time=41.741094ms ttl=52 2025-04-13 20:50:46 (Δ1.0s): 32 bytes from X.X.X.X: icmp_seq=7 time=39.466592ms ttl=52 2025-04-13 20:50:47 (Δ1.0s): 32 bytes from X.X.X.X: icmp_seq=8 time=42.702654ms ttl=52 2025-04-13 20:50:48 (Δ1.0s): 32 bytes from X.X.X.X: icmp_seq=9 time=40.856067ms ttl=52 2025-04-13 20:50:49 (Δ1.0s): 32 bytes from X.X.X.X: icmp_seq=10 time=42.968379ms ttl=52 2025-04-13 20:50:50 (Δ1.0s): 32 bytes from X.X.X.X: icmp_seq=11 time=43.368166ms ttl=52 2025-04-13 20:50:51 (Δ1.0s): 32 bytes from X.X.X.X: icmp_seq=12 time=43.300946ms ttl=52 ^C --- github.com ping statistics --- 13 packets transmitted, 13 packets received, 0 duplicates, 0% packet loss round-trip min/avg/max/stddev = 39.466592ms/42.030695ms/43.59449ms/1.244149ms