A fast, free download manager — with a browser extension that catches the videos other tools miss.
Multi-connection downloads, a queue and scheduler, YouTube and 1,000+ sites through its own yt-dlp, and an extension that works with the app — or on its own.
Windows 10/11 · macOS 12+ (Apple Silicon & Intel) · Linux x86-64 (DEB, RPM, AppImage) · all releases
download-craft-demo-720p-web.mp4
- Get ready: one small window shows what Download Craft needs (browser connection, extension, yt-dlp, FFmpeg, Deno) and fixes it with one click. It opens by itself only when something is missing.
- IDM-style head start: a plain file starts downloading while the Download File Info window is still open, so it is already partway done when you press Download.
- Drag finished downloads out of the list onto a folder, the desktop or a chat.
- A new About & Updates window, a clearer Speed tab (limit in KB/s or MB/s, a better graph), and a tidier Download all links window.
- The video button says just "Download", opens on your usual quality, stays inside the player and hides under a site's pinned header.
Full notes: Release 0.9.12.
Capture a link — the app checks its real name and size before it starts. |
Watch it fly — live speed, time left and every parallel connection. |

Download all links — every file on a page with its type and size; check, filter, download.
Extension popup — every video on the page, with the app or in the browser alone. |
Downloads tab — browser downloads and the app's queue, side by side. |

On every player — a small Download this video bar, see-through until you need it.
Settings — yt-dlp, FFmpeg and the JavaScript runtime install and update themselves. |
Done — open the file, open it with another app, or show its folder. |
Downloading
- Dynamic segmentation (1–32 connections): a free connection takes over half of whatever would finish last, so no connection idles while another crawls. Crash-safe resume, self-healing connections and automatic link refresh. See the engine.
- A global speed limit, per-download connections and a per-server connection cap.
- Queue with concurrency limit, scheduler, retry-all-failed and finish actions (shutdown / sleep / hibernate).
- Smart names from the server or the video title; safe auto-rename or overwrite; optional SHA-256 check.
- HLS and DASH streams (live recording, AES-128), video + audio merged with FFmpeg.
Video sites
- YouTube and 1,000+ sites through the app's own yt-dlp, kept up to date automatically — 1080p, 4K and merged audio + video. A portable JavaScript runtime installs in one click.
- Facebook / Instagram reels, Vimeo, Bilibili and generic players detected from the page itself.
Browser extension (Chrome, Edge, Brave, Firefox)
- Catches videos from network traffic, manifests and page data — HLS, DASH, MP4/WebM, subtitles.
- Download this video bar on players, quality menus with sizes, right-click Download all links.
- Works without the app: downloads, joins and saves videos in the browser.
- IDM-style hand-off. A browser download is paused, handed to the app, and resumed in the browser if the app can't take it, so nothing is lost. Form (POST) downloads, the browser's own request headers, its proxy and the server it used all go along. Hold Alt while clicking to keep a download in the browser.
- A live connection to the app. Capture settings (file types, excluded sites, minimum size) are edited in the app and pushed to the browser, with notifications when downloads finish. Site rules update from the project without a new extension release.
- Safety net. YouTube runs the app's own engine or yt-dlp first (your choice in Settings), and the other one takes over if it fails. A file the server refuses to the app is fetched inside the open page instead. A video the app can't get is downloaded in the browser.
App
- System / Dark / Light themes, status sidebar, search, sortable and resizable columns, bulk actions.
- File names in any script (Bangla, Arabic, CJK …) with proper Indic shaping.
- Clipboard detection, notifications, tray icon, antivirus hook, and a CLI that shares the same queue.
The download engine is a separate, reusable Rust crate,
crates/downloadcraft-engine. Use it to make your own downloader fast
too (MIT).
- Work stealing. When a connection finishes, it splits the part that will finish last, in proportion to the measured speeds. A slow connection never holds the whole download back, and very slow ones are reopened.
- The first request is the probe. Downloading starts at once; more connections join as soon as the server shows it supports ranges.
- One pre-allocated file. There is no joining of parts at the end, so bytes are not copied a second time.
- Crash-safe resume. A journal of the missing ranges is flushed every few seconds. A changed server file (size, ETag, Last-Modified) is detected instead of being stitched onto old bytes.
- Self-healing. HTTP 429/503 lowers the connection count, a per-IP connection limit is detected, and cut or stalled connections resume where they stopped.
- Expired links. A refused signed link is retried through its original URL, or re-resolved from its page, keeping every byte already downloaded.
- Checks every reply. A wrong
Content-Range, a different size, or an HTML error page instead of the file is caught before it can corrupt the download. - ZIP preview.
download_craft peek <url>lists what's inside a remote ZIP without downloading it.
Measured on a home connection (100 MB, 8 connections) against 0.9.8: speedtest.belwue.net went from 70.6 s to 21.4 s, and mirror.nforce.com from 28.2 s to 19.7 s.
let done = downloadcraft_engine::Downloader::new(reqwest::Client::new())
.download(Job::new(url, "file.iso"), progress, control)
.await?;| Platform | Download | How |
|---|---|---|
| Windows 10/11 | DownloadCraft-0.9.12-windows-x64-portable.zip |
Extract and run download_craft.exe — nothing to install. |
| macOS 12+ | DownloadCraft-0.9.12-macos-Universal.zip |
Move Download Craft.app to Applications (development build, not notarized — right-click → Open the first time). |
| Ubuntu / Debian / Mint | downloadcraft_0.9.12_amd64.deb |
sudo apt install ./downloadcraft_0.9.12_amd64.deb |
| Fedora | downloadcraft-0.9.12-1.x86_64.rpm |
sudo dnf install ./downloadcraft-0.9.12-1.x86_64.rpm |
| Other Linux | DownloadCraft-0.9.12-x86_64.AppImage |
Make it executable and open it. |
Browser extension
- Chrome / Edge / Brave: extract
DownloadCraft-Chrome-0.9.12.zip, openchrome://extensions, turn on Developer mode, choose Load unpacked and pick thebrowser-extensionfolder. - Firefox: open
about:debugging#/runtime/this-firefox→ Load Temporary Add-on… → pickDownloadCraft-Firefox-0.9.12.xpi. - In the app, open Settings → Browser Integration and press Install for your browser, so the extension can talk to the app. (Without it, the extension still downloads in the browser.)
Your queue and settings live in %APPDATA%\download_craft (Windows) and carry over between versions.
Prerequisites: Rust stable (MSVC build tools on Windows).
cargo build --release # target\release\download_craft.exe (portable)
cargo test --workspace # app + engine crate: unit and local HTTP tests (no network needed)
node --test browser-extension/*.test.js # extension testsPackaging: python scripts/package.py --platform windows --arch x64 (see PORTABLE-BUILDS.md
for macOS and Linux).
Command line: download_craft.exe add "https://example.com/file.zip",
download_craft.exe get "https://example.com/file.zip" -o out.zip,
download_craft.exe peek "https://example.com/file.zip", download_craft.exe --help.
MIT — free for open-source, closed-source and commercial use. See LICENSE;
NOTICE.md lists the bundled third-party assets (Material Icons, fonts).





