AirDrop for every device. Send files between iPhone, Android, Mac, Windows & Linux — directly, end-to-end encrypted, at full Wi-Fi speed. The other side doesn't even need the app: any browser works.
No account. No ads. No cloud in the middle. Free & open source.
🌐 bishare.app · 📥 All downloads · 🚀 Try it in your browser right now
Every platform solved file sharing — for itself. AirDrop stops at the Apple wall. Quick Share skips iPhones. SHAREit buried the feature under ads. WeTransfer uploads your file to a server across the continent so it can come back down the same street. Meanwhile the two devices are three meters apart.
BIShare is the missing neutral ground: one app for all five platforms, where the file travels directly device-to-device over your own network — and when the other person has nothing installed, they receive it in a plain browser tab.
| BIShare | AirDrop | Quick Share | LocalSend | SHAREit | WeTransfer | |
|---|---|---|---|---|---|---|
| iPhone ↔ Android ↔ Windows ↔ Mac ↔ Linux | ✅ | ❌ Apple only | ❌ no iOS | ✅ | ✅ | ✅ |
| Direct LAN transfer (no cloud upload) | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Receiver needs no app (browser receive) | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Remote share link when you're apart | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
| End-to-end encrypted | ✅ | ✅ | ✅ | ❌ | ❌ | |
| No ads, no account required | ✅ | ✅ | ✅ | ✅ | ❌ | |
| Open source | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ |
| Group rooms · clipboard sync · QR Beam | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
LocalSend is excellent open-source software and an inspiration — BIShare's different bets are the no-app browser path, remote links for far-away recipients, and a Rust protocol core shared across every platform.
Measured on ordinary hardware (Wi-Fi 5 network, mid-range phones), release builds:
| Path | Throughput | 1 GB video takes |
|---|---|---|
| BIShare, same Wi-Fi | 40–50 MB/s | ~25 seconds |
| Typical cloud service (30 Mbps home upload) | ~3.7 MB/s up, then the download | ~5 minutes before the receiver can even start |
The speed isn't magic — it's the absence of a detour. The file crosses your router once instead of crossing the internet twice. Crypto runs on hardware AES in a Rust core, so encryption is never the bottleneck — we learned that lesson the hard way when a build flag once silently disabled it.
| 🚀 Direct LAN transfer — device-to-device at Wi-Fi speed, nothing uploaded | 🔒 End-to-end encrypted — X25519 key exchange + AES-256-GCM per file |
| 🌐 Browser receive & send — the other side needs zero installs | 🔗 Remote share — link + QR + 6-char code, auto-expiring |
| 📡 Works offline — phone hotspot is enough; no internet required | 🔳 QR Beam — no network at all: file streams screen → camera as animated QR |
| 👥 Rooms — live group sharing with everyone in one place | 📋 Universal clipboard — copy on one device, paste on another |
| 📥 Inbox & history — gallery, search, save to Photos, CSV export | 🖥️ System tray, drag & drop — real desktop citizenship on Win/Mac/Linux |
| 🌍 13 languages — easiest contribution: add yours! | 🙅 No account, no ads, no tracking — ephemeral by design |
| Platform | Get it |
|---|---|
| iPhone / iPad / Mac | App Store |
| Android | Google Play · APK from Releases |
| Windows | BIShare-*-windows-x64.zip |
| Linux | BIShare-*-linux-x64.tar.gz |
| Any browser | Nothing to install — bishare.app/transfer |
Windows via Scoop:
scoop install https://raw.githubusercontent.com/BIShare-project/bishare-flutter/main/packaging/scoop/bishare.jsonBIShare picks the best path automatically, so sending is always one step:
- Same Wi-Fi / hotspot — devices find each other via mDNS and the file streams directly, end-to-end encrypted. Works with zero internet.
- Far apart — you get a link, QR code, and 6-character code; the recipient opens it in any browser. Links expire on their own.
- No network at all — QR Beam turns a small file into an animated stream of QR codes; the receiving camera rebuilds it. Screen → camera, nothing else.
flowchart LR
subgraph you["Your device"]
UI["Flutter UI<br/>(one codebase, 5 platforms)"]
FRB["flutter_rust_bridge"]
CORE["Rust core<br/>X25519 · AES-256-GCM<br/>framing · discovery"]
UI --> FRB --> CORE
end
CORE -- "LAN · mDNS + TCP<br/>40–50 MB/s, E2E" --> PEER["Their device<br/>(app)"]
CORE -- "expiring link<br/>E2E container" --> BROWSER["Their browser<br/>(no app)"]
CORE -- "QR Beam<br/>screen → camera" --> CAM["Their camera<br/>(no network)"]
Private by default: nearby transfers never leave your network, there's no account, nothing lingers on a server, and the crypto lives in a single Rust crate shared by every platform — one implementation to review instead of five. Details in SECURITY.md.
Prerequisites: Flutter SDK (Dart ≥ 3.11), Rust toolchain, plus the platform toolchain you target (Xcode / Android Studio / Visual Studio / GTK+Clang).
flutter pub get
dart run build_runner build --delete-conflicting-outputs
flutter run -d macos # or: ios | android | windows | linuxFirst build compiles the Rust core, so it takes a few minutes. After that, builds are incremental.
flutter analyze # static analysis
flutter test # unit tests (incl. crypto round-trip vectors)lib/
├─ app/ # app shell, router, bootstrap
├─ core/ # crypto, receiver server, identity, rust facade, UI kit
├─ features/ # feature-first slices:
│ ├─ send/ receive/ nearby/ qr_beam/ # transfer paths
│ ├─ remote/ room/ clipboard/ # link share, groups, clipboard
│ └─ inbox/ history/ file_manager/ … # received files & records
└─ src/rust/ # generated flutter_rust_bridge bindings
rust/ # native crate (bishare_ffi) — crypto + protocol
assets/translations/ # 13-locale JSON catalogs
Deep dive: ARCHITECTURE.md
Three ways in, smallest first:
- 🌍 Add or improve a language — no build needed, just a text editor and ~15 minutes. 13 languages ship today; yours could be next. docs/TRANSLATIONS.md has the 3-edit walkthrough.
- 🐣 Pick a
good first issue— scoped, mentored, and labeled by area. - 🧪 Test your platform combo — five platforms × transports means real devices always beat our matrix. An issue titled "Pixel 6 → Fedora 40: X happened" is genuinely valuable.
Workflow: fork → branch → flutter analyze + flutter test → PR. Keep
user-facing strings localized. Full guide in
CONTRIBUTING.md; direction lives in the
roadmap. For larger features, open an issue first so we can
align.
Does the other person need BIShare? No. On the same network they can receive (and send) from a plain browser tab via bishare.app/transfer. Far away, they just open your link.
Does it work iPhone → Windows? Android → Mac? Yes — any direction between iOS, Android, macOS, Windows, Linux, and browsers. That's the point.
Is there a file size limit on local transfers? No. LAN transfers are bounded by the receiver's disk, not by us. Multi-gigabyte videos are the normal case.
What does the server see on a local transfer? Nothing — there is no server in the path. Discovery and transfer stay on your network. Remote share links use end-to-end encrypted containers with expiry.
How is this different from LocalSend? See the comparison — short version: browser receive with no app, remote links for far-away recipients, rooms/clipboard/QR Beam, and a Rust protocol core. Use whichever fits; both beat the cloud detour.
| Repo | What it is |
|---|---|
bishare-protocol |
The Rust protocol + crypto crate this app embeds |
bishare-web |
bishare.app — website, browser transfer, rooms |
MIT — free to use, modify, and distribute.
If BIShare saved you an email-to-self today, a ⭐ helps other people find it.
Website · Download · App Store · Google Play · Web App
Made with Flutter & Rust · bishare.app