Fork Notice: This project is a fork of MaddyDev-glitch/iperf3-webui and is now maintained independently. It includes additional features, Docker improvements, and UI enhancements not found in the upstream repository.
iPerf3-WebUI is a modern, lightweight, web-based frontend for iPerf3, built using Python 3 and Flask.
Run network speed tests easily from any device — macOS, Linux, Windows, or even Android phones (via Termux).
- Web-based GUI — Works in any browser
- Lightweight & Fast — Built with Flask and Python 3
- Live Speedometer — Real-time results visualization
- Upload / Download / Bidir modes — Including bidirectional testing
- Cross-platform — Works on desktops, laptops, and mobile
- Configurable display — Choose between a speedometer gauge, numeric counter, or let users toggle between both via
display_modeinenv.yaml - Customizable — Streams, units (Kbits/Mbits/Gbits), target IP, logos, themes via
env.yaml - Docker-ready — Pre-built GHCR image and GitHub Actions CI/CD pipeline
services:
iperf3-webui:
image: ghcr.io/r0gger/iperf3-webui
container_name: iperf3-webui
restart: unless-stopped
ports:
- ${PORT:-5000}:${PORT:-5000}
volumes:
- ./env.yaml:/app/env.yaml
environment:
- PORT=${PORT:-5000}docker compose up -dOr run via the Docker CLI:
docker run -d -it --name iperf3-webui -p 5000:5000 -e PORT=5000 -v ./env.yaml:/app/env.yaml ghcr.io/r0gger/iperf3-webuiAccess the Web UI at http://localhost:5000.
git clone https://github.com/r0gger/iperf3-webui.git
cd iperf3-webuidocker compose up --build -dThe app will be available at http://localhost:5000.
By default the app runs on port 5000. To use a different port, set the PORT environment variable:
Option A — inline when starting:
PORT=8080 docker compose up -d --buildOption B — create a .env file next to docker-compose.yml:
PORT=8080Then run docker compose up -d as usual.
Docker CLI:
docker run -d -it --name iperf3-webui -p 8080:8080 -e PORT=8080 -v ./env.yaml:/app/env.yaml ghcr.io/r0gger/iperf3-webui- Enter the Target IP Address you want to test against.
- Choose between TCP or UDP.
- Select Upload, Download, or Bidir mode.
- Set streams and units if needed.
- Click Run iPerf3 and watch live results.
Easily change the app's look and behavior by editing env.yaml — no code changes required.
- Open
env.yaml. - Update values under
logosandthemefor your colors, speedometer gradients, and logos. - Save and reload the browser tab.
Control how Upload/Download test results are displayed by setting display_mode in env.yaml:
| Value | Description |
|---|---|
gauge |
Speedometer gauge (default) |
counter |
Numeric counter (FAST.com style) |
both |
User can toggle between gauge and counter in the UI |
Bidir mode always uses the counter display regardless of this setting.
display_mode: "gauge" # Options: gauge | counter | bothiPerf3-WebUI is a parser and wrapper around the official iperf3 client. It runs iperf3 as a background process, captures its command-line output in real time, and parses the results to present them in a modern, easy-to-use web interface.
Think of it as a lightweight bridge — combining the raw power of iperf3 with a clean, accessible UI for anyone to run network performance tests without touching the terminal.
No changes to iperf3 itself — just smarter, friendlier access to its results.
See CHANGELOG.md for a detailed list of changes.
This project is licensed under the MIT License.
Feel free to use, modify, and distribute, but please give proper credit.
For more details, see the LICENSE file.
Originally developed by MaddyDev-glitch (Srimadhaven Thirumurthy).
Fork maintained by R0GGER.
