pingb : Bandwidth Measuring Ping

pingb lets you determine the bandwidth between your computer and any other computer that responds to plain old pings (ICMP echo).

Normally, to determine the speed of a connection you have to run something like iperf at point A and point B. Of course that of often impossible. Firewalls and security will often not allow for you to interact with the remote system in a way that you can use a tool like iperf.

You can run pingb locally and get the bandwidth available to you - even to systems that you have no access to



ICMP echo only gives latency, not speed, how does this work?

pingb sends 2 pings in quick succession. 1st ping is as tiny as possible. 2nd ping is as big as possible. I do the math on the difference in lacency to get an estimate of speed measured in Kbps

Why is it that pingb works great for some IPs but gives nonsense bandwidth readings for others?

For pingb to function the target IP has to respond to pings > 1500 bytes (preferrably > 10000 bytes)

Why does pingb give me an accurate reading when testing a symmetric connection, but inaccurate result for a-symmetric connections?

pingb can't distinguish between latency getting to the target vs the latency getting back. For that reason, it can't distinguish between upload speed and download speed. The best it can do is make an educated estimate based on the download to upload ratio of your connection. For example, if your ADSL connection is 20 Mbs down and 2 Mbs UP, that is a ratio of 10. With that information, pingb will try to estimate what your actual upload and download bandwidth is.

.NET Version for Windows (GPL)

Download version 0.2 Windows portable binary or source

No install necessary (portable version). Requires .NET framework 3.5

This may also work under Mono framework


Version 0.2 : Automatic gateway discovery. Numerous bug fixes.

Linux Shell Version (GPL)

Download version 0.1.1 executable shell script (source)


1) cd /usr/sbin (or /usr/local/sbin)

2) wget

3) chmod 755 pingb

4) pingb

Should also work in many *nix environments that has a /bin/sh and ping command


Version 0.1.1: Tweaked to work with OpenBSD and systems that have /bin/sh but no /bin/bash Version 0.1.0: Removed requirement for bc command. pingb now uses AWK (more common) instead. Fixed bug related to maximum ping size detection.