How to to automate WAN speed tests

Is there a way/tool to automate testing WAN speed at predefined intervals? For example a Windows program/Service that every 15 minutes attempts a download of a large file and measures max speed for every WAN?

I do this with the Command Line Interface:
GitHub - sivel/speedtest-cli: Command line interface for testing internet bandwidth using

I have a script that runs the speedtest on a regular interval that then dumps the output and a timestamp to a CSV for later review.

The Output from this Python script looks like this:

I have also used loggger which is a open-source speedtest logger and will do what you want. You have to give it a URL to test files to download. I use these from thinkbroadband as I’m in the UK.

Jack Dinns Auto Speed Tester is also worth a look. prettier than logger but not always successful when running tests (at least for me - I get servers down for maintenance quite frequently).


Great stuff Martin! How do you cope forcing a WAN? We have 3 and I would like to test them all at regular intervals, however the script would be run from the same computer…

Ah. that would be trickier. I am normally testing speedfusion bonded throughput when I’m running tests…

If the PC is dedicated to the role of speedtests you could set up three separate additional vlans on the peplink with outbound policies set for each vlan to enforced by source subnet so that it just uses a single WAN.

Then run a powershell script as the master script for this test which iterates the local NIC VLAN through each of the test VLANS you have configured, running a seperate speedtest each time.

PS C:> Set-NetAdapter –Name “Ethernet 1” -VlanID 10
[Run Speedtest]
PS C:> Set-NetAdapter –Name “Ethernet 1” -VlanID 11
[Run Speedtest]
PS C:> Set-NetAdapter –Name “Ethernet 1” -VlanID 12
[Run Speedtest]

1 Like

Thanks Martin, your idea is great, but the host is a server and shouldn’t
change IP address nor the subnet…

Add another NIC just for testing. You could leave the services bound to the current NIC so that the are unaffected during tests.

Or do it with a cheap single board computer like raspberry PI instead.

1 Like

Now that we discuss this, I realise that the server has a secondary unused
NIC that I could use. I have to ensure that no traffic will hit that NIC as
for protection from VLANs traffic.

We have default LAN on (where the server resides), VLAN ID 100
on and VLAN ID 200 on Each (v)LAN uses a different
WAN (we have 3 WANs).

Performing your suggested test using secondary NIC would expose the server
to other VLANs (restricted by design) at least for the test duration…

Your thoughts?

Just add three more vlans to the peplink (eg 201,202,203) that are only ever used by NIC #2 on the server. Turn off inter VLAN routing for the three new VLANS so they are isolated from each other and the rest of your production network and only have internet access.


Fantastic Martin, this would not allow risky traffic from other VLANS!!!
Great tips, as always, thanks!

1 Like