Winload
A lightweight, real-time CLI tool for monitoring network bandwidth and traffic, inspired by Linux's nload.
๐ English ๐ ็ฎไฝไธญๆ(ๅคง้) ๐ ็น้ซไธญๆ(ๅฐ็ฃ) ๐ ๆฅๆฌ่ช ๐ ํ๊ตญ์ด
๐ Introduction
Winload brings an intuitive, visual network monitor to the modern terminal. It started as a Windows-focused tool to fill the nload gap, and now targets Linux and macOS as well.
๐ Acknowledgements
Winload is inspired by the classic nload project by Roland Riegel. Many thanks for the original idea and experience. https://github.com/rolandriegel/nload
โจ Key Features
- Dual implementations
- Rust edition: fast, memory-safe, single static binaryโgreat for everyday monitoring.
- Python edition: easy to hack and extend for prototyping or integrations.
- Cross-platform: Windows, Linux, and macOS (x64 & ARM64).
- Real-time visualization: live incoming/outgoing graphs and throughput stats.
- Minimal UI: clean TUI that mirrors nload's ergonomics.
๐ฅ Python Edition Installation
๐ก Implementation Note: Only PyPI and source code from GitHub/Gitee provide Python edition.
All package managers (Scoop, AUR, npm, APT, RPM) distribute Rust binaries only.
Python (pip)
๐ฅ Rust Edition Installation (recommended)
npm (cross-platform)
# or use npx directly
Includes 6 precompiled binaries for x86_64 & ARM64 across Windows, Linux, and macOS.
Windows (Scoop)
scoop bucket add vincentzyu https://github.com/VincentZyuApps/scoop-bucket
scoop install winload
Arch Linux (AUR):
Linux (one-liner)
Supports Debian/Ubuntu and derivatives โ Linux Mint, Pop!_OS, Deepin, UOS, etc. (apt)
Supports Fedora/RHEL and derivatives โ Rocky Linux, AlmaLinux, CentOS Stream, etc. (dnf)
|
DEB (Debian/Ubuntu):
# Download the latest .deb from GitHub Releases
# or use apt (auto-resolves dependencies)
RPM (Fedora/RHEL):
Or download binaries directly from GitHub Releases.
โจ๏ธ Usage
Options
| Flag | Description | Default |
|---|---|---|
-t, --interval <MS> |
Refresh interval in milliseconds | 500 |
-a, --average <SEC> |
Average calculation window in seconds | 300 |
-d, --device <NAME> |
Default device name (partial match) | โ |
-e, --emoji |
Enable emoji decorations in TUI ๐ | off |
-U, --unicode |
Use Unicode block characters for graph (โโโยท) | off |
-u, --unit <UNIT> |
Display unit: bit or byte |
bit |
-b, --bar-style <STYLE> |
Bar style: fill, color, or plain |
fill |
--in-color <HEX> |
Incoming graph color, hex RGB (e.g. 0x00d7ff) |
cyan |
--out-color <HEX> |
Outgoing graph color, hex RGB (e.g. 0xffaf00) |
gold |
-m, --max <VALUE> |
Fixed Y-axis max (e.g. 10M, 1G, 500K) |
auto |
-n, --no-graph |
Hide graph, show stats only | off |
--hide-separator |
Hide the separator line (row of equals signs) | off |
--no-color |
Disable all TUI colors (monochrome mode) | off |
--npcap |
[Windows Rust Only] Capture loopback traffic via Npcap (recommended) | off |
--debug-info |
[Rust Only] Print network interface debug info and exit | โ |
-h, --help |
Print help (--help --emoji for emoji version!) |
โ |
-V, --version |
[Rust Only] Print version | โ |
Keyboard Shortcuts
| Key | Action |
|---|---|
โ / โ or โ / โ |
Switch network device |
= |
Toggle separator line visibility |
c |
Toggle color on/off |
q / Esc |
Quit |
๐ช Windows Loopback (127.0.0.1)
Windows cannot report loopback traffic through standard APIs โ this is a functional deficiency in Windows' network stack.
To capture loopback traffic on Windows, use the --npcap flag:
This requires Npcap installed with "Support loopback traffic capture" enabled during setup.
I previously tried polling Windows' own
GetIfEntryAPI directly, but the counters are always 0 for loopback โ there is simply no NDIS driver behind the loopback pseudo-interface to count anything. That code path has been removed.
๐ For a deep dive into why Windows loopback is broken, see docs/win_loopback.md
On Linux and macOS, loopback traffic works out of the box โ no extra flags needed.
๐ผ๏ธ Previews
Python Edition Preview

Rust Edition Preview
