LibreSpeed | Lightweight SpeedTest Implemented In Javascript Using XML Http Request And Web Workers

LibreSpeed

No Flash, No Java, No Websocket, No Bullshit.

This is a very lightweight speed test implemented in Javascript, using XML Http Request and Web Workers.

Try it

Take a speed test

Compatibility

All modern browsers are supported: IE11, latest Edge, latest Chrome, latest Firefox, latest Safari. Works with mobile versions too.

Features

  • Download
  • Upload
  • Ping
  • Jitter
  • IP Address, ISP, distance from server (optional)
  • Telemetry (optional)
  • Results sharing (optional)
  • Multiple Points of Test (optional)

Screenrecording of a running Speedtest

Server requirements

  • A reasonably fast web server with Apache 2 (nginx, IIS also supported)
  • PHP 5.4 or newer (other backends also available)
  • MySQL database to store test results (optional, Microsoft SQL Server, PostgreSQL and SQLite also supported)
  • A fast! internet connection

Installation

Assuming you have PHP installed, the installation steps are quite simple. I set this up on a QNAP. For this example, I am using a folder called speedtest in my web share area.

  1. Choose one of the example-xxx.html files in examples folder as your index.html if the default index.html does not fit.
  2. Add: speedtest.js, speedtest_worker.js, and favicon.ico to your speedtest folder.
  3. Download all of the backend folder into speedtest/backend.
  4. Download all of the results folder into speedtest/results.
  5. Be sure your permissions allow execute (755).
  6. Visit YOURSITE/speedtest/index.html and voila!

Installation Video

There is a more in-depth installation video here:

Android app

A template to build an Android client for your LibreSpeed installation is available here.

CLI client

A command line client is available here.

Docker

A docker image is available on GitHub, check our docker documentation for more info about it.

Go backend

A Go implementation is available in the speedtest-go repo, maintained by Maddie Zhan.

Rust backend

A Rust implementation is available in the speedtest-rust repo, maintained by Sudo Dios.

Node.js backend

A partial Node.js implementation is available in the node branch, developed by dunklesToast. It’s not recommended to use at the moment.

License

Copyright (C) 2016-2022 Federico Dossena

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see https://www.gnu.org/licenses/lgpl.

GitHub:

6 Likes