Skip to content
⚡ Test and graph your internet bandwidth over time
Python HTML JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE Initial commit Aug 15, 2019 Make README more beginner friendly Jan 8, 2020
graphexample.png Update example image Aug 19, 2019

⚡ Bandwidth Checker ⚡

My blog post: I Built a Bot to Try and Get Money Back From My Internet Provider

preview image


Some ISPs promise money back if your bandwidth goes below a certain level.

This project includes two automated methods of testing download speed.

  • Speedtest's CLI.
  • Headless Chromium browser via Netflix's

A Node server displays a scatter graph of the recent bandwidth results via Chart.js.

I run my own setup on a Raspberry Pi connected to my router via ethernet.




cd client

pip install requests

and one of the following

Speedtest CLI:

pip install speedtest-cli

Headless browser:

pip install selenium


cd server

npm install




Setup a cron job to run either version.

Speedtest CLI:

cd client
python 'https://server-location/save' 'password'

Where the arguments are:

  • Path to the endpoint to save the results.
  • Password for that endpoint.

Headless browser:

python '/usr/lib/chromium-browser/chromedriver' 'https://server-location/save' 'password'

Where the arguments are:

  • Path to the ChromeDriver executable (watch out for version clashes).
  • Path to the endpoint to save the results.
  • Password for that endpoint.


Setup password, and port (default: 3000):

Unix Bash (Linux, Mac, etc.):
$ export SECRET=hello
$ export PORT=3000

Windows CMD:
> set SECRET=hello
> set PORT=3000

Windows PowerShell:
> $env:SECRET = "hello"
> $env:PORT = "3000"
cd server
npm start

Visit the root path / to view bandwidth results.

Bandwidth results are stored by the client via /save



Feel free to raise any issues and submit any reasonable pull requests.



MIT (see

You can’t perform that action at this time.