Cross-Device Transfer

Send Files Between Your Phone and PC Without a Cable

Plugging in a USB cable, emailing yourself a photo, or messaging a file to your own number are all workarounds for a problem that a browser can solve directly: getting a file from your phone to your computer, or back.

The workarounds people default to, and why they're clunky

USB cables work, but only if you have the right cable on hand and your OS cooperates with file transfer mode. Emailing a file to yourself or messaging it through a chat app works, but it round-trips through a third-party server and often re-compresses images or video in the process. None of these are broken exactly — they're just workarounds for the absence of a direct pairing mechanism between two devices you already own.

Pairing a phone and a computer directly

Open /create-session on one device — say, your laptop — and it generates a session ID along with a QR code. On your phone, open /join-session and either scan the QR code or type in the session ID. Once paired, the two devices negotiate a WebRTC data channel and files stream directly between them, encrypted with AES-256-GCM the whole way.

Because this runs over the internet rather than requiring both devices on the same local Wi-Fi network, it works even if your phone is on mobile data and your laptop is on a completely different connection — useful if you're not on the same router, or your phone is tethered rather than on Wi-Fi.

This also means it works across long distances, not just across a room: sending a file from a phone on one continent to a laptop on another works the same way it does across a kitchen table, since nothing about the session model depends on physical proximity.

A CLI option for repeat transfers

If you find yourself moving files between the same two machines often — say, a build server and your phone for quick checks — the CLI's srift quick-share <file> command produces a standing https://srift.app/d/<token> link you can bookmark or send yourself once, then reuse whenever a new file needs to go out, without redoing the QR-scan pairing flow each time.

The everyday cases this replaces

Getting a batch of camera-roll photos off a phone and onto a computer for editing is one of the most common reasons people reach for a cable in the first place — a browser session handles this without needing to find the right cable or wait for a photos app to sync. Grabbing a PDF or a form you filled out on your phone and getting it onto your work laptop for printing is another: no messaging yourself an attachment required.

It also works in the other direction — sending a document from your computer to your phone so you have it on hand while traveling, without needing cloud sync services like iCloud or Google Photos to be configured and signed in on both ends.

What can still get in the way

Some very restrictive networks (locked-down corporate Wi-Fi, certain hotel or airport captive portals) block the UDP traffic WebRTC prefers for a direct connection. Srift falls back to a WebSocket relay in that case, which is more tolerant of restrictive networks, though it means the encrypted file passes through a relay server instead of going device-to-device directly.

Battery and screen-lock behavior on mobile devices can also interrupt a transfer — some phones aggressively suspend background browser tabs to save power. Keeping the browser tab in the foreground on the phone side for the duration of the transfer avoids this on most Android and iOS versions.

One more honest caveat: browser-based transfer depends on both devices actually having a modern, up-to-date browser. Very old Android WebView-based apps or outdated browser versions can have inconsistent WebRTC support, which is worth keeping in mind if a transfer that normally works suddenly fails on one specific device.

Frequently asked questions

Related guides

Try it yourself — no account required

Open Srift in your browser or run the CLI. There's nothing to install to receive a file, and nothing to sign up for to send one.