Blog

What happens when you paste a link into OpenDownloader

OpenDownloader takes the address of a video page, a direct file, a stream playlist or a magnet link, and saves what is behind it to your computer. One engine, written in Rust and compiled to WebAssembly, runs behind both the web app on this site and the browser extension. This is what it does with a link, in order.

1. Resolve: find the media behind the link

A page address is not a file. The link is read in your own browser to find the actual media: a progressive file such as an MP4, or an HLS playlist (.m3u8). For the large platforms, per-site extractors list the qualities the site itself offers, rather than whatever the network happened to reveal, and mark the best one you can actually get. Choose the video and the audio separately, or take the recommendation.

2. Fetch: where the bytes travel

A web page may only read another site that agrees to answer it, and many media servers do not. So this page adopts our relay at opendownloader.app/relay by default. While it is on, every download URL that is not on your own machine goes through it, not only YouTube. It streams the response on to your browser. Our server keeps no access log for that path, and the relay's own log records the method, the status and the kind of any refusal. It never records the URL, the host or a video ID. It refuses private network addresses, oversized responses and the restricted services listed below.

If you would rather have no server of ours in the path, turn the relay off in Settings. Your browser then fetches direct links and playlists itself, and a server that will not answer a web page will not answer this one. The extension never needs the relay. It runs in the page you are already on, and its host permissions exempt it from that rule.

3. Download: in parallel, and resumable

On Chrome and Edge the file is written to disk through a real file handle, over up to eight ranged connections at once. Four is the default, and Settings changes it. Choose a download folder once and a queue runs without a save dialog per file. Firefox has no folder picker, so it downloads over one connection and hands the finished file to the browser's own downloads.

Progress is saved in your browser's IndexedDB as it goes. Interrupt a download, close the tab or restart the browser, and it picks up from where it stopped, as long as the server still accepts range requests. Before resuming, it checks that the file on the server is the one the first bytes came from. If it changed, you are told to restart, rather than being handed two files spliced together.

HLS streams arrive as many small MPEG-TS segments. They are remuxed into one fragmented MP4 without re-encoding, so nothing is compressed twice. Where a platform serves video and audio as separate tracks, the two are joined on your machine by the same Rust code.

4. Verify: check the file you actually have

When a download finishes, the file is read back off the disk and hashed with SHA-256. The digest describes what landed on disk, not the bytes as they went past, and that is what makes a resumed download trustworthy. The hash is computed incrementally, so a multi-gigabyte file never has to fit in memory. If you have a digest to compare against, supply it, and the result is reported as verified or as a mismatch.

What it will not download

An encrypted stream is refused on every host. A playlist that declares an encryption key stops there: no key is fetched and nothing is decrypted. Services whose catalogue is DRM-protected, such as Netflix, Disney+, Prime Video and Spotify, are refused by name, and the relay enforces the same list on its side. Live streams are refused while they are live, because they have no end to download to. A finished recording of one is an ordinary video. These rules are in the code, with no setting that turns them off.

What it costs

Nothing. There is no paid tier, no trial and no credit-metered feature, and every feature works without an account. The source is on GitLab under MIT or Apache-2.0. To try it, paste a link into the video downloader on the home page.

All posts