Skip to content

xdearboy/speedra

Repository files navigation

speedra

npm version CI Node.js License: MIT

A beautiful, modern TUI-based CLI tool for network speed testing using iperf3. Test your connection against multiple servers with real-time progress, geolocation-aware server ranking, and Catppuccin Mocha visuals.

                         _
                        | |
 ___ _ __   ___  ___  __| |_ __ __ _
/ __| '_ \ / _ \/ _ \/ _` | '__/ _` |
\__ \ |_) |  __/  __/ (_| | | | (_| |
|___/ .__/ \___|\___|\__,_|_|  \__,_|
    | |
    |_|

 v1.0.0  β€” network speed test

πŸ“ Amsterdam, NL

Available Servers
────────────────────────────────────────────────
β—‰ ⭐ πŸ‡©πŸ‡ͺ Frankfurt Β· Frankfurt am Main, Germany
    213.165.53.248:5201  ●●●  312 km  42 ms  AS207567 Intezio
β—‹    πŸ‡ͺπŸ‡ͺ Tallinn Β· Tallinn, Estonia
    138.124.100.47:5201  ●●●  450 km  61 ms  AS207567 Intezio
β—‹    πŸ‡³πŸ‡± Netherlands Β· Eygelshoven, Netherlands
    138.124.105.21:5201  ●●○  890 km  38 ms  AS207567 Intezio
β—‹    πŸ‡΅πŸ‡± Warsaw Β· Warsaw, Poland
    95.85.254.73:5201    ●●●  520 km  55 ms  AS207567 Intezio

↑↓ Navigate Β· Space Select Β· Enter Start Β· n Nearest Β· Esc Cancel Β· r Reset Β· q Quit

Installation

Linux x64 (run now, no install)

bash <(curl -fsSL https://raw.githubusercontent.com/xdearboy/speedra/main/scripts/run-linux.sh)

To pass flags, use this form instead:

curl -fsSL https://raw.githubusercontent.com/xdearboy/speedra/main/scripts/run-linux.sh | bash -s -- --nearest
curl -fsSL https://raw.githubusercontent.com/xdearboy/speedra/main/scripts/run-linux.sh | bash -s -- --nearest-asn

Linux x64 (install one command)

bash <(curl -fsSL https://raw.githubusercontent.com/xdearboy/speedra/main/scripts/install.sh)

Via npm (requires Node.js β‰₯ 18)

npm install -g speedra

Or run without installing:

npx speedra

Standalone binary (no Node.js required)

Download the binary from GitHub Releases:

Platform File
Linux x64 speedra-linux-x64

Note: right now CI builds only Linux x64 binary due current GitHub runner/workflow limitations.

Make it executable (Linux):

chmod +x speedra-linux-x64
./speedra-linux-x64

iperf3

speedra requires iperf3. If it's not installed, speedra will offer to install it automatically on first run:

  βœ—  iperf3 is not installed or not found in PATH.

  Install iperf3 automatically? [Y/n]

Press Enter and speedra will detect your package manager and install iperf3 for you.

Supported package managers: brew, port, apt-get, dnf, yum, pacman, apk, zypper, winget, choco, scoop.

To install manually:

# macOS
brew install iperf3

# Ubuntu / Debian
sudo apt-get install iperf3

# Fedora / RHEL
sudo dnf install iperf3

# Arch Linux
sudo pacman -S iperf3

# Windows (winget)
winget install ESnet.iperf3

Usage

speedra           # launch TUI
speedra --version # print version
speedra -v        # same
speedra --nearest # auto-start nearest server test
speedra --nearest-asn          # auto-start nearest server in your own ASN (fallback to nearest)
speedra --nearest-asn as207567 # auto-start nearest server matching a specific ASN

Workflow

  1. Launch β€” speedra detects your location and ranks servers by distance + latency
  2. Select β€” navigate with ↑↓, toggle with Space
  3. Test β€” press Enter or n to instantly test the nearest server
  4. Results β€” color-coded download/upload speeds, latency, ASN info

Keyboard shortcuts

Key Action
↑ / ↓ Navigate server list
Space Toggle server selection
Enter Start tests for selected servers
n Select nearest server and start immediately
Esc Cancel running test
r Reset results
q Quit

Features

  • Auto-install iperf3 β€” detects your package manager and installs on first run
  • Server availability check β€” offline servers are marked βœ— offline and cannot be selected
  • Geolocation ranking β€” servers sorted by combined distance + ping score
  • Real-time progress β€” animated bar, live bandwidth, sparkline trend
  • Color-coded results β€” green β‰₯100 Mbits/s, yellow β‰₯10, red <10
  • Distance indicators β€” ●●● < 500 km, ●●○ 500–2000 km, ●○○ > 2000 km
  • Standalone binaries β€” no Node.js required, download and run

Test servers

27 servers across Europe, Russia, and the US β€” sorted by distance + latency automatically.

Europe

Name IP Port Location ASN
Frankfurt 213.165.53.248 5201 Germany AS207567 Intezio
Tallinn 138.124.100.47 5201 Estonia AS207567 Intezio
Netherlands 138.124.105.21 5201 Netherlands AS207567 Intezio
Warsaw 95.85.254.73 5201 Poland AS207567 Intezio
Frankfurt (play2go) 94.156.114.3 5201 Germany AS215439 PLAY2GO
Kerkrade (play2go) 144.31.30.177 5201 Netherlands AS215439 PLAY2GO
Amsterdam (Datacamp) 185.102.218.1 5201 Netherlands AS60068 Datacamp
Frankfurt (Clouvider) 91.199.118.184 5200 Germany AS62240 Clouvider
Rotterdam (Worldstream) 185.182.195.76 5201 Netherlands AS49981 WorldStream
Dronten (Serverius) 5.178.66.18 5002 Netherlands AS50673 Serverius
Paris (Scaleway) 51.158.1.21 5201 France AS12876 Scaleway

United States

Name IP Port Location ASN
San Jose (Hurricane Electric) 216.218.207.42 5201 California AS6939 Hurricane Electric

Russia

Name IP Port Location ASN
Moscow (MTS) 212.188.4.173 3333 Moscow AS8359 MTS
Krasnodar (MTS) 212.188.4.231 3333 Krasnodar AS8359 MTS
Yakutsk (MTS) 212.188.4.239 3333 Yakutsk AS8359 MTS
Moscow (Hostkey) 31.192.104.200 5201 Moscow AS50867 Hostkey
Saint Petersburg (Ertelecom) 109.195.80.230 5201 Saint Petersburg AS51570 ER-Telecom
Yekaterinburg (Ertelecom) 109.195.96.230 5201 Yekaterinburg AS51604 ER-Telecom
Novosibirsk (Ertelecom) 109.194.80.230 5201 Novosibirsk AS43478 ER-Telecom
Kazan (Ertelecom) 109.194.176.230 5201 Kazan AS41668 ER-Telecom
Rostov-on-Don (Ertelecom) 109.195.224.230 5201 Rostov-on-Don AS57378 ER-Telecom
Irkutsk (Ertelecom) 109.194.16.230 5201 Irkutsk AS51645 ER-Telecom
Krasnoyarsk (Ertelecom) 109.195.64.230 5201 Krasnoyarsk AS50544 ER-Telecom
Perm (Ertelecom) 212.33.230.200 5201 Perm AS12768 ER-Telecom
Ufa (Ertelecom) 109.195.144.230 5201 Ufa AS51035 ER-Telecom
Samara (Ertelecom) 85.113.62.252 5201 Samara AS34533 ER-Telecom
Nizhny Novgorod (Ertelecom) 91.144.184.231 5201 Nizhny Novgorod AS42682 ER-Telecom

All tests use 8 parallel TCP streams (-P 8) for accurate throughput measurement.

Requirements

  • Node.js 18+ (npm install) or no requirements (standalone binary)
  • iperf3 β€” auto-installed on first run if missing
  • Terminal: 80Γ—24 minimum

Troubleshooting

speedra: command not found after global install:

npm bin -g   # find the bin directory
# add it to PATH in ~/.bashrc or ~/.zshrc
export PATH="$(npm bin -g):$PATH"

Connection refused / test fails:

  • Check firewall allows outbound TCP on port 5201
  • Verify server is reachable: iperf3 -c 213.165.53.248 -p 5201

Terminal looks garbled after crash:

reset

License

MIT

About

Terminal-first network speed testing CLI with real-time metrics, smart server selection, and ASN-aware routing insights.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors