send.env.dev

Send .env files and one-time secrets securely

End-to-end encrypted, self-destructing links for .env files, API keys, and passwords. Built on a single small server with zero npm dependencies at runtime — no supply chain, no analytics, no plaintext on the wire.

Send a .env file or one-time secret

How to send a .env file securely (in four steps)

  1. Paste your .env file or secret into the box above. Up to 16 KB of text — a full Next.js, Rails, or Django .env with margin.
  2. Choose a passphrase. It never leaves your browser; it's used to derive a second encryption key on top of the random key in the URL fragment.
  3. Pick a TTL. 1, 6, or 24 hours. The link self-destructs on first reveal or at the deadline, whichever comes first.
  4. Send the link in chat or email. Send the passphrase separately — phone call, SMS, password-manager share. Splitting the two factors across channels is the point.

What makes send.env.dev different from other one-time secret tools?

Why pasting .env files in Slack, email, or chat is unsafe

Slack, Discord, Teams, email, and Jira comments write the secret into a long-term searchable index, sync it to every device the recipient ever signs into, and expose it to anyone who later compromises a session token, an OAuth scope, or a backup. Once a real .env hits any of those surfaces, treat every value in it as public — the only correct response is to rotate. send.env.dev never persists plaintext, holds ciphertext for at most 24 hours, and destroys it on first reveal.

Frequently asked questions

How do I send a .env file securely?

Paste the contents into the form above, choose a passphrase, generate the link. Send the link in chat or email; share the passphrase through a different channel — phone call, SMS, or a password-manager share. The recipient pastes the passphrase, the secret decrypts in their browser, and the server destroys the ciphertext on the first reveal.

What is a one-time secret link?

A URL that reveals a secret exactly once and then self-destructs. send.env.dev's links also encrypt the payload end-to-end — the server only ever sees ciphertext — and require a separate passphrase to decrypt, so an intercepted link alone is useless.

Can I share dotenv files via Slack, email, or Discord?

Don't. Those channels keep the message indexed, sync it across devices, and survive token compromises and backup leaks. If a real .env ever lands in chat history, rotate every value in it — assume it's public.

What's the safest way to send environment variables?

End-to-end encrypted, one-time, with the second factor on a separate channel. send.env.dev does this with no install or account. For ongoing distribution to running services, layer a secrets manager (1Password, Doppler, Infisical, HashiCorp Vault) on top — see the full guide on env.dev.

How is send.env.dev different from 1Password, Doppler, or Vault?

Those manage secrets for running apps and CI pipelines. send.env.dev is purpose-built for the act of handing one .env file to one human, once. No account, no CLI, no IAM bootstrap. Use a secrets manager on top for the continuous-distribution problem; use send.env.dev for the one-off transfer.

Can env.dev read my secret?

No. Encryption happens in your browser via WebCrypto (AES-256-GCM) before anything leaves the device. The server only ever sees opaque ciphertext, and it never sees the URL fragment key or the passphrase.

Why do I need a passphrase if the URL already has a key?

It's a second factor. Even if someone intercepts the link, they cannot decrypt without the passphrase. Sending the link and the passphrase through different channels (e.g., chat and a phone call) means no single intercepted message reveals the secret.

What happens if I lose the link?

It's gone. The only copy of the encryption key lives in the URL fragment, which is never sent to the server. There is nothing to recover. Treat the link the same way you'd treat the secret itself.

How long does a secret last?

You choose 1 hour, 6 hours, or 24 hours when creating it. It self-destructs at that time, or the moment someone reveals it — whichever comes first.

Is it really one-time? Can two people open the link?

Each secret lives in its own atomic storage instance. The first reveal returns the ciphertext and destroys it in the same single-threaded operation. Concurrent readers cannot both succeed.

What can I share?

Any text up to 16 KB — passwords, API keys, OAuth tokens, SSH private keys, full .env files, database URLs, JWT signing secrets, recovery codes. Binary files aren't supported; base64-encode them first if you need to.

Will Slack or iMessage previews burn my link?

No. The encryption key and secret ID live in the URL fragment (the part after #), which is never sent in HTTP requests. Link previewers fetch the homepage URL only and can't trigger the burn. The reveal endpoint also rejects GET, so prefetchers can't burn a secret either.

Is it free?

Yes. No signup, no account, no payment. Part of env.dev.

Is there a CLI or API?

Not yet — send.env.dev is browser-only by design. Building a CLI on top of the HTTP endpoints would defeat the property that the encryption key never lives anywhere except the URL fragment.