JSTorrent

The torrent client that runs on any device

One engine, every platform. Fast, free, and 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 Chrome extension paired with a companion app on ChromeOS. It also works on ChromeOS Flex, Android phones, and in any Chromium-based 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.

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.21 February 23, 2026

  • Fix .torrent file opening crash (TransactionTooLargeException) by writing torrent bytes to temp file instead of passing base64 via intent extra
  • Fix activity flags: remove FLAG_ACTIVITY_CLEAR_TASK to avoid destroying running activity, add FLAG_GRANT_READ_URI_PERMISSION for content:// URIs
  • Show proper filenames from content providers instead of opaque document IDs
  • Instant pending torrent placeholder while engine starts (for both .torrent files and magnet links)

Android v1.0.20 February 22, 2026

  • Fix UDP hostname resolution failing on IPv4-bound sockets

Desktop App v0.1.25 February 22, 2026

  • Fix UDP hostname resolution failing on IPv4-bound sockets
  • Periodically refresh desktopVersion from rpc-info.json

Extension v1.0.4 February 16, 2026

  • Minimum backend versions: Tauri App v0.1.24, Android v1.0.18

Extension v1.0.3 February 16, 2026

  • Context menu options on extension icon: open as tab, popup, or desktop app
  • Batch piece hash verification (verifyChunks API)
  • Recursive file listing (listTree) for faster resume and recheck

Android v1.0.19 February 16, 2026

  • Reduced memory pressure to prevent OOM crashes during endgame

Android v1.0.18 February 16, 2026

  • `listTree` API for recursive file listing, used in resume/recheck for batched file existence checks
  • `verifyChunks` API for batch piece hash verification
  • Android standalone always deleting torrent data on removal
  • QuickJS FFI boolean coercion bugs in native filesystem

Desktop App v0.1.24 February 16, 2026

  • Add list_tree endpoint to io-daemon for recursive file listing
  • Add verifyChunks API for batch piece hash verification
  • Fix .torrent file open failing for filenames with spaces
  • Fix tray menu items firing twice on macOS
  • Sync check menu items between app menu and tray menu on macOS
  • Aggregate changelogs across skipped versions in update server

Extension v1.0.2 February 11, 2026

  • Desktop app launch from extension settings with version reporting
  • Profile picker UI and backend support
  • Launch page token routing and extension torrent handling
  • Extension TakeOver flow for desktop mutual exclusion
  • Shared SQLite KV store for desktop, routed through native host
  • Tray stats, auto-updater, and extension popup window
  • Torrent queue management with active download/seed limits
  • Log viewer, file opening, and completion notifications
  • Seed rotation and reset command
  • Resume data verification and auto data check on start
  • Piece-level no-data timeout for aggressive peer snubbing
  • RTT-based peer snubbing, adaptive timeouts, and peer caching
  • Slow-start queue sizing for peer pipeline depth
  • DiskId plumbing across all platforms for disk I/O layer
  • Renamed installId to telemetryId across extension codebase
  • Renamed ChromeExtensionEngineManager to DaemonEngineManager
  • Simplified config storage to local-only with windowMode setting
  • Refactored uploader to pull-based model with per-peer send buffer watermarks
  • Replaced exclusive ownership with soft affinity piece requesting
  • Replaced piece abandonment with failed-peer tracking
  • Keep in-flight requests on choke (libtorrent alignment)
  • Consolidated link handling and improved companion server reliability
  • Companion token mismatch recovery loop
  • Magnet link handling
  • TCP data reordering race condition in onTcpClose
  • Disconnect peers sending invalid message lengths (>1MB)
  • Recheck race in torrent file operations

Desktop App v0.1.23 February 11, 2026

  • Fix formatting (cargo fmt)

Help / FAQ

Bug reports and feature requests are welcome on the JSTorrent 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 the GitHub issue tracker.

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.

Links