Skip to content

Pure HTML5 Network Performance Estimation Tool. OpenSpeedTest use XMLHttpRequest (XHR), HTML, CSS, JS, & SVG For this network performance estimation tool. I started this project in 2011 and moved to OpenSpeedTest.com dedicated Project/Domain Name in 2013.

License

openspeedtest/Speed-Test

main
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

OpenSpeedTest™️ - Pure HTML5 Network Performance Estimation Tool.

Hi! I'm Vishnu the one who developed OpenSpeedTest™️. OpenSpeedTest use XMLHttpRequest (XHR), HTML, CSS, JS, & SVG For this network performance estimation tool. I started this project in 2011 and moved to OpenSpeedTest.com dedicated Project/Domain Name in 2013.

Download OpenSpeedTest-Server V2.1 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

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.

Why OpenSpeedTest?

Secure by Design.

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.

Lightweight, High Performance.

OpenSpeedTest is written in Pure JavaScript. No Third-Party frameworks or libraries were used. SpeedTest script file size is under 8kB gzip. The unexpected side effect of using Pure JavaScript is High Performance.

Run a speed test from Any Device.

OpenSpeedTest will run on Any Web Browser that is IE10 or new.

Ready for Any Display Size and Resolution.

OpenSpeedTest User interface is written in SVG.

Create Your Own SpeedTest Server.

Server Requirements :

Nginx, Apache, IIS, Express, or Any Web server that supports HTTP/1.1.

  • Accept, GET, POST, HEAD & OPTIONS, Response 200 OK.

  • Accept, POST to Static Files, Response 200 OK.

  • Timeout greater than 60 seconds.

  • Disable Access logs for Increasing server performance.

  • Improve Time to First Byte (TTFB)

  • Follow our Nginx Config.

Or, You can use OpenSpeedTest-Server.

OpenSpeedTest-Server is available for Windows, Mac, Linux, Android, iOS & Docker. Download OpenSpeedTest-Server V2.1

Fully Optimized and ready to use applications.

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

New features:

  1. Stress Test. (Continuous Speed Test)

To enable stress pass 'Stress' or 'S' keyword as a URL parameter.


http://192.168.1.5?stress=low

After stress keyword you should give a value, number of seconds or preset values such as "low", "medium" ,"high" ,"veryhigh" ,"extreme", "day", "year". Will run a speed test for 300,600,900,1800,3600,86400,31557600 seconds respectively. Also you can feed the first letter of each parameter and its values.


http://192.168.1.5?s=l

s=l is same as passing Stress=low

Or you can specify eg:5000 directly without any preset keywords.


http://192.168.1.5?stress=5000

  1. Start a Speedtest Automatically.

Starts a speed test automatically.


http://192.168.1.5?run

Start a speed test automatically after few seconds.


http://192.168.1.5?run=10 or http://192.168.1.5?r=10

You can pass multiple keywords and it's not casesensitive.


http://192.168.1.5?run&stress=300 OR http://192.168.1.5?R&S=300

This will start a speed test immediately and run for 300 seconds in each direction. That is 300 seconds for download and 300 seconds for upload.

  1. Save results to a Database

Edit Index.html


var saveData = true;

var saveDataURL = "//yourDatabase.Server.com:4500/save?data=";

  1. Add multiple servers (Choose one with least latency automatically)

Edit Index.html


var openSpeedTestServerList = [

{"ServerName":"Home-Earth", "Download":"/downloading", "Upload":"/upload", "ServerIcon":"DefaultIcon"},

{"ServerName":"Home-Mars", "Download":"/downloading", "Upload":"/upload", "ServerIcon":"DefaultIcon"},

{"ServerName":"Home-Moon", "Download":"/downloading", "Upload":"/upload", "ServerIcon":"DefaultIcon"}

];

  1. Disable or change Overhead Compensation factor.

http://192.168.1.5?clean

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%.

  1. Change default limit of 6 parallel http connections to Server

http://192.168.1.5?XHR=3 OR http://192.168.1.5?X=3

Allow user to Change default limit of 6 parallel http connections to Server | Accept values above 1 and max 32

pass "XHR" or "X" as a URL Parameter.

  1. Select 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".

  1. Select and run one test at a time, download, upload or ping.

http://192.168.1.5?Test=upload OR http://192.168.1.5?t=u

Allow user to select and run one test at a time, download, upload or ping

Pass "Test" or "T" as a URL Parameter.

  1. 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.

  1. 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 = more accurate representation. Ping = 500 will send 501 requests to server to find the accurate ping value. Take a look at index.html, you can set a custom ping sample size, threads, upload data size etc.

Self-hosted (On-Premise) / (Docker Image/Source Code)

For Headless large-scale deployments.

You have two options here. If you need a custom deployment, use our source code along with a web server of your choice. I prefer Nginx, and you can find my Nginx Configuration here. Or you can use our docker image. You can deploy it on your LAN/WAN with or without an active internet connection.

This is docker implementation using nginxinc/nginx-unprivileged:stable-alpine. uses significantly fewer resources.

Docker install instructions:

Install Docker and run the following command!

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

Now open your browser and direct it to:

A: For HTTP use: http://YOUR-SERVER-IP:3000

B: For HTTPS use: https://YOUR-SERVER-IP:3001

Container-Port for http is 3000

If you need to run this image on a different port for http, Eg: change to 5000 = -p 5000:3000

Container-Port for https is 3001

If you need to run this image on a different port for https, Eg: change to 6000 = -p 6000:3001

How to use your own SSL Certificate?

You can mount a folder with your own SSL certificate to this docker container by adding the following line to the above command.

-v /${PATH-TO-YOUR-OWN-SSL-CERTIFICATE}:/etc/ssl/

The folder needs to contain:

  • nginx.crt

  • nginx.key

I am adding a folder with nginx.crt and nginx.key from my desktop by using the following command.

sudo docker run -v /Users/vishnu/Desktop/docker/:/etc/ssl/ --restart=unless-stopped --name openspeedtest -d -p 3000:3000 -p 3001:3001 openspeedtest/latest

Docker images run better on Linux Platforms, including your NAS. But if you install docker on macOS or Windows, you may see poor performance. I asked this on Docker forums, and they told me macOS and Windows support is for Development purposes only. For Production, you need to use any Linux Platform.

The same Story goes for Windows NGINX. Nginx uses only one worker even if you specify n number of worker processes. They will show in Task Manager, but the system will only use one. I got this information directly from the Nginx website.

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.

©Copyright 2013-2022 by OpenSpeedTest.com. All Rights Reserved.

Share — copy and redistribute the material in any medium or format for any purpose, even commercially.

Read full license terms @ http://go.openspeedtest.com/License

Like this Project? Please Donate NOW & Keep us Alive -> https://go.openspeedtest.com/Donate

Official Website : https://OpenSpeedTest.COM | Email: support@openspeedtest.com

Developed by : Vishnu | https://Vishnu.Pro | Email : me@vishnu.pro

If you have any Questions, ideas or Comments Please Send it via -> https://go.openspeedtest.com/SendMessage

About

Pure HTML5 Network Performance Estimation Tool. OpenSpeedTest use XMLHttpRequest (XHR), HTML, CSS, JS, & SVG For this network performance estimation tool. I started this project in 2011 and moved to OpenSpeedTest.com dedicated Project/Domain Name in 2013.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published