CloudDL

Fetch magnet, HTTP(S), FTP and Usenet links, streaming those bytes straight into the storage you choose.

or upload a torrent or NZB file
Drop a .torrent or .nzb file here or click to browse
Only .torrent and .nzb files are accepted
Connect a storage account below to enable transfers.

Transfers

No transfers yet.

Storage destinations

MEGA

Live login via megajs. Sessions are memory-only — reconnect after a page reload. Real uploads stream into your account.

Backblaze B2 · via Cloudflare Pages Function

The function authorizes your key and returns the upload credentials; parts stream browser → B2. Bucket needs CORS for this origin.

Node engine · locally hosted downloader

Runs on this machine (clouddl/engine). Node WebTorrent takes ANY torrent — UDP trackers, DHT, web seeds, .torrent files — and streams the bytes straight into MEGA, B2 or a local folder. When connected, torrent links go here instead of the in-browser fallback.

Cloud queue · GitLab runner backed by Cloudflare Pages + D1

Drop a magnet or .torrent here while the queue is connected and it is POSTed to the Pages Function, stored in D1, claimed by the scheduled GitLab runner, downloaded by the engine, and the bytes streamed into the destination. Progress and status sync back to this list.

How streaming works

MEGA: the source bytes are written chunk-by-chunk into a live megajs upload stream — nothing is staged locally. B2: a large-file transfer is opened, and 16 MB parts are hashed (SHA-1) and uploaded straight to Backblaze as the source stream arrives. HTTP(S): the URL is fetched and piped through. Torrents: if the Node engine is connected, torrent links (including UDP/DHT magnets and any .torrent) are downloaded there and streamed to its configured destination; otherwise WebTorrent runs in-browser and its file stream is piped. Only FTP/Usenet stay simulated (no browser protocol support).

B2 bucket CORS

Direct browser uploads need a CORS configuration on the target bucket. In the Backblaze console open the bucket → Bucket Settings → CORS Rules and allow this origin (add https://<your-pages-domain> or http://localhost:8788), methods GET, POST, and headers Authorization, X-Bz-*. Until qualified, a key restricted to a single bucket is required.

Cloud queue deploy & security

Once: npx wrangler d1 create clouddl_queue --remote → paste the returned database_id into wrangler.toml. Then on every deploy: npx wrangler d1 migrations apply clouddl_queue --remote + npx wrangler pages deploy . --project-name clouddl. The queue endpoints (/api/queue…) live in functions/api/queue*.js. Set QUEUE_TOKEN on the Pages project to lock writes, and put the same value + QUEUE_URL=https://<project>.pages.dev into GitLab CI/CD variables.

Deploy & security

Deploy: npx wrangler pages dev clouddl then npx wrangler pages deploy clouddl, with B2_KEY_ID / B2_APPLICATION_KEY set on the project. The function returns a 24 h B2 authorization token to this page so uploads can flow directly — treat that endpoint as private. MEGA/FTP passwords are kept in memory only.