What Is It?
speedtest is a program I wrote to keep track of the effectiveness of my
modem. There was a perception that speed was lacking for all users but
little hard data backing it up other than random tests done at various
of the day and night, usually using different speed testing sites each
(PC Pit Stop, DSLReports, etc). Since other users of my ISP have
interest I've decided to release this program under the GPL.
I had originally planned to load the speed data into Excel and make a
little graph that I could send my ISP. I soon found out that the values
so widely between tests that the data was zig-zagging all over the
and it was difficult to see what was going on. Since I was really more
in overall speed, I wrote a little script to compute the average speeds
(ala ping with min/avg/max).
What Do I Need?
You'll need to get NSPR (Netscape Portable Runtime) from
. I used the Linux debug (DBG) version of v4.5 Beta. Any 4.x version
work just fine too. You need this whether you use my binary or build
Because this was written using mostly NSPR calls it should work on any
OS and almost certainly any *nix variant. I haven't tested this at all
a Win32 system but in theory it should work, though you'll need to
write your own Makefile or get gmake.exe and use that. Win32 users will
need to get a Bourne or Korn shell executable to run the shell scripts.
What Sites Does it Hit?
I current hit the following test sites 4 times a day:
Here are some additional sites I found 11/06/2003:
There are some values hardcoded into speedtest.cpp. Some of these sites
may no longer work so you will need to update it. It should be fairly
obvious how to do so.
I haven't asked permission to use their sites in this way and I'd guess
if a lot of folks started hitting them frequently they would get very
It is really easy to determine the URL of the image that is being
from the non-Java test sites, so you can always figure your own out or
the same ones I do, either way.
How Does it Work?
Most speed test sites start the timer when the HTTP request is sent. My
starts the timer when I try to read the first bit of non-HTTP header
This means that the times won't match up nicely and my program will
frequently return higher speeds than the web-based speed testers.
Where Can I Get it?
You can download it here
What Other Features are Planned?
I don't plan on working on this a whole lot more. I want to be able to
an average by the times that I run the test (8am, 12noon, 4pm and 8pm)
see the speed variances by time of day, but that is about it.
The shell scripts I wrote are ugly and Perl would work a lot more
but since I only deal with a weeks worth of data at a time bash works
great. If you want to rewrite them then by all means, go for it :-)
If you find any bugs please feel free to contact me at