Loading tool…

Transfer Studio — send files peer to peer in the browser

Free P2P file sharing online with a 6-digit code or QR. WebRTC sends files straight phone ↔ laptop — nothing uploaded to a server, no size limit from us, bi-directional while you stay connected. Nothing is uploaded.

How to use P2P file transfer

  1. 1. Start or join a session. Host taps Start a Session for a 6-digit code and QR. Guest opens the link, scans the QR, or types the code and connects.
  2. 2. Keep the tunnel open. When both browsers connect over WebRTC, the drop zone appears. The DataChannel stays open after each file — either side can send next.
  3. 3. Drop files. Drag one or many files. They queue and stream in 64 KB chunks with live progress and speed. Received files download automatically.
  4. 4. Re-download from the log. The session transfer log lists every sent and received file while this tab stays open, with Re-download for received blobs.

About this tool

Most “send a file” sites upload your bytes to a cloud bucket first. Transfer Studio never does that: two browsers negotiate a WebRTC peer connection (via PeerJS on the public PeerServer for signaling only), then file bytes travel on a direct encrypted DataChannel — often staying on your LAN when both devices share Wi‑Fi. Pair with a 6-digit room code, a share link, or a QR that embeds our mark. No account, no watermark, no artificial file-size cap from us.

Why P2P beats upload-then-download

WeTransfer, Drive, and email attachments store a copy on someone else’s disk. That means wait-for-upload, wait-for-download, size quotas, and a privacy surface you did not ask for. Peer-to-peer file sharing streams chunked ArrayBuffers straight between tabs. On the same Wi‑Fi, traffic often never leaves your router — LAN speeds, not your upstream ISP cap.

How pairing works (code, link, QR)

The host generates a six-digit room and registers a PeerJS id prefixed with p2phub- so it does not collide with random peers on 0.peerjs.com. Guests join with that code, open ?room= on the URL, or scan the branded QR. After the handshake, signaling steps aside; only STUN (and rare TURN fallbacks on PeerJS cloud) help NAT traversal.

Chunking, progress, and history

Each file starts with a META packet (name, size, mime, fileId), then 64 KB CHUNK packets, then DONE. The receiver assembles ArrayBuffers into a Blob, triggers download, and clears chunk RAM. The in-session log keeps Sent/Received rows with size, time, and Re-download while the tab lives.

Snapdrop, AirDrop, and WeTransfer — when to use this

Need Apple↔Android or Windows↔phone without Apple IDs? This is the browser AirDrop-style path. Prefer Snapdrop but want a stable PureDevKit URL, QR with logo, and SEO landings? Same idea, our stack. Need a download link that works after you close the tab? Use a cloud tool — P2P requires both peers online for the transfer.

Privacy and limits

File contents are not uploaded to PureDevKit. Signaling sees peer ids, not your files. Very strict corporate NATs may fail direct P2P; try the same network or a mobile hotspot. Huge files need enough RAM on the receiver to assemble the Blob before download — keep other heavy tabs closed for multi‑GB transfers.

Code examples

Pairing link

https://puredevkit.com/tools/p2p-file-transfer/?room=482910

Related presets

Frequently asked questions

Related tools

All tools