Free and Open-Source Self-Hosted HTML5 SpeedTest


 Contents
 1) SpeedTest for your Website or App (embed).
 2) Self-Hosted SpeedTest with Managed Database (embed).
 3) OpenSpeedTest-Server for Desktop & Mobile (Apps).
 4) OpenSpeedTest for Server (Docker Image & Source Code).
 5) New features.



1) SpeedTest for your Website or App (embed)



OPTION #1 (Speed Test from OpenSpeedTest.)


Do you need a SpeedTest for your Website Or App? You can embed OpenSpeedTest SpeedTest to your Website or App. It's free for personal and commercial use. This application is an exact copy of openspeedtest.com & this will use our premium servers to test user line speed. You are adding this application as a widget on your webpage. Instead of sending your visitors to other websites to test internet speed, you can have this application on your Website or App. Fully Managed Service from OpenSpeedTest, you don't need to worry about server or bandwidth.


Live DEMO - SpeedTest Widget
Copy Embed Code.

  

You can create a new page for this application or use it on an existing one. The application is fully responsive! You can use any width and height as per your design. Paste our Embed code on your webpage.


Start a SpeedTest Automatically?


You can start a speed test automatically by adding "?Run=10" to your widget code. "Run" is the URL parameter to start a speed test when the page loads. If you need to start a speed test after a couple of seconds, you can give a positive integer as a value for the "Run" Keyword. E.g., If I need to run a speed test after 5 seconds, I will pass "Run=5" as a URL parameter.


2) Self-Hosted SpeedTest with Managed Database (embed).


OPTION #2 (SpeedTest from your Server.)


This speed-testing application will use your Server to test download and upload speed. We store each result in our database and a dedicated reporting system showing you tests performed via your Server. With this option, you don't have to worry about app updates. The SpeedTest app will always be up to date.
Click Here to Signup & log in to the admin dashboard, and view results. (Only for OPTION #2).

The self-Hosted Widget is Free for personal and commercial use.

Openspeedtest dashboard

Live DEMO - Self-Hosted SpeedTest Widget
Copy Embed Code.


 Guide to setup Self-Hosted speed test application for your server.
  

You can create a new page for this application or use it on an existing one. The application is fully responsive! You can use any width and height as per your design. Paste our Embed code on your webpage.


Simple and Easy way! Install Docker and run the following command!


docker run --restart=unless-stopped --name openspeedtest -d -p 80:3000 -p 443:3001 openspeedtest/latest

Now Visit :- http://example.com/hosted.html or http://speedtest.example.com/hosted.html


Setup Free LetsEncrypt SSL with Automatic Certificate Renewal.

Requirements:
  - PUBLIC IPV4 and/or IPV6 address.
  - A domain name that resolves to speed test server's IP address.
  - Email ID

docker run -e ENABLE_LETSENCRYPT=True -e DOMAIN_NAME=speedtest.yourdomain.com -e USER_EMAIL=you@yourdomain.com -e VERIFY_OWNERSHIP="TXT-FILE-CONTENT" --restart=unless-stopped --name openspeedtest -d -p 80:3000 -p 443:3001 openspeedtest/latest

Or use docker-compose.yml

version: '3.3'
services:
    speedtest:
       environment:
           - ENABLE_LETSENCRYPT=True
           - DOMAIN_NAME=speedtest.yourdomain.com
           - USER_EMAIL=you@yourdomain.com
           - VERIFY_OWNERSHIP="TXT-FILE-CONTENT"
       restart: unless-stopped
       container_name: openspeedtest
       ports:
            - '80:3000'
            - '443:3001'
       image: openspeedtest/latest

If you don't want to use Docker Image, Follow the steps.

Step 1) Create a domain/subdomain for your server.

Step 2) Create index.html (or a page from the same domain) file and paste our widget code.

Step 3) Upload both files (File 1 & File 2) to your server and change the permissions to 755.

Step 4) You need to make a few changes on your server. Enable Cross-origin resource sharing with https://openspeedtest.com

Your server should accept 'GET, POST, OPTIONS' from "https://openspeedtest.com" & POST Content-Type:application/octet-stream, Content Length is dynamic. so server should accept POST content length of 35Mb or more. And turn off Gzip!

Suppose you are using this app on speedtest.example.com. The files should be accessible from speedtest.example.com/downloading & speedtest.example.com/upload. This application will look at the hostname only. So, e.g., hostname/downloading will be the correct destination for test files. Mostly it will be the root web dir of your website.

Download Nginx configuration. If you are not using Nginx, you need to make a similar configuration for your server.




OST V2 Tutorial Video

3) OpenSpeedTest-Server for Desktop and Mobile.


OPTION #3 (SpeedTest for Home/Office LAN. [LAN SPEED TEST])



Download HTML5 Network Speed Test Server [Executable File]

An application for launching HTML5 Network Speed Test Server. You can test download & upload speed from any device within your network with a web browser that is IE10 or new.

First, test your local network speed before pointing fingers towards your ISP for a slow and sluggish internet experience. Introducing Network Speed Test Server for Windows, Mac, Linux, iOS & Android. Docker Image and source code are available for large-scale headless deployments.

Download from the Microsoft Store Download from the Mac App Store Download from the App Store Download from the Google Play Store Download from the Snap Store Download from the Docker Hub Download from the Helm Store Download from GitHub
>ScreenshotScreenshot


Share this page :- 🔗 https://go.openspeedtest.com/Server

Video Tutorial


>Tutorial


OpenSpeedTest-Server is here to help you to improve your internet experience.
Important Info :

- Use the Fastest Device Available with you for Server.

- Use 5Ghz WiFi Band for Maximum Performance.

- Do not minimize this Application or run in background. When you run a speed test.

Test Your WiFi (Wireless) or Ethernet Connection (Wired Connection) and Fix your local network before pointing fingers towards your ISP for a slow and sluggish internet experience.

Are you experiencing slow internet? Endless buffering? Probably due to congested wifi channel. You may need to change your WiFi router location or adjust your router settings.

An application for launching HTML5 Network Speed Test Server. You can Conduct download/upload speed tests from any device within your network with a web browser that is IE10 or new.

Introducing Network Speed Test Server for Android, iOS, Windows, Mac & Linux!. For Headless/large-scale deployments, Docker image and Source Code are available.


How to use OpenSpeedTest Network Speed Test Server?
You need two device in between your WiFi router. Run OpenSpeedTest Server App on one device and connect directly to your router, if it's a wireless device, put it within 1.5 meters. Navigate to the URL shown from OpenSpeedTest Server App from the second device.

Why do you need to Create Your Own SpeedTest Server?
You can run OpenSpeedTest Server in your Home Lab, Office Server or Cloud Server. So that you or employees who work from home can run a speed test to your office and make sure they can run everything smoothly.

Choosing between ISP1 & ISP2.
Sometimes your ISP2 is Faster than ISP1 when you test your speed on popular speed test sites. But when you connect to your Home/Office/Cloud, that slower connection may perform better. The only way to find out is to run a speed test against your infrastructure.

Troubleshooting network issues.
It is common even when your Internet connection is working fine, but some of the devices in your network may experience trouble getting decent connectivity to the internet. The issue might be the wrong VLAN ID or Faulty Switch. If you run a Local network speed test, you can find and fix these issues easily.

Before you add a repeater.
Most repeaters will reduce your network speed by 50%, so if you put it far away, it will perform worst, and if you put it too close, you will not get enough coverage if you run a Local Network speed test. Depending on the application requirements, you can decide exactly where you need to put your repeater.

Browsing experience.
Many useful browser extensions are out there that we all know and love. But some of them are really slowing you down for few seconds per page you visit. You may see good performance when you test your network performance via File Transfer or Command-line utilities, but you may experience poor performance when browsing the internet. This is due to a bad browser configuration that including unwanted extensions installed. From my experience, only keep the one you are going to use every single day. Extension that you may use once in a while should be removed or disabled for maximum performance. If you see poor performance, try OpenSpeedTest from Private Window or Incognito Window. This tool can be used to check the browser performance and impact of Extensions on your browsing experience.

No client-side software or plugin is required. You can run a network speed test from any device with a web browser that is IE10 or new.

4) OpenSpeedTest for Server (Docker Image & Source Code).

OPTION #4 (For large-scale headless deployments.)


This option is a Fully Self-hosted (On-Premise) solution for large-scale or permanent headless deployments. A Server running in your HomeLab, Public or private cloud, can be used to install this application. Lightweight, Simple & Secure application.

A) Quick and Easy Deployment using Docker.


This is docker implementation using nginxinc/nginx-unprivileged:stable-alpine. uses significantly fewer resources. OpenSpeedTest contains Only "STATIC" Files like HTML,CSS & JS. So you don't need to worry about Security Updates or Hidden Exploits that may compromise your secure environments.


Install Docker and run the following command! [Official Docker Image]



docker run --restart=unless-stopped --name openspeedtest -d -p 3000:3000 -p 3001:3001 openspeedtest/latest


Now Visit : http://localhost:3000 or http://YOUR-IP:3000
For SSL : https://localhost:3001 or https://YOUR-IP:3001



Warning! If you run it behind a reverse proxy you should increase post body content length to 35 Megabytes or more.


Setup Free LetsEncrypt SSL with Automatic Certificate Renewal.

Requirements:
  - PUBLIC IPV4 and/or IPV6 address.
  - A domain name that resolves to speed test server's IP address.
  - Email ID

docker run -e ENABLE_LETSENCRYPT=True -e DOMAIN_NAME=speedtest.yourdomain.com -e USER_EMAIL=you@yourdomain.com --restart=unless-stopped --name openspeedtest -d -p 80:3000 -p 443:3001 openspeedtest/latest

Or use docker-compose.yml

version: '3.3'
services:
    speedtest:
       environment:
           - ENABLE_LETSENCRYPT=True
           - DOMAIN_NAME=speedtest.yourdomain.com
           - USER_EMAIL=you@yourdomain.com
       restart: unless-stopped
       container_name: openspeedtest
       ports:
            - '80:3000'
            - '443:3001'
       image: openspeedtest/latest

B) Run it Without Docker? Configure Server for OpenSpeedTest.


Download the source code and config your server. Ensure you follow the server configuration as per the Nginx-Configuration.


Download Source Code (GitHub)

Download Nginx-Server For Windows With OST Source

Tested up to 10Gbps on real NIC and up to 30Gbps on Virtual NIC. You can run a network speed test from any modern browser that is IE10 or new. This docker image contains the same application running at https://openspeedtest.com. You can put it behind a corporate firewall or run it on an environment that Is not connected to Public Network. So you can use it to test your Local Area Network or put it on your public server to test your line speed to that server.

Index.html will be used by default. (Can Run Without Internet Connection)

If you need you can use hosted.html which will only run with an Internet connection and it will save results to our database.

You can view results by registering here https://openspeedtest.com/admin



New features:

New features Video

1) Stress Test. (Continuous Speed Test)


Stress testing is for identifying overheating issues & other problems that may arrive when the system is at full load. So you can ensure stability when used in a normal environment.

You can see the results in near-real-time, So you can test and see the impact of the configuration change in your network equipment instantly, Helpful when Fixing Wi-Fi interference , change in position or orientation, proper ventilation, etc., from your devices easily.

Overheating and thermal throttling is common issues found on all network equipment and connected devices. if you run a stress test, you can simulate a busy day and see how your device will perform.

1) Download and install OpenSpeedTest-Server

2) Open the URL shown in Server App on the device you want to run the test.

3) To enable stress pass 'Stress' or 'S' keyword as a URL parameter. Also you can feed the first letter of each parameter and its values. You can pass multiple keywords and it's not CasESensitivE.

Example :

if http://192.168.1.5:3000 is the url shown in server.

You need to add "?Stress=Low" at the end of the url or "?S=L"

Now, the URL looks like this.

http://192.168.1.5:3000?Stress=Low or http://192.168.1.5:3000?S=L

Stress=Low Or S=L will run a speed test for 5 Minutes (300 Seconds) for upload and download.

Stress=Medium Or S=M will run a speed test for 10 Minutes (600 Seconds) for upload and download.

Stress=High Or S=H will run a speed test for 15 Minutes (900 Seconds) for upload and download.

Stress=VeryHigh Or S=V will run a speed test for 30 Minutes (1800 Seconds) for upload and download.

Stress=Extreme Or S=E will run a speed test for 60 Minutes (3600 Seconds) for upload and download.

Stress=Day Or S=D will run a speed test for one Day (86400 Seconds) for upload and download.

Stress=Year Or S=Y will run a speed test for one Year (31557600 Seconds) for upload and download.

or you can specify "Stress=5000" or "S=5000", This will run a speed test for 5000 Seconds, or any other number of your choice.

2) Start a Speed Test Automatically.

If you want to start the test automatically without clicking the start button, add "run" or "r" keyword as a URL parameter.

http://192.168.1.5:3000?run or http://192.168.1.5:3000?R

If you like to start the test after specific time, give the time in seconds.

Example, If i need to run a speed test after 45 seconds

http://192.168.1.5:3000?run=45

If i need to stress for 300 seconds and start a speed test without clicking the start button.

http://192.168.1.5:3000?R&S=300 or http://192.168.1.5:3000?Run&Stress=300

3) Run a Specific Test. (Download, Upload or Ping.)

Sometimes you need to run a specific test, If you need to run upload test, you can pass "Test=Upload" or "T=U" as a URL Parameter. You can test download "Test=Download" or "T=D" or ping "Test=Ping" or "T=P" like this.

4)Set the Number of ping samples by adding "Ping" or "P" as a URL Parameter

http://192.168.1.5?Ping=500 OR http://192.168.1.5?p=500

More samples means more accurate representation. Ping=500 will send 501 requests to server to find the accurate ping value.

5) Change default limit of 6 parallel http connections to Server, by adding "XHR" or "X" as a URL Parameter

http://192.168.1.5?Xhr=1 OR http://192.168.1.5?X=1

6 is the common limit found on most browser. XHR will Accept values above 1 and maximum 32

6) Select a different server to run a speed test.

http://192.168.1.5?Host=http://192.168.55.1:90 OR http://192.168.1.5?h=http://192.168.55.1:90

Pass "Host" or "H" as a URL Parameter. Accept only valid http urls like "http://192.168.1.10:3000" or "https://yourHost.com".

7) Set a PingTimeout dynamically by passing "Out" or "o" as a URL Parameter

http://192.168.1.5?Out=7000 OR http://192.168.1.5?O=7000

If Server not responded within 5 Seconds for any requests we send ('pingSamples' times) We will show Network Error, you can change the limit here. In milliseconds, if you need to set 6 seconds. Change value to 6000.

8) Disable or change Overhead Compensation factor.

http://192.168.1.5?Clean or http://192.168.1.5?C

Overhead Compensation factor, This is browser based test, Many Unknowns. Currently 4%. That is within the margin of error. You can pass "Clean" or "C" as a URL Parameter and reset Overhead Compensation factor to Zero or set any value between 0 and 4. 1 = 1% to 4 = 4%. "clean" will not accept values above 4, so Compensation is limited to maximum 4%.

Firefox is not recommended for Stress Tests above 10 Minutes or Speeds above 2.5Gbps. Browser extensions can negatively affect Latency reports and Overall performance. Try to run a speed test in incognito mode or from a browser without extensions.

Chrome, Edge, Safari, Opera, Brave etc., can run 10Gbps+ & Run continuous speed tests for hours or even days. Incognito Mode or a Browser without extensions is recommended for more accurate results.