Clipboard sync, searchable history and file transfer — across your computers and phone.
Mac, Windows, Linux and Android, without a shared account. Use the Android app
to send and receive files on your local network, or scan a code to use the phone web page.
Download · Website · Features · 简体中文 · Gitee mirror
If PasteFerry helps you, a ⭐ star helps more people find it.
Universal Clipboard needs the same Apple ID and both Macs close by. AirDrop makes you accept every time. Messaging yourself means manual downloads and your files on someone else's server. With one Mac and one Windows PC, none of the built-in options work.
With PasteFerry you pair two computers once. After that, copy on one and paste on the other. Everything you copied stays in your history: press ⌥V (Alt+V on Windows and Linux) to find it and paste it into the app you're using.
| PasteFerry | Universal Clipboard | AirDrop | Chat apps | |
|---|---|---|---|---|
| Different Apple IDs | ✓ | — | Needs accepting | ✓ |
| Different networks (home ↔ office) | ✓ | — | — | ✓ |
| Paste right away, nothing to accept | ✓ | ✓ | — | — |
| Between Mac and Windows | ✓ | — | — | ✓ |
| Files and whole folders | ✓ | Unreliable | ✓ | Zipped |
| History of what you copied | ✓ | — | — | Scroll back |
| Only your devices can decrypt content | ✓ | ✓ | ✓ | — |
- Text, rich text, images, files and whole folders. What you copy is what comes out on the other side.
- Size-aware transfer. Anything under 50 MB (adjustable) is sent as you copy; larger files sync as a record you fetch when you need them.
- Nothing lost while offline. What you copy meanwhile lands in the other computer's history once it's back.
- Open Send Files and your paired computers appear on a radar. Drop files or whole folders onto one and they go straight to it.
- Any size. Progress, speed and time left are shown; if the connection drops, the transfer resumes where it stopped, and every file is checked with SHA-256.
- Received files go to Downloads (changeable) and stay out of your clipboard history. Desktop apps need 2.5 or later; Android needs 2.8 or later. Android works on the local network.
- Someone else's computer doesn't need pairing: add them as a contact with a one-time contact code, then drop files on their avatar, with a short note if you like.
- They decide. Every batch shows a request (who, which files, your note) and arrives only once accepted; trusted contacts can be set to accept automatically.
- You decide who can send: no one, contacts only (default), or everyone on the local network for 10 minutes.
- Contacts only exchange files and images. They never see your clipboard, history or other devices. On different networks, both sides turn on the service. Both computers need 2.6 or later.
- Press ⌥V (Alt+V on Windows and Linux) in any app and your history appears in the middle of the screen.
- Type to search — Chinese text matches by pinyin, too.
- Press 1–9 or Return and the item is pasted where your cursor was; ⇧↩ pastes plain text, ⌘↩ only copies. Change or turn off the shortcut in Settings.
- History of the last 3 days (adjustable) from all your computers, filtered by text, links, images or files. Rest the pointer on an item to see the full text, a larger image or every file name.
- Favorites: star what you reuse to keep a copy. Favorites never expire and survive clearing your history.
![]() |
![]() |
- Settings → Appearance lists the built-in themes (Default and Pixel) and your custom ones, with light, dark or match-the-system.
- Pixel uses a bitmap font, notched blocks and bevelled buttons on a neutral graphite or paper palette with a pixel-green accent. A night or daytime scene sits in the header, a campfire or small house at the bottom of the sidebar, empty pages get pixel illustrations, and Send Files flies a paper plane and bursts into stars when it's done. CRT scanlines are optional.
- Custom themes: duplicate a built-in theme, import or export
.pasteferry-theme.jsonfiles, delete the ones you don't need. Saving checks text contrast and warns when something would be hard to read. - Ask an AI to make one:
pasteferry-cli mcplets Claude, Cursor and other MCP apps design, check and apply a theme (see below). - A theme applies only to the device you set it on (on a computer, the main window and quick paste) and isn't synced. The Android app picks its own theme in its Settings → Appearance.
- Runs in the background, starts at login, recovers from crashes; checks for updates and installs them after you confirm.
- 18 interface languages: English, Simplified Chinese, Traditional Chinese (Taiwan and Hong Kong), Japanese, Korean, Arabic (right to left), German, French, Spanish, Portuguese (Brazil), Italian, Russian, Ukrainian, Polish, Turkish, Vietnamese and Indonesian.
Everything in PasteFerry rests on two computers talking to each other directly: what you copy goes from one to the other, not through anyone's server.
flowchart LR
A["Computer A<br>copy here"] -- "signaling: exchange connection info" --> S[("Official service<br>or your own server")]
B["Computer B<br>paste here"] -- signaling --> S
A <== "direct, NAT hole punching · DTLS end-to-end" ==> B
A -. "only if that fails: encrypted relay" .-> S
- No server on the same network. Computers find each other over mDNS and pair with a code.
- Across networks the server only introduces them. The official service or your own server helps the two computers exchange connection details; then they punch through NAT and connect directly (WebRTC, built on pion).
- Direct even on multi-uplink networks. Offices with two ISPs pick an uplink per destination. PasteFerry asks several STUN servers from one shared UDP port, learns its address on every uplink and sends them all to the peer, and decides which side sends first to get past routers that lock a port. A Mac on an office network with four uplinks connects directly to one on a home connection.
- Relay only as a fallback. The relay forwards end-to-end encrypted packets it can't read, and the connection switches back to direct once punching succeeds while idle.
- Fingerprints checked at pairing. Both screens show the same two lines, and every later message is signed, so the server can't impersonate your device.
- Tested in a lab on every commit. The NAT traversal lab uses Linux network namespaces and iptables to model home routers, multi-uplink networks, port-randomizing NATs and more — 16 scenarios run against PasteFerry's real connection code.
Details: how it works, and the design notes (Chinese) on NAT traversal on multi-uplink networks and local network mode.
New here? The quick start walks through it with screenshots.
1. Install the app on each computer from the download page:
- Mac (macOS 13+): Apple silicon or Intel; a universal build runs on both.
- Windows 10/11: installer or portable zip.
- Android 10 or later, arm64: APK (beta; Android asks before installing it). Turn on Devices → Phone web transfer on the computer, then scan the code with your phone, or install the APK and pair it like another computer.
- Any phone or tablet, nothing to install: turn on Devices → Phone web transfer on the computer and scan the code shown there. The page in the phone's browser lists the records from the computer, copies a text to the phone, and sends text, photos and files back. It works on the same local network and the contents are encrypted.
- iPhone and iPad: there is no app yet, because distributing one needs an Apple developer certificate. Use the web page above instead; it does the same things in Safari.
- Linux (X11, or Wayland with XWayland):
.debfor Ubuntu and Debian (x64, ARM64), ortar.gzfor other distributions (x64, ARM64) — extract it and run./PasteFerry/install.shto add it to the app menu.
The Mac app isn't notarized by Apple and the Windows app isn't code-signed yet: on Mac, allow it once under System Settings → Privacy & Security → Open Anyway; on Windows, click More info → Run anyway. Then click Turn on background sync, and allow PasteFerry when Windows Firewall asks, or when macOS asks to find devices on your local network. To let quick paste paste for you on a Mac, press ⌥V, click Allow… and turn PasteFerry on under Accessibility.
2. Pair. On one computer, Devices → Add device → Show a code; on the other, Enter a code. Confirm only if both screens show the same two fingerprint lines. From then on, copy on either one and paste on the other.
3. Across networks (optional), pick a way to connect:
| Way | Best for | You need |
|---|---|---|
| Official service | Different networks, no server of your own | Turn on Use the service in Settings → Connection on each computer (off by default). Relay, used only when a direct connection fails, currently allows 100 MB a day; direct traffic doesn't count |
| Same network | Computers behind one router | Nothing |
| Public server | Full control | A Linux VM with a public IP; the smallest is enough |
| Tailscale | Across networks without a server | Tailscale on every computer; enter the other's Tailscale address when pairing |
Self-hosting takes one install command; see the server deployment guide (Linux, macOS, Windows, Docker).
| Requirement | |
|---|---|
| Mac app | macOS 13 Ventura or later; Apple silicon and Intel |
| Windows app | Windows 10 and 11, x64 |
| Linux app | x64 or ARM64; an X11 desktop, or Wayland with XWayland (GNOME and KDE have it by default); GTK 3 |
| Server | Optional: Linux (x86_64, ARM64; systemd or Docker), macOS, or Windows 10/11 x64 |
| Android app | 10 or later, arm64; beta, so Android asks before installing it |
| Phone web page | Any phone or tablet on the same network; nothing to install |
| iPhone / iPad | No app: distributing one needs an Apple developer certificate, and iOS doesn't let apps watch the clipboard in the background. Use the web page instead |
The official tap installs the desktop app and links its bundled CLI into your command path:
brew tap baiyuze/tap
brew install --cask baiyuze/tap/pasteferryIf PasteFerry was installed manually, quit it and move the existing /Applications/PasteFerry.app
out of the way first. Keep application data to preserve pairings, history and settings.
Open the installed app, enable background sync and grant the requested permissions.
To update through Homebrew, including this app's built-in updater support:
brew update
brew upgrade --cask --greedy baiyuze/tap/pasteferryUninstall with brew uninstall --cask baiyuze/tap/pasteferry; user data is preserved.
See the official tap.
Desktop packages include pasteferry-cli. Homebrew links it into your command path.
For a manually installed Mac app, use /Applications/PasteFerry.app/Contents/Helpers/pasteferry-cli;
on Windows, use pasteferry-cli.exe from the installation folder; on Linux, use pasteferry-cli.
pasteferry-cli version
pasteferry-cli -json status
pasteferry-cli -json devices
pasteferry-cli -json history
pasteferry-cli -json config getversion works without the background service. Other queries read the current user's running service.
Put -json before the command to receive an ok/data or ok/error JSON response.
History returns the latest 20 record summaries. Without -json, output remains human-readable.
Use -data-dir DIR to select an existing running instance; the CLI does not start a service.
See the CLI JSON reference for the supported read-only queries and output format.
pasteferry-cli mcp is an MCP server (2.10 and later). Add it to an AI app, then ask for a theme — for example "make me a cyberpunk theme". The AI reads the theme format, picks colors, checks contrast, saves the theme and applies it. It can only read and write themes and background images; it never sees your history, devices or contacts. Settings → Appearance → Ask AI to make a theme shows the configuration with this computer's path filled in.
Claude Desktop and Cursor (~/.cursor/mcp.json):
{
"mcpServers": {
"pasteferry": {
"command": "/Applications/PasteFerry.app/Contents/Helpers/pasteferry-cli",
"args": ["mcp"]
}
}
}Claude Code:
claude mcp add pasteferry -- /Applications/PasteFerry.app/Contents/Helpers/pasteferry-cli mcpOn Windows the command is %LOCALAPPDATA%\Programs\PasteFerry\pasteferry-cli.exe; with the Linux .deb it's /usr/bin/pasteferry-cli. The background service must be running. See Make a theme with AI for the tools and more examples.
- How it works: architecture, NAT traversal, security model, fallbacks, lessons learned
- Troubleshooting and known limitations
- Make a theme with AI (MCP)
- Guides with screenshots: quick start · official service · same network · public server · Tailscale
- Server deployment, building from source
- Design notes (Chinese): NAT traversal on multi-uplink networks, local network mode, quick paste and favorites, Send Files, Windows client, themes, pixel theme, MCP
- Privacy, security, official service protocol
- Changelog
Please read the contribution guidelines before opening a pull request. Keep each PR focused on one independent goal, including its related tests and documentation. Discuss larger changes in an issue first and describe the checks you actually ran in the PR template.
PasteFerry is free and open source. If it helps you, a ⭐ star is the best support and helps others who need it find it. Questions and ideas are welcome as issues.
PasteFerry is free and open source under the GNU AGPL-3.0: anyone, companies included, can use and modify it, but distributing it or offering a modified version over a network means publishing your source under the same license. See LICENSING.md for details. Versions 1.2.0 and earlier remain under the MIT License.


