← All tools

One-time secret link

Create a link that shows your secret — text, a file, or an image — once, then destroys it forever. Encrypted in your browser

How it stays private

Your secret is encrypted in your browser with AES-256. Only the ciphertext is stored; the decryption key lives in the link's #fragment, which browsers never send to a server. When the link is opened, the stored copy is permanently deleted on read — so it works exactly once.

How to use the one-time link tool

  1. Choose Text and type the secret, or switch to File / image and drop in anything up to 3 MB.
  2. Pick how long an unopened link survives: 1, 7 (default) or 30 days. File links always expire after 1 day.
  3. Click Create one-time link — the secret is encrypted locally and only ciphertext is uploaded; the decryption key rides after the # in the link, which browsers never send to any server.
  4. Copy the link and share it — send any context (“staging DB password”) in a separate message from the link itself.
  5. The recipient clicks Reveal (destroys it) — the server hands over the ciphertext and deletes it in one atomic step, their browser decrypts, and the link is dead.

Common uses

  • Send a database password, API key or .env value over Slack or email without it sitting in searchable history forever.
  • Onboard a contractor or new teammate: hand over initial credentials that self-destruct once collected.
  • Share a photo or scan of something sensitive — an ID, a signed page, a seed-phrase backup card — as an encrypted file that vanishes within a day.
  • Put a one-time link in a ticket or handover doc, so the archive keeps the context but not the credential.
  • Use it as a tripwire: if your recipient finds the link already dead, someone else opened it — treat that secret as exposed and rotate it.

Tips & limitations

  • Opening the page does not burn the secret — clicking Reveal does. That protects against accidental loads and chat-app link previews, but anyone holding the full link can still be the one who reads it.
  • Don't open your own link to check it — that is the one view, and it will be gone before your recipient sees it.
  • A file's name and MIME type are encrypted along with its contents, so the server never learns what kind of file it stored — only anonymous ciphertext and an expiry.
  • There's no management console — links can't be listed, extended or revoked after creation; an unsent link just expires on schedule.

How it's built & why it's safe

This is the rare tool here that talks to a server, and it's built so the server can't read anything. Your secret is encrypted in your browser with AES-256-GCM under a freshly generated random 256-bit key (Web Crypto); only the ciphertext goes to a Vercel serverless function that stores it in Upstash Redis with a random 10-character ID and your chosen expiry. The key travels only in the link's #fragment, which browsers never transmit. The first read uses Redis GETDEL — an atomic read-and-destroy — so two people can't both fetch it, even in a race.

Related tools: Text Encryptor · Password Generator · QR Code

Further reading: How to share a password or secret safely · Why Toolkit runs entirely in your browser (and why that matters)

Frequently asked questions

How can this be private if it uses a server?

Because the server only ever sees ciphertext. Encryption happens in your browser with a random key that rides in the link's #fragment, and fragments are never included in web requests. Whoever operates the storage could look at the record and still learn nothing but its size and expiry.

What exactly does one-time mean?

The first Reveal fetches and deletes the stored ciphertext in a single atomic Redis operation (GETDEL), so it can only succeed once. Every later attempt gets a 404 — there is no second copy anywhere to recover.

Does just opening the link destroy the secret?

No. The view page shows a Reveal button and nothing is fetched until it's clicked, so an accidental open or a chat app generating a preview won't consume the view. Once someone clicks Reveal, though, it's gone for everyone else.

Can I send a file or an image?

Yes — anything up to 3 MB. Contents, name and type are all encrypted before upload; the recipient gets an inline preview for images and a download button for everything else. File links always expire after 1 day if unopened.

What happens if the link is never opened?

It expires and the ciphertext is deleted from storage automatically — after 1, 7 or 30 days for text (your choice at creation) and after 1 day for files. An expired link shows the same message as a viewed one.

Why does my link say it was already viewed?

Either it expired, or someone — possibly not your intended recipient — opened it. That's actually useful: a burned link is evidence the secret may have been seen, so rotate the credential rather than resending it.

Are there limits on creating links?

Yes: 50 text and 10 file links per hour per IP, and 3 MB per file. Anything larger than 64 KB of ciphertext is treated under the stricter file rules, whatever it claims to be.