A speedtest tool for your terminal. Fast, clean, no clutter.
$ fatest
______ ______ _
| ___|_ _|_ _|__ ___| |_
| |_ / _` || |/ _ \/ __| __|
| _| (_| || | __/\__ \ |_
|_| \__,_||_|\___||___/\__|
v2.0.0 - network speed, fast, cli
╭──────────────────────────── Menu ────────────────────────────╮
│ [1] test run a speed test │
│ [2] servers list nearby servers │
│ [3] history show past results │
│ [4] clear-history wipe stored history │
│ [5] monitor repeat testing on a loop │
│ [6] config view or set default country/server │
│ [7] help show all commands and flags │
│ [0] exit quit fatest │
╰─────────────────────────────────────────────────────────────╯
Type a number, a command name, or a full command with flags.
Examples: 2 | servers --country PL | test --json
fatest>
Launching FaTest - whether by typing fatest in a terminal or by clicking its
desktop/menu shortcut - now opens an interactive command menu instead of
immediately firing off a test. It's still a pure command-line tool: nothing to
click, no mouse required. You either type the number next to an option, the
command name itself, or a full command with its flags (e.g. servers --country PL), and FaTest runs it right there in the same window.
All the old direct subcommands still work exactly as before, so existing scripts and muscle memory aren't affected - see Usage below.
- Runs a real download/upload/ping test against a nearby server
- Shows a live gauge while it measures - actual real-time Mbps read straight off your network interface, not a fake progress bar
- Lets you pick which server or country to test against, instead of trusting auto-detect blindly
- Keeps a local history of every run (
~/.fatest_history.json) monitormode - runs on a loop, good for babysitting a flaky connection- An interactive command menu on launch, plus full direct-subcommand support for scripting
- Everything colored and readable, nothing dumped as raw text walls
git clone https://github.com/naxce/fatest
cd fatest
pip install -e .
fatestThis works the same way on Linux, macOS, and Windows - clone the repo, build
it locally, and the fatest command is on your PATH.
Clone the repo, then either drop into a dev shell (this builds fatest via default.nix and puts it straight on your PATH):
git clone https://github.com/naxce/fatest
cd fatest
nix-shell
fatestor build it standalone:
nix-build
./result/bin/fatestTo use it as a flake input or add it to your system config, package it from default.nix the way you would any other Python application in your overlays or packages.
Once fatest is built (see above), you can add it as a regular application
with an icon that opens your default terminal and launches FaTest - straight
into its interactive menu.
./packaging/linux/install-desktop-entry.shAdds a FaTest entry with an icon to your application menu (~/.local/share/applications).
Clicking it opens the default terminal for your desktop environment (GNOME, KDE, XFCE, etc.)
and launches fatest in it - exactly like any other terminal app (e.g. htop in your menu).
.\packaging\windows\install-shortcut.ps1(or just double-click packaging\windows\install-shortcut.bat)
Creates a FaTest shortcut with an icon on the Desktop and in the Start Menu.
Clicking it opens cmd.exe and immediately runs fatest in it; the window
stays open after a test finishes so you can see the result.
Requirement:
fatestmust already be built and available on yourPATH(see the Install section above).
fatest # opens the interactive command menu
fatest test # run a test directly
fatest test --json # run a test, also dump raw JSON
fatest test --no-save # run a test without saving to history
fatest test --stream # progress and result as JSON lines, for other programs
fatest history # show your last 10 results
fatest history --last 30 # show more
fatest clear-history # wipe saved history
fatest monitor # repeat every 5 minutes until you ctrl+c
fatest monitor --interval 60 # repeat every 60 seconds
fatest --versionEvery one of these also works from inside the interactive menu - just type
the part after fatest, e.g. test --json or history --last 30.
By default FaTest takes the 5 servers nearest to you from speedtest.net's current server list and uses the one that answers fastest. You can still pin a country or one server yourself:
fatest servers # list nearby servers with their IDs
fatest servers --country PL # filter to a specific country
fatest test --server 12345 # run a test against a specific server ID
fatest test --country PL # run a test against the nearest match in that countryTired of typing the flag every time? Save a default:
fatest config --country PL # always prefer Polish servers from now on
fatest config --server 12345 # or pin one exact server
fatest config --show # see current defaults
fatest config --country none # clear the defaulttest and monitor both respect the saved config. Any --country or --server flag on the command line replaces the whole saved default for that one run, so --country DE is not overridden by a saved server. A saved server that is no longer nearby falls back to the best nearby one with a warning.
Most terminal speedtest wrappers either look like they're stuck in 2009 or dump ten lines of unreadable text at you. This one tries to actually be pleasant to look at while doing the same job.
- Python 3.8 or newer
rich,speedtest-cli, andpsutil(installed automatically as dependencies)
MIT - see LICENSE.