A free, open-source NetLimiter-style bandwidth monitor and limiter for Windows, written in Rust. It shows live per-process download/upload rates and lets you cap or block any process's network traffic, with no license nags and no telemetry.
Throttle watches every network flow on your machine, attributes it to the owning process, and optionally shapes it:
- Live monitoring: per-process download and upload rates, totals, and active flow counts, refreshed about once a second.
- Per-process limits: cap a process's download and/or upload speed (for example, hold a game updater to 2 MB/s).
- Blocking: drop all traffic for a process entirely.
- Persistent rules: rules are matched by executable path, so they survive restarts and re-apply automatically when the process launches again.
Traffic interception uses WinDivert, a signed, well-established user-mode packet-diversion driver, so Throttle does not need its own kernel driver.
Throttle.video.demo.mp4
- Native GUI (egui/eframe): sortable process table, total-traffic graph, and a per-process history sparkline.
- Humanized rates and totals (B/s, KB/s, MB/s, GB/s, base 1024).
- Right-click any process to set a download limit, set an upload limit, block, unblock, or remove its rule.
- Rate editor uses a number field plus a unit dropdown (B/s, KB/s, MB/s, GB/s).
- Runs as a single elevated process; engine and GUI communicate over channels.
Prebuilt Windows binaries are available on the
Releases page.
Grab the latest Throttle-vX.Y.Z-windows-x64.zip, extract it anywhere, and run
throttle.exe. The WinDivert driver files are included in the zip, so no extra
setup is needed. Windows will show a UAC prompt because the app needs
administrator rights (see below).
You need a recent stable Rust toolchain (2024 edition) and the WinDivert files
vendored in this repo under vendor/WinDivert-2.2.2-A/x64.
# From the repository root:
cargo build --releaseThe build links against WinDivert using the import library at
vendor/WinDivert-2.2.2-A/x64 (wired up via WINDIVERT_PATH in
.cargo/config.toml), and embeds a requireAdministrator manifest through the
embed-manifest build script.
WinDivert is loaded dynamically at runtime. Copy its two runtime files next to the built executable before running:
copy vendor\WinDivert-2.2.2-A\x64\WinDivert.dll target\release\
copy vendor\WinDivert-2.2.2-A\x64\WinDivert64.sys target\release\Then launch it:
target\release\throttle.exeThrottle must run as Administrator, because WinDivert can only open its device from an elevated process. The embedded manifest requests elevation, so Windows shows a UAC prompt on launch. If the backend can't start (not elevated, or the WinDivert files are missing), the app opens a small window explaining the error instead of exiting silently.
WinDivert is a legitimate packet-capture driver, but because it is also used by
some game "boosters" and, occasionally, by malware, a few antivirus products
flag it heuristically. The files vendored here come from the official signed
WinDivert 2.2.2 release. If your AV quarantines WinDivert64.sys or
WinDivert.dll, verify them against the official distribution at
https://reqrypt.org/windivert.html and allow-list them if you trust the source.
- Throttle's own source code is licensed under the MIT License (see
LICENSE). - WinDivert (
WinDivert.dll,WinDivert64.sys, headers/import lib) is a separate project licensed under the LGPL v3 (with a GPL/proprietary dual option). Throttle links to it dynamically and ships it as a separate, replaceable DLL/driver; it is not statically linked into the binary. Seevendor/WinDivert-2.2.2-A/LICENSEfor the full text and terms.
The MIT code and the LGPL WinDivert component stay independently licensed. Replacing the bundled WinDivert files with your own build is supported.