explaingit

librespeed/speedtest

Analysis updated 2026-06-24

14,692JavaScriptAudience · ops devopsComplexity · 2/5LicenseSetup · moderate

TLDR

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.

Mindmap

mindmap
  root((librespeed))
    Inputs
      Browser visit
      Server config
    Outputs
      Download speed
      Upload speed
      Ping and jitter
      Stored history
    Use Cases
      ISP internal speedtest
      Home network probe
      Multi-server comparison
      Embedded status page
    Tech Stack
      JavaScript
      PHP
      Docker
      MySQL
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Host an internal speed test page for an ISP or office network

USE CASE 2

Run a Docker container that exposes a private speedtest endpoint on a LAN

USE CASE 3

Embed a small download and upload check into a status or monitoring dashboard

USE CASE 4

Compare multiple server locations from one branded test page

What is it built with?

JavaScriptPHPDockerMySQL

How does it compare?

librespeed/speedtestautomerge/automerge-classicbrowserify/browserify
Stars14,69214,70514,718
LanguageJavaScriptJavaScriptJavaScript
Setup difficultymoderateeasyeasy
Complexity2/54/52/5
Audienceops devopsdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Needs a working PHP web server, and accurate results require enough bandwidth on the host since the test pulls real bytes through it.

LGPL license: you can use and ship it, including in closed source apps, but changes to the library itself must be shared back under the same license.

In plain English

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.

Copy-paste prompts

Prompt 1
Deploy LibreSpeed with the official Docker image behind an nginx reverse proxy with TLS
Prompt 2
Configure LibreSpeed to log every test into a MariaDB database and query the last 7 days
Prompt 3
Customise the LibreSpeed frontend to show only download and ping for an embedded widget
Prompt 4
Add a second LibreSpeed backend server in another region and let users pick which to test against
Prompt 5
Run LibreSpeed on Apache with PHP 8 on Debian 12 following the linked walkthrough video

Frequently asked questions

What is speedtest?

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.

What language is speedtest written in?

Mainly JavaScript. The stack also includes JavaScript, PHP, Docker.

What license does speedtest use?

LGPL license: you can use and ship it, including in closed source apps, but changes to the library itself must be shared back under the same license.

How hard is speedtest to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is speedtest for?

Mainly ops devops.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.