| Crates.io | netbeat |
| lib.rs | netbeat |
| version | 0.1.0 |
| created_at | 2025-08-24 03:46:15.68766+00 |
| updated_at | 2025-08-24 03:46:15.68766+00 |
| description | A fast, minimal, & lightweight tool for testing network upload and download speeds between a client and server, written entirely in Rust. |
| homepage | https://github.com/jakepenzak/netbeat |
| repository | https://github.com/jakepenzak/netbeat |
| max_upload_size | |
| id | 1808061 |
| size | 3,038,253 |
A fast, minimal, & lightweight tool for testing network upload and download speeds between a client and server, written entirely in Rust.
Netbeat provides both a command-line interface and a library for measuring network performance, monitoring connectivity, and analyzing network behavior, primarily oriented towards hobbyists and home lab enthusiasts.
Requires Rust toolchain.
cargo install netbeat
cargo add netbeat
cargo install netbeatnetbeat servenetbeat run <server-ip>$ netbeat --help
A fast, minimal, & lightweight Rust tool for testing network upload and download speeds between a client and server.
Usage: netbeat <COMMAND>
Commands:
run Run a speed test against a target server
serve Start listening for incoming connections on a target server
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
Run a basic speed test:
$ netbeat run 10.1.1.11
๐ Connected to server at 10.1.1.11:5050
๐ Running ping test... โ
Completed.
๐ Ping Report
==== ================== ==========
๐ Packets sent 20
๐ Packets received 20
๐ Packet loss 0.0%
โพ Minimum ping 72.76ยตs
โฌ Maximum ping 363.34ยตs
โผ๏ธ Average ping 115.91ยตs
==== ================== ==========
๐ Running upload speed test... โ
Completed.
โฌ๏ธ Upload Report
==== ===================== =============
๐ Uploaded 1.15 GB
โฐ Upload time 10.01s
โซ Upload speed (Mbps) 921.38 Mbps
โซ Upload speed (MB/s) 115.17 MB/s
==== ===================== =============
๐ Running download speed test... โ
Completed.
โฌ๏ธ Download Report
==== ======================= =============
๐ Downloaded 1.13 GB
โฐ Download time 10.00s
โฌ Download speed (Mbps) 906.71 Mbps
โฌ Download speed (MB/s) 113.34 MB/s
==== ======================= =============
๐ฆ Netbeat Report
==== ======================= =============
๐ Packets sent 20
๐ Packets received 20
๐ Packet loss 0.0%
โพ Minimum ping 72.76ยตs
โฌ Maximum ping 363.34ยตs
โผ๏ธ Average ping 115.91ยตs
๐ Uploaded 1.15 GB
โฐ Upload time 10.01s
โซ Upload speed (Mbps) 921.38 Mbps
โซ Upload speed (MB/s) 115.17 MB/s
๐ Downloaded 1.13 GB
โฐ Download time 10.00s
โฌ Download speed (Mbps) 906.71 Mbps
โฌ Download speed (MB/s) 113.34 MB/s
==== ======================= =============
$ netbeat run --help
Run a speed test against a target server
Usage: netbeat run [OPTIONS] <TARGET>
Arguments:
<TARGET> Target server IP address or hostname
Options:
-p, --port <PORT> Target port on server (1-65535) [default: 5050]
-t, --time <TIME> Time limit per test direction in seconds (1-3600) [default: 10]
-d, --data <DATA> Target size of data to be uploaded/downloaded in the speed test including units (eg, 10MB, 1GB, 2GB). Instead of time
-c, --chunk-size <CHUNK_SIZE> Buffer size for read/write operations (eg, 32KiB, 64KiB, 128KiB) [default: 64KiB]
--ping-count <PING_COUNT> Number of pings to perform for ping test (1-1000) [default: 20]
-j, --json Return results as json to stdout
--timeout <TIMEOUT> Connection timeout in seconds [default: 30]
--retries <RETRIES> Number of retry attempts on connection failure [default: 3]
-q, --quiet Suppress progress output (results & errors only)
-v, --verbose Enable verbose output
-h, --help Print help
Start server on all interfaces:
$ netbeat serve
๐ก Server Listening on 0.0.0.0:5050
๐ New connection from 10.1.1.115:60588
๐ Running ping test for client... โ
Completed.
๐ Running upload speed test for client... โ
Completed.
๐ Running download speed test for client... โ
Completed.
$ netbeat serve --help
Start listening for incoming connections on a server.
Usage: netbeat serve [OPTIONS]
Options:
-i, --interface <INTERFACE> Network interface to bind server to: 'all' (0.0.0.0) or 'localhost' (127.0.0.1) [default: all]
-p, --port <PORT> Port to listen on (1-65535) [default: 5050]
-c, --chunk-size <CHUNK_SIZE> Buffer size for data transfer (eg, 32KiB, 64KiB, 128KiB) [default: 64KiB]
--connections <CONNECTIONS> Maximum concurrent connections [default: 50]
-q, --quiet Suppress all output (errors only)
-v, --verbose Enable verbose output
-h, --help Print help
use netbeat::{Server, Result, BindInterface};
fn main() -> Result<()> {
let server = Server::builder()
.interface(BindInterface::All)
.port(5050)
.max_connections(100)
.build()?;
server.listen()?;
Ok(())
}
use netbeat::{Client, Result, NetbeatReport};
fn main() -> Result<()> {
let client = Client::builder("10.1.1.11")
.port(5050)
.time(30)
.build()?;
let report: NetbeatReport = client.contact()?;
Ok(())
}
make install-hooksThis is my first Rust project, and I'm still learning the language. Please be patient with me and feel free to provide feedback and suggestions for improvement ๐ Contributions are welcome!