CLI tool
webtorrent/webtorrent-desktop avatar
webtorrent/webtorrent-desktop

WebTorrent Desktop: a streaming BitTorrent client that plays while it downloads

❤️ Streaming torrent app for Mac, Windows, and Linux

10,123 stars1,042 forksJavaScriptMIT

At a glance

What is it?
WebTorrent Desktop is an Electron app for macOS, Windows and Linux that plays video and audio from a torrent before the download finishes. It is a good fit for casual streaming, and a poor fit for anyone who wants a headless daemon or a mobile client.
Who is it for?
Adopt WebTorrent Desktop if you want a desktop player that starts a video from a magnet link or .torrent file before the transfer completes, and you are comfortable with a GUI-only, MIT-licensed app whose latest release is v0.24.0 from 2020-08-29. Do not adopt it if you need a headless client, a mobile app, or a build you can pin to a recent tagged release.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 5 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What WebTorrent Desktop actually solves

A conventional BitTorrent client downloads the whole file and only then hands it to a player. For a 4 GB episode that is a long wait before anything appears on screen. WebTorrent Desktop inverts that order: the README describes it as "The streaming torrent app. For Mac, Windows, and Linux", and the app is built so playback can begin from the pieces that arrive first.

The audience is narrow and specific. It is a desktop application, packaged for macOS, Windows and Linux, so it suits someone at a laptop or workstation who has a magnet link, a .torrent file, or a URL and wants to watch or listen now. It is not a server component, not a browser extension, and not something you deploy for other people. The repository topics list bittorrent, electron, nodejs, p2p, streaming and webrtc, which matches the shape of the product: a peer-to-peer engine wrapped in a native-feeling window.

The project is MIT licensed and maintained by WebTorrent, LLC. The repository is not archived, and the last push was on 2026-09-19. That is a meaningful distinction: the codebase is still receiving commits even though the newest tagged release listed is v0.24.0 from 2020-08-29.

How the streaming pipeline is put together

The architecture is visible from package.json. The app depends on webtorrent 1.9.7 for the BitTorrent and WebRTC peer logic, create-torrent 5.0.9 for producing torrents, and parse-torrent 9.1.5 for reading them. Electron 27.3.11 is the runtime, React 17.0.2 and material-ui 0.20.2 render the interface, and @electron/remote 2.1.3 bridges the renderer process to the main process.

The streaming part is not one library but a set of adapters. airplayer, chromecasts and dlnacasts handle AirPlay, Chromecast and DLNA targets respectively, while vlc-command exists so the app can hand a file to a local VLC installation. music-metadata extracts tags for audio, iso-639-1 and languagedetect deal with subtitle and audio language labelling, and srt-to-vtt converts SRT subtitles into the VTT format a browser-based player accepts. capture-frame is present for grabbing stills.

So the data flow is: a torrent is parsed, the WebTorrent engine begins fetching pieces, and the player reads from the growing local data rather than waiting for completion. When you cast, the same content is routed to an external device through one of the three casting libraries. The README does not document the buffering thresholds or how the app decides when enough of a file exists to start, so the exact heuristics are not something this article can state.

Installing WebTorrent Desktop and playing a first torrent

The README recommends downloading the installer from the official site at webtorrent.io/desktop. Installer files for each platform are also published on the GitHub releases page. On macOS there is a command-line route through Homebrew-Cask:

bash
brew install --cask webtorrent

After that command completes, the app appears in your Applications folder and can be launched like any other Mac application. The README does not state which version the cask resolves to, so check the installed version against the release you expected.

If you want the unstable development build instead of a packaged release, the README gives these steps. They clone the repository, install dependencies, and start the app:

bash
git clone https://github.com/webtorrent/webtorrent-desktop.git
cd webtorrent-desktop
npm install
npm start

npm start launches the Electron app from source. During development, npm run watch restarts it automatically whenever a file changes, and npm test runs the linters. The README notes that the development version is unstable, so treat it as a way to test changes rather than a daily driver.

Once the window is open, the workflow is to add a magnet link, a .torrent file, or a URL. The README does not walk through the add-torrent dialog step by step, so the exact button labels are not reproduced here. What the README does describe is a privacy posture: the app collects basic usage stats, such as how often the play button succeeds, times out, or reports a missing codec. It states that no personally identifying information is sent and that it does not track which torrents you add.

Where WebTorrent Desktop stops being the right tool

The most concrete limitation is packaging. The README is explicit that the Mac app can only be packaged from macOS, while the Windows and Linux apps can be packaged from any platform. Building the Windows app off Windows requires Wine and Mono, with XQuartz first on a Mac. That is a real constraint for anyone who wants a reproducible build pipeline on a single Linux machine and expects all three artifacts.

The integration tests are equally rigid. They use Spectron and Tape, click through the app, and compare screenshots against references. The README requires a Retina screen matching a 2018 MacBook Pro 13" for macOS, and Windows 10 at 1366x768 for Windows. It also asks that you keep the mouse at the screen edge and not touch the keyboard while tests run. Screenshot diffing means small UI changes break several tests at once; the README's own remedy is to delete the offending screenshots and regenerate them, which is fast but also means the test suite is not a stable contract you can rely on across UI work.

There is no Android or iOS build described anywhere in the README, despite search interest in a mobile version. There is also no daemon mode, no headless option, and no documented CLI for adding torrents. If your use case is a seedbox, a NAS, or a scripted download queue, this app is the wrong shape entirely.

How it differs from Stremio and from the webtorrent package

People often compare WebTorrent Desktop with Stremio, and the difference is in where the catalogue lives. Stremio is organised around add-ons that supply streams for a title you pick from a library-style interface. WebTorrent Desktop has no catalogue layer: you bring the magnet link, the .torrent file, or the URL yourself, and the app plays it. That makes WebTorrent Desktop smaller in scope and dependent on you already knowing what you want to watch.

The more instructive comparison is with the webtorrent npm package the app depends on. That package is a library you can embed in your own Node.js or browser project; it gives you the peer logic without a user interface. WebTorrent Desktop is the packaged application built on top of it, with React, Material UI, casting adapters and subtitle conversion included. If you are writing a service, the library is the right layer. If you want something to double-click, the desktop app is.

A third point of contrast is the browser. WebTorrent works in browsers over WebRTC, which is why the repository carries the webrtc topic. The desktop app adds what a browser sandbox cannot easily do: writing files to disk, launching VLC, and casting to Chromecast, AirPlay and DLNA devices.

Maintenance, releases and the MIT licence

The release history is the thing to look at before committing. The newest release listed is v0.24.0, tagged 2020-08-29, with v0.23.0 and v0.22.0 both in July 2020. The last push to the repository was on 2026-09-19, so commits continue even though no newer tag appears in the release list. The practical consequence is that if you install a packaged binary, you are likely running code from 2020, and if you clone and build from master, you are running unreleased code. The README does not document a rollback path for the auto-updater, and it notes that auto-update files (.nupkg for Windows, -darwin.zip for Mac) are always produced even when you pass --package.

The licence is MIT, copyright WebTorrent, LLC. MIT is permissive: it allows use, modification and redistribution with the licence and copyright notice retained. That is a statement about the licence text, not legal advice, and it says nothing about the legality of the content you choose to transfer. The README does not address content legality at all.

Upgrade cost is mostly about Electron. The app pins Electron 27.3.11 and React 17.0.2, and the UI is built on material-ui 0.20.2, an old major line. Moving any of those forward means touching the renderer code, and the screenshot-based integration tests will need their reference images regenerated. Budget for that if you intend to fork.

Editorial conclusion

Adopt WebTorrent Desktop if you want a desktop player that starts a video from a magnet link or .torrent file before the transfer completes, and you are comfortable with a GUI-only, MIT-licensed app whose latest release is v0.24.0 from 2020-08-29. Do not adopt it if you need a headless client, a mobile app, or a build you can pin to a recent tagged release. Before installing, check the GitHub releases page for the installer matching your platform, and confirm whether the Homebrew cask resolves to the same version.

Frequently asked questions

How do I use WebTorrent Desktop?

Install it from the official site or via brew install --cask webtorrent on macOS, open the app, and add a magnet link, a .torrent file or a URL. Playback starts from the pieces that have already arrived rather than waiting for the full download.

What is WebTorrent Desktop?

It is a streaming torrent application for Mac, Windows and Linux, built with Electron and the webtorrent package. The README describes it as "The streaming torrent app" and it is MIT licensed, maintained by WebTorrent, LLC.

Is there a WebTorrent Desktop alternative?

Stremio is the comparison people make most often. It is organised around add-ons that supply streams for a title you select, whereas WebTorrent Desktop has no catalogue layer and expects you to supply the magnet link or .torrent file yourself.

Is WebTorrent Desktop good?

It does one job well: playing media from a torrent while the transfer is still running, with casting to Chromecast, AirPlay and DLNA and subtitle conversion built in. It is a poor fit if you need a headless client, a CLI, or a build pinned to a recent release, since the newest listed tag is v0.24.0 from 2020-08-29.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. webtorrent/webtorrent-desktop on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/webtorrent-webtorrent-desktop.svg)](https://hysenlabs.com/projects/webtorrent-webtorrent-desktop)