| Crates.io | ripget |
| lib.rs | ripget |
| version | 0.1.0 |
| created_at | 2026-01-14 05:59:31.820393+00 |
| updated_at | 2026-01-14 05:59:31.820393+00 |
| description | Fast multi-part downloader with retries, progress, and configurable parallelism. |
| homepage | https://github.com/sam0x17/ripget |
| repository | https://github.com/sam0x17/ripget |
| max_upload_size | |
| id | 2042280 |
| size | 96,305 |
ripget is a fast downloader that uses parallel HTTP range requests to pull large files as quickly as possible. The default configuration uses 10 parallel ranges and 16MB buffers, similar in spirit to aria2c.
cargo install ripget
Download to the current directory using the URL filename:
ripget "https://example.com/assets/large.bin"
When run in an interactive terminal, ripget shows a progress bar on stderr.
Use --silent to disable the progress bar.
Use --threads or RIPGET_THREADS to override the default thread count.
Override the buffer size:
ripget --cache-size 8mb "https://example.com/assets/large.bin"
Override the output name:
ripget "https://example.com/assets/large.bin" my_file.blob
RIPGET_THREADS: override the default parallel range countRIPGET_USER_AGENT: override the HTTP user agentRIPGET_CACHE_SIZE: override the read buffer size (e.g. 8mb)--threads <N>: override the default parallel range count--user-agent <UA>: override the HTTP user agent--silent: disable the progress bar--cache-size <SIZE>: override the read buffer size (e.g. 8mb)use ripget::download_url;
# #[tokio::main]
# async fn main() -> Result<(), ripget::RipgetError> {
let report = download_url(
"https://example.com/assets/large.bin",
"large.bin",
None,
None,
).await?;
println!("downloaded {} bytes", report.bytes);
# Ok(())
# }
For async readers with a known length:
use tokio::io::{self, AsyncWriteExt};
# #[tokio::main]
# async fn main() -> Result<(), ripget::RipgetError> {
let data = b"hello from a stream".to_vec();
let (mut tx, rx) = io::duplex(64);
tokio::spawn(async move {
let _ = tx.write_all(&data).await;
});
let report = ripget::download_reader(rx, "out.bin", data.len() as u64).await?;
println!("downloaded {} bytes", report.bytes);
# Ok(())
# }
ripget retries network failures and most HTTP statuses with exponential backoff to handle throttling or transient outages. Only 404 and 500 responses are treated as fatal. Each range reconnects if no data arrives for 15 seconds.
Licensed under either of:
LICENSE-APACHE)LICENSE-MIT)