chirpfile

Don't paste API keys into Slack.

Slack history persists. Email is indexed. Screen shares leak. Send a one-time secret to the device next to you - encrypted in the browser, key transmitted as sound, burned after first read.

The everyday secret-sharing problem

You're in a pairing session and your colleague needs the staging database password. Or you're contracting for a client and they need the AWS access key. Or you're showing someone a quick demo and the OAuth client ID has to land on their laptop.

The usual options all have permanent-storage problems:

What you actually want

How chirpfile does this

You type or paste the secret in your browser. If it's under 120 characters (which covers virtually every API key, OAuth token, database password, JWT), the secret is encoded directly into the chirp. No server touched. No upload. Pure sound between devices.

For longer secrets (multi-line credentials, JSON tokens, signed payloads), the secret is encrypted with AES-128-GCM in your browser, the ciphertext goes to a relay, and the decryption key travels via the chirp. The relay holds ciphertext it cannot decrypt. After download, the relay deletes its copy. After 15 minutes, anything unclaimed is deleted regardless.

Either way: the secret only exists on your device, on the recipient's device, and (briefly, encrypted) on the relay. Never in chat history, never in inbox backup, never in a cloud doc.

How it compares to other secret-sharing tools

Property chirpfile Bitwarden / Tresorit Send
Key channel Sound (out-of-band) URL fragment
Risk if link is forwarded None - no link contains the key Recipient + anyone who got the URL
Account required No Bitwarden: paid tier ยท Tresorit: optional
Burn after read Yes Yes
Physical presence required Yes (recipient must be in audio range) No - remote works
Server can decrypt No (verifiable) No (asserted)
You can verify this yourself. Every chirpfile page runs a small audit script that wraps window.fetch and scans every outbound request body for the active AES key. If the key were ever transmitted, the audit panel at the bottom of the page would alarm. Read the script at /public/audit.js - about 230 lines of plain JavaScript. It's the exact code running in your browser right now.

Try it now

Open chirpfile.com on both devices. Type the secret. Listen for the chirp.

Open chirpfile

Common questions

When should I use chirpfile vs a password manager?
Password managers (1Password, Bitwarden, Dashlane) for ongoing team-shared secrets. chirpfile for one-time handoffs: a contractor needing temporary access, a colleague needing a key in a meeting, sharing with someone outside your password-manager team, demos.
Is sound really a secure channel? Couldn't someone record it?
A recorder in the room can capture the chirp. The threat model is "no one else in the room is trying to attack you" - which matches the natural use case (you and a colleague in a meeting, you and a client at a table). If you're in a public space where someone might be recording, ultrasound mode reduces the audible signature but doesn't fully defeat a dedicated attacker with a wideband mic. For high-threat scenarios use proper key escrow.
Does the key ever appear in any log?
No - and the audit panel at the bottom of every chirpfile page lets you verify this in real time. It wraps window.fetch and scans every outbound body for the key. If the key were ever sent over the network, the alarm would fire.
What about multi-line secrets like a JSON config or a long token?
For text over 120 characters, the data is encrypted in your browser and uploaded as a blob. The encryption key still travels via sound. Up to 15 MB free, 1 GB on Pro.
Can the recipient screenshot the secret?
Yes - chirpfile doesn't claim to defeat the recipient. If you don't trust the recipient with the secret, no transfer tool can help. The point is preventing the secret from being intercepted in transit and from persisting in chat history, inbox, or cloud storage where third parties have access.