Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.


GitHub Actions Build Status GitHub last commit GitHub

This project is an extension of LibreSpeed, LibreSpeed is a pretty lightweight speedtest tool.

speedtest-x uses file datebase to save speedtest results from various users. Thus you can check out different results from various countries/regions.


Join Telegram group

Warning:Based on the principle of web speedtest, this program will generate garbage files for tester to download them to calculate the downstream network bandwidth from server to local. There may be abuses by malicious tester in a certain extent, after shared your speedtest website in public, please pay attention to the condition of your server traffic to avoid an traffic overload.

Features and extensions

  • Self-hosted lightweight speedtest page
  • User speedtest result datasheet
  • No MySQL, but lightweight file database
  • Use to get IP info by default

Quick start

Deploy by Docker (Supported platforms: AMD64/ARM64)

  1. Pull Image docker pull badapple9/speedtest-x
  2. Run container docker run -d -p 9001:80 -it badapple9/speedtest-x

Optional arguments:

-e MAX_LOG_COUNT=100: Maximum results size, 100 by default

-e IP info provider (Options: /, by default

-e SAME_IP_MULTI_LOGS=false: Whether to allow the same user IP to record multiple speedtest results, false by default.

If you want support IPV6 in a Docker container, edit /etc/docker/daemon.json:

  "ipv6": true,
  "fixed-cidr-v6": "fd00::/80",
  "experimental": true,
  "ip6tables": true
  1. Open {your_ip}:9001

General deploy (Require: PHP5.6+)

  1. Download repository files and unzip to website directory, open {your_domain_name}/index.html.
  2. Open {your_domain_name}/results.html to check out speedtest result datasheet.



MAX_LOG_COUNT = 100:Maximum results size, 100 by default

IP_SERVICE = '':IP info provider (Options: /, by default

SAME_IP_MULTI_LOGS = false:Whether to allow the same user IP to record multiple speedtest results, false by default.


index results

See also



See License