gitmyhub

speedtest

JavaScript ★ 15k updated 20d ago

Self-hosted Speed Test for HTML5 and more. Easy setup, examples, configurable, mobile friendly. Supports PHP, Node, Multiple servers, and more

Self-hosted internet speed test that runs in a browser using XHR and Web Workers, measuring download, upload, ping, and jitter. Installs on Apache or nginx with PHP and an optional database for history.

JavaScriptPHPDockerMySQLsetup: moderatecomplexity 2/5

LibreSpeed is a self-hosted internet speed test that runs in a web browser. Most people know speed tests as the websites that show how fast their download and upload connection is. LibreSpeed is the code behind one of those websites, packaged so that anyone can put it on their own web server. The README points to librespeed.org as a public demo.

The test is written in JavaScript and uses standard browser features called XMLHttpRequest and Web Workers, with no Flash, Java, or WebSocket dependency. It works in modern desktop and mobile browsers including IE11, Edge, Chrome, Firefox, and Safari. The measurements it can show are download speed, upload speed, ping, jitter, and optionally the visitor's IP address, internet provider, and distance from the test server. There are also optional features for storing results, sharing them, and testing against multiple server locations.

To install LibreSpeed you need a web server such as Apache, nginx, or IIS, PHP 5.4 or newer, and optionally a database like MariaDB, MySQL, SQL Server, PostgreSQL, or SQLite to keep test history. The README lists the files to copy into the web root, including index.html, the speedtest scripts, the backend folder, and the frontend assets for the modern UI. A short walkthrough video for Debian 12 is linked, and a Docker image is published and rebuilt weekly to keep the ISP database and PHP patches current.

Around the main project there is an Android template, a command line client, a .NET client library, and alternative server implementations in Go and Rust, each in its own repository. The project is by Federico Dossena and released under the GNU Lesser General Public License.

Where it fits