Nessuna descrizione

sstidl 32defb4fb4 Merge pull request #832 from BKPepe/fix/results-image-timestamp 19 ore fa
.github 4142a915a6 chore(deps): bump actions/stale from 10 to 11 1 settimana fa
.logo 8be8aba5ed Fixed typo in results/index.php 5 anni fa
backend 8f0323c4a7 update geoip phar and db 3 mesi fa
docker 8b5b4eb1b8 fix: point the modern frontend at the assets where they actually live 2 giorni fa
examples 03d62a0ca1 fix: add aria-label to startStopBtn for screen reader accessibility (#785) 4 mesi fa
frontend 8b5b4eb1b8 fix: point the modern frontend at the assets where they actually live 2 giorni fa
images 3b25d9e33a feat: add installable PWA metadata 3 settimane fa
results c136cd4cfe fix: format the timestamp drawn on the result image 2 giorni fa
tests bdc1521e14 test(e2e): verify static modern frontend assets 1 giorno fa
.eslintrc.json 3a7dc31ff2 Implement the new design from #649 (#694) 4 mesi fa
.gitignore 21d3fb0260 ci: use npm ci and track package-lock for reproducible e2e 4 mesi fa
.prettierignore cb265a2d91 add eslinter, update github actions (stale issues, dependabot), optimize docker image (#728) 8 mesi fa
.prettierrc.json 3a7dc31ff2 Implement the new design from #649 (#694) 4 mesi fa
DESIGN_SWITCH.md 35f63c988a docs: align Docker design layout guidance 1 giorno fa
DEVELOPMENT.md cb265a2d91 add eslinter, update github actions (stale issues, dependabot), optimize docker image (#728) 8 mesi fa
Dockerfile 8b5b4eb1b8 fix: point the modern frontend at the assets where they actually live 2 giorni fa
Dockerfile.alpine 54179567ac test(e2e): cover Alpine modern frontend settings 1 giorno fa
LICENSE 8be8aba5ed Fixed typo in results/index.php 5 anni fa
README.md 8b5b4eb1b8 fix: point the modern frontend at the assets where they actually live 2 giorni fa
config.json 3a7dc31ff2 Implement the new design from #649 (#694) 4 mesi fa
design-switch.js 3a7dc31ff2 Implement the new design from #649 (#694) 4 mesi fa
doc.md 8b5b4eb1b8 fix: point the modern frontend at the assets where they actually live 2 giorni fa
doc_docker.md b4eeb5c260 Fix typos in documentation and a code comment 2 mesi fa
favicon.ico 8be8aba5ed Fixed typo in results/index.php 5 anni fa
index-classic.html 3b25d9e33a feat: add installable PWA metadata 3 settimane fa
index-modern.html 8b5b4eb1b8 fix: point the modern frontend at the assets where they actually live 2 giorni fa
index.html 3b25d9e33a feat: add installable PWA metadata 3 settimane fa
manifest.webmanifest 3b25d9e33a feat: add installable PWA metadata 3 settimane fa
package-lock.json 18e254ff49 Merge pull request #826 from librespeed/dependabot/npm_and_yarn/minimatch-3.1.5 2 settimane fa
package.json 16e8440dff chore(release): prepare v6.2.0 2 settimane fa
playwright.config.js bdc1521e14 test(e2e): verify static modern frontend assets 1 giorno fa
server-list.json 8b5b4eb1b8 fix: point the modern frontend at the assets where they actually live 2 giorni fa
settings.json 8b5b4eb1b8 fix: point the modern frontend at the assets where they actually live 2 giorni fa
speedtest.js 16e8440dff chore(release): prepare v6.2.0 2 settimane fa
speedtest_worker.js 397308de03 fix upload race: use captured x in onload, remove upload.onload restart 2 settimane fa
stability.html 320b908864 Add stability feature Playwright coverage, fix Server selection start race 2 mesi fa
stability_worker.js 7a995280a2 Fix stability test server list and timeouts 2 mesi fa

README.md

LibreSpeed Logo

LibreSpeed

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

This is a very lightweight speed test implemented in Javascript, using XMLHttpRequest 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)
  • Connection stability test with latency charting, loss tracking, threshold alerts, and CSV export

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)
  • MariaDB or MySQL database to store test results (optional, Microsoft SQL Server, PostgreSQL and SQLite also supported)
  • A fast! internet connection

Installation

Assuming you have PHP and a web server installed, the installation steps are quite simple.

  1. Download the source code and extract it
  2. Copy the project files to your web server's shared folder (ie. /var/www/html/speedtest for Apache), keeping the layout as it is in the repository. The modern UI loads its assets from frontend/, so that directory is copied as a whole rather than unpacked.
  3. Optionally, copy the results folder too, and set up the database using the config file in it.
  4. Be sure your permissions allow read and execute access where needed.
  5. Visit YOURSITE/speedtest/index.html and voila!

Installation Video

This video shows the installation process of a standalone LibreSpeed server: Quick start installation guide for Debian 12

More videos will be added later.

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.

.NET client

A .NET client library is available in the LibreSpeed.NET repo (NuGet), maintained by MemphiZ.

Development

If you want to contribute or develop with LibreSpeed, see DEVELOPMENT.md for information about using npm for development tasks, linting, and formatting.

Design switch

LibreSpeed supports both the classic and modern UI. The root index.html acts as a lightweight switcher and redirects to index-classic.html or index-modern.html based on config.json (useNewDesign) or URL overrides (?design=new / ?design=old). For architecture and deployment details (including Docker behavior), see DESIGN_SWITCH.md.

Stability test

LibreSpeed includes a standalone connection stability test at stability.html, linked from both the classic and modern interfaces. It repeatedly measures ping over a selected duration and reports current, average, minimum, maximum, jitter, and failed request percentage values with a live chart.

The stability test can target the local LibreSpeed backend, one of the configured multiple points of test, or built-in external targets such as Google, Cloudflare, and Apple. It also supports optional latency threshold alerts and CSV export of the collected samples. Docker deployments copy stability.html and stability_worker.js into the web root and reuse the same server list configuration as the main UI.

Docker

A docker image is available on GitHub, check our docker documentation for more info about it. The image is built every week to include an updated version of the ipinfo-DB used for ISP detection. Also this ensures, that the latest security patches in PHP are installed. Therefore we recommend to use the latest image.

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.

Donate

Donate with Liberapay Donate with PayPal

License

Copyright (C) 2016-2024 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.