A few months ago I setup a Raspberrypi to run speed tests at regular intervals. The speed tests run hourly, first to the nearest server and then to a random server. Through out the month of January 2018 this resulted in 1,431 speed tests. Each record consists of the timestamp when the speed test ended, information about the server (city, IP address, fully qualified domain name, site), and upload and download speeds. I also attached site metadata (metro, country, longitude, and latitude).
The map below shows the download speed to the server in each city. The point fills correspond to download speeds (slower speeds are darker). Download speeds are fastest from servers located in North American cities, with mixed results throughout Europe. The slowest downloads were from servers in Africa, Asia, and Australia. Surprisingly there are no NDT servers in Central or South America (not even Brazil or Argentia).
The scatterplot shows the median download and upload speeds for each city. There are two clusters: the first are cities with low median download and upload speeds and the second are cities with median download speeds above 50 Mbps and upload speeds above 10 Mbps.
Of the cities, Chicago has the fastest median speeds (and is also the closest geographically) followed closely by Winnipeg and Washington DC. Vancouver and Toronto are interesting in that they don’t fit in either of the two natural clusters.
The chart below shows a histogram of the download speeds from the Chicago server. The bins are closed right and aligned with the left axis label — so the first bin shows the download speed was less than 5 Mbps 21.1% of the time. The download speeds are bimodal, meaning my Internet is either pretty fast or totally unusable. This plot highlights one of the problems with looking at just the median — there can be a substantial amount of variation. Even though the median download speed was 87.17 Mbps there were many times my speed was much slower — 26.2% of the time my download speed was less than 25 Mbps!