instant.io: browser-based file transfer over WebTorrent
🚀 Streaming file transfer over WebTorrent (torrents on the web)
At a glance
- What is it?
- instant.io transfers files peer-to-peer in the browser using WebTorrent, which runs BitTorrent over WebRTC. No plugins are required. Drop a file or paste a magnet link to share directly through Chrome or Firefox.
- Who is it for?
- instant.io is appropriate for ad-hoc file sharing where both parties have a supported browser and neither wants to install software. It is not appropriate when recipients may be on iOS mobile Safari or in environments that block WebRTC, because the WebRTC transport will fail silently in those cases.
- 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 27, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What instant.io does and who it is for
instant.io is the web frontend for WebTorrent, a BitTorrent client that runs entirely in the browser without plugins. A user visits the site, drops one or more files into the page, and receives a magnet link or torrent info hash they can share. Anyone with the link who visits instant.io receives the file directly from the sender's browser without passing through a central server.
The README describes the project as a beta. It is aimed at people who want to transfer files to another person without using a file hosting service and without installing a desktop BitTorrent client. The README notes that Chrome, Firefox, and Opera on desktop and Android are supported. The underlying protocol is BitTorrent over WebRTC, so the receiving end also needs a WebRTC-capable browser.
The README also notes that the client-side code that instant.io uses is in client/index.js within the repository, and that developers who only want file transfer functionality on their own site can use the WebTorrent script directly without running a copy of instant.io.
How WebTorrent over WebRTC works
Standard BitTorrent clients communicate over TCP and UDP between peers. Browsers cannot open TCP or UDP sockets directly, so WebTorrent replaces those transports with WebRTC data channels. WebRTC is the same technology used for browser-based video calling: it enables two browsers to establish a direct peer-to-peer connection after exchanging signaling information through a rendezvous server.
The WebTorrent protocol is backward-compatible with the BitTorrent protocol at the application layer, which means a WebTorrent client can share files with a standard desktop BitTorrent client when that client also supports WebRTC extensions. A browser running instant.io is not isolated to other browser users.
The package.json lists webtorrent at version 1.9.7 as the core runtime dependency, along with simple-peer at 9.11.1, which handles the WebRTC signaling and connection management. The create-torrent package at 5.0.9 generates the torrent metadata from the files dropped by the user.
Using the hosted site and creating shareable links
The hosted site at instant.io requires no setup from a file sender's perspective. Drop a file into the page, wait for the torrent to be created, and share the resulting link. The README documents a direct linking format: adding a torrent info hash or magnet link to the URL creates a shareable link that goes directly to a specific torrent:
https://instant.io#INFO_HASH
https://instant.io/#MAGNET_LINKMultiple torrents can be open in the same browser window at once.
For debugging, the README states that running `localStorage.debug = '*'` in the browser console and refreshing the page enables detailed log output from the WebTorrent client. This is useful when a transfer appears to stall and the cause is not obvious from the UI.
Running a self-hosted copy of instant.io
To run a copy of instant.io on a private server, clone the repository and install dependencies:
git clone https://github.com/webtorrent/instant.io
cd instant.io
npm installModify config.js to set the IP address and port the server should listen on. Then copy the sample secret configuration:
npm run build && npm startThe build step runs two sub-tasks: build-css compiles the Stylus stylesheet to static CSS, and build-js bundles the client code with Browserify into static/bundle.js. The server is an Express application defined in the server/ directory.
For TURN server support, the README instructs copying secret/index-sample.js to secret/index.js and filling in valid TURN credentials. TURN relays traffic when direct WebRTC connections fail, which happens when both peers are behind NAT or a firewall that blocks peer-to-peer connections. Without a TURN server, users behind such networks cannot complete transfers. The TURN configuration is optional but the README explicitly calls it out as necessary for NAT traversal.
Where instant.io falls short
The README describes instant.io as a beta. The project carries no guarantee of stability and has no GitHub releases despite being an active repository with a last push on 2026-09-25.
The WebRTC transport requirement is the primary compatibility limitation. iOS Safari has historically had inconsistent WebRTC data channel support, and enterprise networks frequently block WebRTC signaling ports or the STUN/TURN endpoints needed for connection establishment. A sender using instant.io cannot know whether a recipient's environment supports WebRTC until the transfer fails.
A TURN server is not included in the repository. Operators running a self-hosted instance must obtain and configure TURN credentials separately, which is a non-trivial infrastructure step. Without TURN, users behind symmetric NAT cannot connect to peers and transfers silently stall. The README mentions this explicitly and provides the path secret/index-sample.js as the template for TURN configuration.
The package.json marks the package as private, indicating the repository is not intended for consumption as an npm module. Its value is as a deployable server application, not as a library. The devDependencies include nodemon for development process management and watchify for incremental JavaScript rebuilds, but neither is needed for a production deployment.
How instant.io compares to traditional BitTorrent clients with web interfaces
Transmission is a desktop BitTorrent client that includes a web interface accessible from a browser. The fundamental difference is architecture: Transmission runs as a server-side daemon on a machine the user controls, using standard TCP/UDP BitTorrent connections. instant.io runs entirely in the browser on the end user's machine, using WebRTC instead of TCP/UDP.
Transmission's approach means transfers continue after the browser tab is closed, because the daemon keeps seeding. instant.io transfers stop when the sending browser tab is closed, because the sending peer disappears from the swarm. For large files or long transfers, this is a meaningful operational difference. Transmission also supports the full range of BitTorrent clients as peers without any WebRTC requirement, while instant.io's sender and receiver both need WebRTC support to connect to each other.
The package.json also lists rollbar at 2.26.5 as a runtime dependency for error tracking, which indicates the hosted instant.io service collects error reports. Operators running a self-hosted copy should review that dependency if they have data handling requirements, since rollbar transmits client-side error data to a third-party service by default. The nginx.conf and supervisor.conf files in the repository suggest the canonical deployment uses Nginx as a reverse proxy with Supervisor managing the Node.js process.
Editorial conclusion
instant.io is appropriate for ad-hoc file sharing where both parties have a supported browser and neither wants to install software. It is not appropriate when recipients may be on iOS mobile Safari or in environments that block WebRTC, because the WebRTC transport will fail silently in those cases. Anyone who needs to share files reliably with unknown recipients should verify browser support first. Self-hosters should also budget time for setting up a TURN server if they expect users behind firewalls or NAT, since the README notes that the TURN configuration is required for NAT traversal.
Frequently asked questions
How do I use instant.io to share a file?
Open instant.io in a supported browser (Chrome, Firefox, or Opera), drop a file onto the page, and copy the magnet link or torrent link that appears. Send that link to the recipient, who opens it in instant.io to start downloading directly from your browser.
What is instant.io?
instant.io is a web application that transfers files peer-to-peer using WebTorrent, which runs the BitTorrent protocol over WebRTC. No installation is required; both the sender and receiver use a supported browser. The README describes the project as a beta.
Does instant.io work reliably?
instant.io requires both parties to use a WebRTC-capable browser such as Chrome, Firefox, or Opera. The README describes the project as a beta. Transfers between users behind strict NAT or firewalls may fail unless a TURN server is configured, which is not provided by default.
Official sources
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.
[](https://hysenlabs.com/projects/webtorrent-instant-io)