Why the discrepancy between Speedtest and Wget?

Solution 1:

In addition to the other reasons posted, TCP connections don't work well with large files when the bandwidth-delay product becomes large.

Like on an otherwise fast connection to an island.

See Wikipedia's entry on TCP tuning.

So Speedtest can dump a small file through the connection at 95 mb/sec, but wget can only get 10 mb/sec on a 20 MB file.

Solution 2:

ISPs often prioritize traffic to speedtest.net so that they can brag how fast their connections are, while in reality, they don't provide that much bandwidth. They're perfectly aware that most users will only check that site for confirmation.

You also have to keep in mind that transfer speed relies both on the client and the server. In today's world most servers throttle in one way or another.

Finally, it's pointless to expect stable bandwidth for overseas connections. There's just no such thing. It has to go through an infinite number of switches, fibers, datacenters to reach the final location. And all it takes is just one moving part to slow down.

Solution 3:

wget give good practical measure of the speed. The tests of Speedtest probably include kind of parallelism which can explain higher numbers.

For good average speed test I think the time for download should be at least 90-120 seconds (to get good average)

Solution 4:

One reason could be that often the maximum speed cannot be reached by just a single TCP connection.

Speedtest.net recently introduced a single connection mode. Try this and see if it makes a difference.

Then, for the download use for example aria2 with parameters to use multiple conections and compare. e.g. aria2c -d /dev -o null --allow-overwrite=true --file-allocation=none --max-connection-per-server=8 --min-split-size=1M http://aserv.example.net/~myuser/links/M77232917.txt