How Benoxy works
Benoxy sends files and text from one of your devices to another straight through the browser. There is nothing to install and no account to create. This page explains what happens behind the QR code, what is encrypted, and what our servers can and cannot see.
1. Pairing with a QR code
When you open benoxy.com, your browser creates a temporary session with a random identifier and a random 256-bit encryption key. Both are put into the link shown as a QR code:
https://benoxy.com/#p=<session id>&k=<encryption key>
Everything after the # is the βfragmentβ of the link. Browsers never send the fragment to a
web server, so the key stays on the devices that open the link. After reading it, the second device removes
the key from its address bar and keeps it only in that browser tab.
2. A direct connection between the devices
To find each other, the two browsers briefly exchange technical connection details (network addresses and the parameters of the connection) through a signaling server. Benoxy currently uses the public PeerJS server for this step. Once the devices have agreed on a route, a direct WebRTC connection is opened between them and your data flows over it. The signaling server is not involved in the transfer itself.
3. Two layers of encryption
- WebRTC transport encryption (DTLS) protects every connection, as required by the WebRTC standard.
- End-to-end encryption with your key. On top of that, Benoxy encrypts every message β text, file names and file contents β with AES-GCM using the 256-bit key from the link. Because the signaling server never sees that key, it could not read your data even if it tried to insert itself into the connection. Tampered or reordered data is rejected.
4. Sending and receiving
Files are read from your disk in small pieces, encrypted and sent one piece at a time, so even large files don't have to fit in memory on the sending side. The receiving device checks that every piece arrives in order and that the final size matches before offering the Save button. The progress bar on the sender shows data confirmed by the receiver, not just data queued for sending.
Received files are kept in the receiving browser's memory until you save them or close the page. Nothing is written to a server, and nothing is written to your disk unless you click Save.
5. Who can join a session?
The link is the key to the session. The first device that opens it is connected automatically β that is the phone you scan the code with. After that, any other device must be approved on the device that shows the QR code, even while the first one is temporarily away. Only share the link with yourself or people you trust, and press End session if you think it leaked.
6. Sessions that survive a locked screen
When a device joins, it creates a random device identifier that is only ever sent inside the encrypted connection. If the connection drops β the phone locks, you switch apps, the network changes or a page reloads β the devices notice within seconds, and the device that joined reconnects automatically as soon as Benoxy runs on it again. The device showing the QR code recognises its identifier and lets it back in without asking.
This works for 10 minutes after the devices were last in contact. To make it possible, the joining browser keeps the session link, its key, the device identifier and the other device's name in its local storage. Benoxy deletes them once the session has expired (at the latest the next time you open Benoxy), or immediately when you press End session or Leave.
What our servers can and cannot see
| Server | Can see | Cannot see |
|---|---|---|
| Website hosting (benoxy.com) | Standard request logs when the page loads (IP address, browser type) | The session key, your files, file names, text |
| Signaling server (PeerJS) | Random session identifiers, IP addresses and connection details exchanged during pairing | The session key, your files, file names, text |
Limits worth knowing
- Different networks. A direct connection is not always possible, for example between a phone on mobile data and a computer on a strict company network. Connecting both devices to the same Wi-Fi is the most reliable option. See connection troubleshooting.
- Locked screens and app switches. Phones pause pages in the background, which interrupts the connection. When you come back to Benoxy within 10 minutes of the devices' last contact, it reconnects by itself and sends any interrupted file again from the beginning. During a large transfer, keep the screen on β Benoxy asks the browser to keep it awake where supported.
- File size. Each file can be up to 500 MB. Received files are held in the browser's memory, so very large files are best sent to a computer rather than an older phone.
- Trust in the page. As with any web application, the encryption runs in code delivered by benoxy.com. The page loads no third-party scripts, and its Content-Security-Policy only lets it run code from benoxy.com and open network connections to benoxy.com and the signaling server β besides the direct connection to your other device.