Tone Transfer

How Tone Transfer works

Tone Transfer sends a file or a short message between two nearby devices using a speaker and a microphone. This page covers what actually happens when you press play, what is stored and for how long, and what to try when a transfer does not land.

Sending a file, step by step

  1. Pick a file or type a message. Open Tone Transfer on the sending device and choose a file, or type a short message. It is encrypted in your browser with AES-256-GCM before anything leaves the tab, and assigned a four-character transfer code.
  2. Open the page on the receiving device and listen. On the other device, open the same page, choose Receive, and grant microphone permission. It starts listening for the start phrase.
  3. Play the melody. Press play on the sending device. The four-character code is played as a short run of notes. Keep the devices close, in a reasonably quiet room, with the volume up.
  4. The file arrives. The receiving device decodes the notes back into the code, fetches the encrypted payload, and decrypts it locally. Files save to disk; messages appear with a copy button.

What the melody actually carries

The sound is not the file. It is a four-character code, and the file is fetched using that code. This is the single most important thing to understand about how Tone Transfer works, and it is what keeps the audio short enough to be pleasant — a few seconds rather than several minutes.

Those four characters are drawn from a 36-character alphabet, so the code is one of about 1.7 million values. That value is re-expressed as seven notes, each note standing for three bits, followed by an eighth checksum note. The notes are chosen from a pentatonic scale, which is why any code sounds musical rather than like a modem — every combination lands on notes that agree with each other.

A distinct start phrase and end phrase bracket the data notes so the receiver knows where the code begins and ends, instead of having to guess from a continuous stream. The checksum note is what stops a mis-heard melody from producing a plausible but wrong code: if the notes do not add up, the receiver rejects the read and keeps listening rather than fetching the wrong transfer. Instrument, tempo, and other flourishes only affect how it sounds — the decoder reads fundamentals, so changing the voice never changes the code.

Older codecs — ggwave, Beep FSK, Beep 2.0, and the original FSK engine — are kept on the legacy engines page for compatibility testing. Sender and receiver must be on the same engine.

The privacy model

Here is what happens to your data, stated plainly, including the parts that are less flattering.

What never leaves your device

  • Your encryption key material is generated in your browser, and encryption and decryption both happen there — AES-256-GCM through the Web Crypto API. Plaintext is never transmitted.
  • Microphone audio is analysed live on your device to pick out note frequencies. It is never recorded, buffered to a server, or uploaded.
  • The melody itself carries only the four-character code — never your file, never your key.

What is stored, and for how long

  • The encrypted file is uploaded to a relay under the transfer code. This happens on every transfer, including short typed messages.
  • It is stored as a private object with no public URL. It cannot be listed, browsed, or guessed at by crawling.
  • It is deleted the moment it is received. Downloads are one-time — the same code cannot be replayed to fetch the file twice.
  • Anything unclaimed is deleted after ten minutes.
  • No account is created, and no sign-in is required to send or receive.

What this is not

This is not end-to-end encryption. The decryption key is uploaded alongside the encrypted file so that the receiving device — which only knows the four-character code it heard — can unlock it. For the ten minutes a transfer is live, whoever operates the relay could decrypt it. It is also not peer-to-peer: the file goes through a server rather than directly between the two devices.

What that means in practice: Tone Transfer is a good way to move a photo, a document, or a link across the table without pairing anything. It is not the right tool for material where the operator of a service must not be able to read it. For that, use something built for end-to-end encryption.

When a transfer does not land

Decoding depends on the receiving microphone hearing the notes clearly, so almost every failure is an audio problem rather than a software one.

  • Nothing is detected at all. Turn the sending volume up, move the devices closer, and cut background noise. Confirm the receiving device granted microphone permission and that no other tab or application has claimed the microphone.
  • It heard something but rejected it. The checksum caught a mis-read — this is the system working. Play the melody again; the sender can replay the same code as often as needed inside the ten-minute window.
  • The transfer expired. Unclaimed transfers are deleted after ten minutes. Start a new one.
  • It was already received. Downloads are one-time. If a device already picked it up, the file is gone and a new transfer is needed.
  • Nothing works on this device. Try the legacy engines, setting both sender and receiver to the same one.

Common questions

Do both devices need an internet connection?
Yes. The sound carries the four-character transfer code, not the file itself — a melody short enough to be practical cannot carry a whole file or even a full encryption key. The encrypted payload travels over the internet through a relay, and the code is what lets the receiving device find it. Tone Transfer is not an offline or air-gapped transfer tool.
Does the receiver need to install an app?
No. Both sides are a web page. There is no app, no account, no pairing step, and no QR code to line up. The receiving device only needs to grant microphone permission.
How far apart can the two devices be?
Close enough that the receiving microphone can clearly hear the sending speaker — in practice the same table or the same small room. Background noise, low volume, and distance all reduce the chance of a clean decode. Anyone else within earshot receives the same melody, which is what makes sending to several devices at once work.
Who can read my files?
Files are encrypted in your browser before upload and are stored as private objects with no public URL, so they cannot be listed or browsed. They are deleted the moment they are received, and expire after ten minutes if nobody claims them. The relay does hold the decryption key alongside the encrypted file during that window, so this is not end-to-end encryption: whoever operates the relay is trusted. For genuinely sensitive material, use a tool that offers end-to-end encryption.
How long does a transfer last?
Ten minutes, or until it is received — whichever comes first. Downloads are one-time: once a device receives the transfer, it is deleted and the same code cannot be used again.
The receiving device did not hear the melody. What now?
Turn the sending volume up, move the devices closer together, and reduce background noise. Check that the receiving device actually has microphone permission and that no other tab or app has taken the microphone. Then play the melody again — the sender can replay the same code as many times as needed within the ten-minute window.
Does it work on iPhone and Safari?
Yes, on current versions. Both sending and receiving use the standard Web Audio and Web Crypto APIs. On mobile, playback and microphone access must be triggered by a tap, which is why sending and receiving both start with a button press.
What file sizes work?
Files up to 100 MB are supported. The audio is the same length regardless of file size, because it only carries the four-character code — a large file does not mean a longer melody. Transfer time is bounded by the upload and download instead.

Try it

Open Tone Transfer on two devices and send something across the table. The button on the home page plays a real melody, so you can hear what a transfer sounds like before sending anything.