JSTorrent

Torrent downloads across your devices

Torrent downloads for desktop, Android, and supported Chromebooks. Open source.

Download

About JSTorrent

JSTorrent is a BitTorrent client that downloads torrent files with ease. It runs as a standalone desktop app on Windows, Mac, and Linux, as a native Android app, and as a browser extension connected to the desktop or Android app. Supported Chromebooks can use the Android app; browser integration requires a supported Chromium browser.See all supported platforms →

Originally built for ChromeOS over 10 years ago, JSTorrent has been rebuilt from the ground up as a multi-platform,open source project. Release packages and signatures are checked before distribution —learn more.

★4.4 (3,800+ ratings) on Chrome Web Store

What users say

"It works great, it's easy to use."
"Essential app"
"Greatest app ever, it easily doubles the functionality of my chromebook. I don't remember it cost any money when i got it, but i would definitely pay for it. Just as good/better than a full desktop torrent client!"
"I know not everyone has a chromebook and it is nice to be able to find a program that simply works, THANK YOU."

Recent Changes

Android v1.0.24July 23, 2026

  • Target Android 16 (API level 36) for the 2026 Google Play requirements
  • Update Android build and test compatibility for API level 36

Extension v1.1.1March 14, 2026

  • Video player not releasing file lock on close
  • Stale streaming suppressions persisting after file lock removal, preventing pieces from resuming download
  • Internet Archive search plugin now filters results to Creative Commons and public domain licenses only

Extension v1.1.0March 14, 2026

  • Video streaming: right-click "Watch" on video files to stream directly from the torrent swarm with MKV keyframe-aware seeking and piece timeline visualization
  • Web seed support (BEP 17/19): concurrent HTTP downloads from web seeds with keep-alive, rate limiting, redirect handling, and health-based source selection
  • LAN media sharing: generate shareable URLs for completed files accessible by other devices on the local network (desktop only, capability-gated)
  • Search plugins infrastructure (behind feature flag): sandboxed plugin install and execution, Internet Archive sample plugin, search results with torrent actions
  • Configurable active piece memory limit
  • IO daemon and native host contract version advertising and conformance testing
  • Toast notification system for recheck results
  • Magnet URI select-only file indices (pre-select specific files before metadata)
  • Companion write backpressure deadlock: downloads stalling after 32MB of cumulative writes on ChromeOS
  • ChromeOS download root state sync not reflecting current roots
  • Extension takeover from desktop app failing
  • File progress not updating after torrent recheck
  • Data check using wrong batch size
  • Zero upload slots causing incorrect choking behavior
  • Streaming file lock preemption and cleanup on file completion
  • Boundary .parts file materialization on session restore
  • Rewrote .parts partial file storage to use fixed header slots (libtorrent partfile compatibility)
  • Prefer UTF-8 torrent metadata and file paths over legacy encodings
  • Streaming-aware peer selection: prioritize peers with pieces needed for active video playback
  • Moved ChromeOS capability discovery from HTTP polling to control WebSocket channel
  • Decoupled popup video player from engine bundle for faster loading
  • Recommended backend versions: Tauri App v0.2.0, Android v1.0.23

Android v1.0.23March 14, 2026

  • Media streaming player (Media3) with subtitle support, fullscreen swipe, and LAN sharing
  • Torrent search with plugin system and WebView sandbox
  • Web seed support (BEP 17/19) with keep-alive, concurrency, and redirect handling
  • Configurable active piece memory limit
  • Companion mode power management to prevent ARCVM Doze stalls
  • Default gateway detection for port mapping (NAT-PMP/PCP)
  • Data Saver detection with user warning banner
  • Fix companion write backpressure deadlock: downloads stalled after 32MB of writes due to cumulative byte counter used for backpressure instead of in-flight bytes
  • Fix OOM crash on Chromebox (Android 13, SDK 33)
  • Use positioned SAF fd I/O for reduced write copy overhead
  • Fix player pause behavior and fullscreen overlay controls
  • Fix file priority await and .parts materialization on file unskip
  • Prefer UTF-8 torrent metadata and paths
  • Add IO daemon conformance gate with contract versioning
  • Harden Android memory crash paths and add instrumentation

Desktop App v0.2.1March 14, 2026

  • Fix video player not releasing file lock on close, which could block other files from downloading

Desktop App v0.2.0March 14, 2026

  • Add video streaming: right-click Watch on video files for in-app playback with MKV keyframe seeking
  • Add desktop video fullscreen support (double-click to toggle)
  • Add LAN media share server for streaming to other devices on the network
  • Add web seed support: concurrent transfers, keep-alive connections, redirect handling, rate limiting
  • Add search plugin system with installable Internet Archive plugin
  • Add toast notification system (recheck results, etc.)
  • Port media streaming session contract to Rust io-daemon
  • Advertise IO daemon contract versions for conformance testing
  • Return 404 for missing daemon deletes instead of silently succeeding
  • Fix background update check spawning Tauri app window
  • Fix Windows taskbar icon and Linux window icon
  • Fix zero upload slots choking behavior
  • Fix file progress display after torrent recheck
  • Fix extension takeover from desktop app
  • Prefer UTF-8 torrent metadata and paths
  • Support magnet select-only file indices
  • Add configurable active piece memory limit
  • Add diagnostic logging for magnet deep link routing
  • Fix io-daemon spurious shutdown on transient parent process check failure (e.g., after sleep/wake)

Extension v1.0.6March 3, 2026

  • Crostini mode UI for ChromeOS without ARC (io-daemon in Linux container)
  • NAT-PMP (RFC 6886) and PCP (RFC 6887) port mapping clients
  • Default gateway detection across all backends
  • Legacy migration snooze support and aggressive nag system
  • Legacy app/extension IDs in externally_connectable for bidirectional detection
  • Torrents-added usage metric tracking
  • Tauri 10s startup delay from unnecessary backend-ready synchronization
  • Tauri startup race: wait for backend-ready event before IPC
  • TauriChannel handshake retry for setup race condition
  • Stale profileId causing permanent "Connection Lost" on desktop
  • Native host and io-daemon lingering when no extension UI is open
  • Native port cleanup on failed handshake
  • Version check for Crostini: treat as desktop backend, not Android
  • Tauri desktop app plugin-opener resolution and daemon handshake
  • Report Bug button routes to feedback.html instead of GitHub
  • Replaced new.jstorrent.com URLs with jstorrent.com
  • Removed chromeos-testbed/ and extension/tools/ (moved to standalone repo)
  • Renamed upnp/ to port-mapping/ for NAT-PMP and PCP support

Desktop App v0.1.31March 3, 2026

  • Fix 10-second startup delay by removing unnecessary backend-ready synchronization
  • Fix startup race condition: wait for backend-ready event before IPC
  • Add retry logic to TauriChannel handshake for setup race condition
  • Add Crostini mode UI and ensure download root exists
  • Fix version check for Crostini: treat as desktop backend, not Android
  • Fix Crostini standalone daemon /status response for extension compatibility

Desktop App v0.1.30March 3, 2026

  • Add auto-updater hardening tests and CI gates
  • Fix plugin-opener resolution and daemon handshake
  • Fix Crostini standalone daemon serializing snake_case keys for /status
  • Route Report Bug button to feedback.html instead of GitHub

Desktop App v0.1.29March 3, 2026

  • Publish standalone io-daemon Linux binaries to GitHub Releases for ChromeOS Crostini
  • Add Crostini install script (`curl -fsSL https://jstorrent.com/install-crostini.sh | bash`)
  • Add default gateway detection across all backends (port-mapping)
  • Fix stale profileId causing permanent "Connection Lost" on desktop
  • Fix app not fully quitting on window close when "Run in Background" is off

Help / FAQ

Bug reports and feature requests are welcome on theJSTorrent GitHub page.

What platforms are supported?

JSTorrent runs on Windows, Mac, Linux, ChromeOS, and Android.

  • Desktop (Windows/Mac/Linux): Install the standalone desktop app, or use the Chrome extension paired with the desktop app.
  • ChromeOS: Install the Android app from the Play Store, or use the Chrome extension paired with the Android companion app.
  • Android: Install the Android app from the Play Store. It works as a standalone torrent client.
Do I need the Chrome extension?

No. The desktop app and Android app both work standalone without the extension. The extension is optional and provides browser integration (intercepting magnet links, right-click to add torrents, etc.).

How do I add a torrent?

Find a torrent file or magnet link on the web, then either:

  • Click a magnet link (JSTorrent will handle it automatically)
  • Download a .torrent file and open it with JSTorrent
  • Paste a magnet link or torrent URL into the app
Where do the files download to?

On desktop, files download to your configured download folder (defaults to your Downloads directory). On Android, you choose a storage location when you first add a torrent.

My torrent isn't downloading!

Check that you have peers available for the torrent. Some torrents have very few seeders and may be slow or unavailable.

If you still have issues, please report them on theGitHub issue tracker.

Is JSTorrent safe to install?

Yes. JSTorrent isopen source and release builds useGitHub Actions CIwith platform signing checks.

  • macOS: Signed with an Apple Developer ID certificate and notarized by Apple.
  • Windows: Installers identify the publisher through Azure Trusted Signing.
  • Android: Release bundles use the upload certificate; Google Play signs the distributed app with the managed app-signing certificate.
  • Chrome extension: Reviewed and distributed through the Chrome Web Store.
  • Auto-updates: Desktop updates are signature-verified before installation.

You can audit the full build pipeline in theCI workflowsand verify that release artifacts match the tagged source code.

Does this work with private trackers?

Yes. Download the .torrent file from your tracker's website first, then load it into JSTorrent. Many trackers employ a whitelist for allowed clients. Contact your tracker's administrators if JSTorrent is not whitelisted.

How does ChromeOS work?

On ChromeOS, you can use the Android app from the Play Store as a standalone torrent client — no extension needed.

Alternatively, install the Chrome extension alongside the Android companion app. The extension provides the UI, while the Android app handles file I/O and networking. A one-time pairing step connects them, and after that the extension automatically connects whenever you open it.

My Chromebook doesn't have the Play Store. Can I still use JSTorrent?

You can use JSTorrent in your Chromebook's Linux development environment if it supports the Linux desktop app. Linux support is best effort.

  1. Enable Linux in Chrome Settings → About ChromeOS → Linux development environment.
  2. Choose your Linux architecture in Download, then download and open the JSTorrent AppImage. You can use the desktop app directly without the Chrome extension.

If the desktop app cannot start in your Linux environment, seeheadless setup from source. This requires building and configuring the service; it is not a separate published download. Android and Linux libraries are separate.

Links