How it works
What happens when you copy, how computers connect, and what happens when they can’t.
What happens when you copy
Text, images and files all take the same path.
Notice
The background service sees that the clipboard changed.
Send
Text and files up to 50 MB go over right away. Larger ones are sent as a record first.
Paste
The other computer saves it locally and puts it on the clipboard. You paste a real file.
How PasteFerry connects
On the same network, the computers find each other directly. On different networks, a server introduces them so they can try to connect directly, and relays only if that fails. Content is always encrypted.
- Direct WebRTC, DTLS encrypted Data moves only between your computers
- Signaling and relay service Signaling, STUN, TURN relay
- Relay: only if direct fails
Direct on office networks too
Office networks with several uplinks used to go through the relay. PasteFerry finds every uplink and lets the other side try each one.
What it does
- One shared port. All connections use the same UDP port.
- Every uplink probed. It asks seven servers at once and gets one address per uplink.
- All of them sent to the other side. The other computer tries each one until one gets through.
- Retry direct while idle. The relay keeps things working, and it switches to direct when idle.
Tested on real network setups
Every commit is tested automatically on simulated networks.
| Scenario | Result |
|---|---|
| Single uplink ↔ home router | Direct |
| Two uplinks, previous version (control) | Relay |
| Four uplinks ↔ home router | Direct |
| Two uplinks ↔ two uplinks | Direct |
| Two uplinks ↔ NAT that randomizes ports | Relay |
| Blocked at first, network recovers later | Relay, then direct |
| No server, same subnet | Direct |
| No server, subnets isolated from each other | No connection |
Measured: a Mac on a 4-uplink office network and one at home relayed at 0.6 MB/s before. Now they connect directly.
Details are in the design document (in Chinese).
When things go wrong
The common cases are handled.
- Can't find the other computer on the network
- Enter its address when pairing; it's remembered afterwards.
- No direct connection
- Data is relayed through the server, still encrypted.
- The other computer sleeps or drops off
- It reconnects on its own when it's back.
- Disconnected while sending files
- The transfer resumes where it stopped.
- A file name Windows doesn't allow
- Bad characters become full-width ones, so the name still reads the same.
- Copying a password
- On Windows, anything copied from a password manager is skipped.
Specifications
| Version | 2.10.2, released |
|---|---|
| Mac app | macOS 13 Ventura or later; separate downloads for Apple silicon and Intel, about 25 MB each, no Rosetta; a universal version for both is about 47 MB |
| Windows app | Windows 10 and Windows 11, x64; installs per user, no administrator rights; about 23 MB download |
| Linux app | x64 and ARM64; .deb (Debian, Ubuntu and similar) or tar.gz (other distributions), about 22 MB; needs an X11 desktop, or a Wayland desktop with XWayland (GNOME, KDE and others include it by default); GTK 3 |
| Server | Not needed with Service or on the same network. To run your own: Linux x86_64/ARM64, macOS, or Windows 10/11 x64. |
| Languages | English, Simplified Chinese, Traditional Chinese (Taiwan and Hong Kong) and Japanese; follows the system by default, switchable in Settings |
| Content | Plain text, rich text, images and screenshots, files, folders; each type can be turned off |
| Transport | WebRTC data channels, direct first with TURN relay fallback; on the same network, mDNS discovery and connection details over UDP 8788; every uplink probed on multi-uplink networks; files streamed as tar + zstd |
| Encryption and identity | End-to-end DTLS; Ed25519 device keys; every signaling message signed |
| Pairing | 6-character code valid for 5 minutes, using an alphabet without look-alikes such as 0/O and 1/I; fingerprints checked by you |
| Auto-sync limit | 50 MB by default, adjustable from 1 MB to 1 GB |
| Send Files | To one device, any size, files or whole folders; on the local network over an encrypted TCP link (both sides need 2.5.1), falling back to WebRTC when that's unavailable; WebRTC over the internet and relay; resumes after a disconnect; SHA-256 per file. Measured Mac to Linux VM, 1 GB: 144.3 MB/s; actual speed depends on the network and disks. |
| Contacts | 7-character contact code starting with F, exchanged over the local network or Service, with an optional safety code check; contacts can only send each other files and images, with a note of up to 200 characters, and each batch must be accepted; contacts never see your clipboard, history or devices; received files lose the executable bit and are quarantined on a Mac; both sides need 2.6 or later |
| History | 3 days by default, adjustable from 1 hour to 30 days; expired items removed automatically |
| Measured speed | A 20 MB file transfers in about 330 ms over a direct LAN connection, checksums matching |
| Built with | Go for the background service and server (pure Go calling Win32 on Windows and speaking the X11 protocol on Linux), Flutter for the app (one codebase for all three systems), Protocol Buffers for messages |
| License | GNU AGPL-3.0 |