How it works
Add files
Your device hashes them (BLAKE3) and announces an offer — a name, a size, a hash. No bytes leave the machine. Adding is announcing, not sending.
Send the string
The link carries a drop1… ticket in its fragment. Whoever
has it can find the drop and see what's offered. It's the only thing that
travels out of band.
They accept
Bytes flow device-to-device over an encrypted connection, verified chunk-by-chunk against the hash. Everyone who receives helps serve — the drop outlives the original sender.
Nothing lands uninvited: an offer is an announcement, not a transfer. Consent — a click, or a policy you set — is what moves bytes.
The protocol
iroh-drop is a small coordination protocol composed from three existing layers. It adds exactly one idea: a drop is a gossip topic where offers are announced and consent gates every transfer.
Desktop-to-desktop the relay only helps punch a direct path, then steps aside. In the browser, QUIC runs over the relay's WebSocket — still end-to-end encrypted between the two endpoints; the relay forwards bytes it cannot read.
iroh — connections
Every node is a keypair; its public key is its address. Any node can dial any other by key, with NAT hole-punching for direct paths and relays as fallback. Connections are authenticated and encrypted end to end.
tickets — invitations
A drop1… ticket packs the drop's topic id and bootstrap
hints into one base32 string. Possession is membership. There is no
account layer to revoke, expire, or leak.
iroh-gossip — coordination
The drop is a gossip topic. Offers, requests, provider announcements and withdrawals are small messages that flood through the swarm; anti-entropy sync means a late joiner sees the full history.
iroh-blobs — bytes
Files are content-addressed by BLAKE3 hash and streamed with per-chunk verification, so any peer can serve any blob and nobody can feed you tampered bytes. Every member that has a blob re-serves it.
consent — policy
The receiver's policy decides what happens to an offer: ask a human (this page's Accept button, the desktop consent card) or auto-accept under limits you choose. The default is to ask.
the wire — versioning
Kind-tagged, length-prefixed messages (postcard, wire version 2). New message kinds are additive: old nodes ignore what they don't understand, so the protocol can grow without flag days.
What is iroh?
iroh is an open-source toolkit by number 0 for direct device-to-device connections: dial any node by its public key and let the library worry about NATs, relays, and encryption. iroh-drop builds on iroh, iroh-gossip, and iroh-blobs, all of which compile to WebAssembly — which is how this page can be a real node and not a demo.
Get iroh-drop
This page
The zero-install client. Runs in any modern browser as a relay-only, in-memory node — perfect for receiving, handy for sharing smaller files.
You're using itmacOS app
Menubar + window app on Apple Silicon. Long-lived node, on-disk store, consent cards, QR sharing, LAN discovery.
Download · GitHub releases ↗Windows app
x64 build with the same daemon underneath — same drops, same tickets, same protocol as everything else on this page.
Download · GitHub releases ↗CLI
For scripts, servers, and terminals. Ships in every release, or build from source.
iroh-drop share ./slides.pdf ./photos iroh-drop receive drop1agxpfees…Releases ↗ Build from source ↗