Multi-connection segmented downloads
Splits files into chunks pulled by N concurrent connections for maximum throughput.
ZDM splits every file across multiple connections and pulls them all at once, so total throughput isn't capped by a single connection's speed. A native Rust engine, a small fast desktop shell — no bundled browser runtime.
Splits files into chunks pulled by N concurrent connections for maximum throughput.
The UI shows exactly what each active connection is doing, straight from the engine's own telemetry.
Survive an app restart, a lost connection, or a manual pause, and continue exactly where they left off.
Group downloads together with their own concurrency limit and bulk pause/resume.
Expand a numbered URL pattern into a full queue of files in one step.
New downloads are sorted into the right folder by file type, automatically.
Native and lightweight — a Rust core with a small, fast desktop shell; no bundled browser runtime.
Loading the latest release from GitHub…
64-bit, Windows 10 and later.
Universal — Apple Silicon & Intel.
Debian/Ubuntu, Fedora/RHEL, or any distro via AppImage.
Builds are currently unsigned. Windows SmartScreen and macOS Gatekeeper will show a warning on first launch — choose "More info → Run anyway" (Windows) or right-click → Open (macOS).
Looking for an older build or checksums? See all releases on GitHub ↗
A Rust backend with a native OS webview for the UI, rather than a bundled browser runtime.
crates/zdm-core/
The download engine — pure Rust, no GUI dependency. Probes a URL for range support, splits the file into small chunks, and hands them out to N concurrent workers pulling from a shared queue. Persists enough state (<file>.zdm.json) to resume after a restart, and validates the remote hasn't changed (via ETag/Last-Modified) before trusting old progress. Has its own test suite that runs against a real local HTTP server — no mocked network layer.
src-tauri/
The Tauri backend — turns engine events into app-level DownloadRecords, runs the queue scheduler (which downloads get a connection slot), persists history/queues/settings to a local SQLite database, and exposes commands to the frontend.
src/
The React + TypeScript UI — hand-rolled CSS design tokens, no component framework, so every pixel matches the app's own visual identity rather than a generic design system's defaults.
# clone and run in dev mode
git clone https://github.com/thisisroot/zdm.git
cd zdm
npm install
npm run tauri dev
sudo apt update
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file \
libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev pkg-config libdbus-1-dev
npm run tauri build
cargo test --workspace
npx tsc -b
Issues and pull requests are welcome. For anything nontrivial, please open an issue first to discuss the approach before sending a PR.
Starring the repo helps other people discover the project and costs you nothing but a click.
Send a message straight to my inbox — this opens your email client with everything pre-filled.