Loading...
Loading...
Looking for a OneTimeSecret alternative? PasteOnce offers faster, client-side encrypted sharing.
OneTimeSecret (onetimesecret.com) is the elder statesman of burn-after-reading link tools, launched in 2012 on a Ruby/Sinatra stack with Redis behind it. Its source lives under the onetimesecret/onetimesecret GitHub repo with a permissive license — the project's defining feature. A regulated bank, hospital, or sovereignty-conscious agency can audit every line, run the binary inside an air-gapped VPC, and never trust a vendor with the ciphertext.
The price is the operational tail. Self-hosting OTS means owning Let's Encrypt renewals, the Redis AOF backup pipeline, the LUKS or KMS envelope on the underlying disk, the patch cadence for Ruby and Sinatra, and the question of who can run redis-cli on production. The application does not log plaintext, but a bored on-call engineer with shell access can. Self-hosting moves the trust boundary from a vendor to your own ops org.
PasteOnce takes the other lane: managed-only, running on Vercel with Upstash Redis pinned to iad1, doing AES-256-GCM inside the browser via the native Web Crypto API, and never receiving the URL fragment that holds the key. For most teams the trade is straightforward — skip the Ruby ops tail and rely on a cryptographic guarantee. For teams where compliance or sovereignty mandates OSS, OTS remains the right answer.
Client-side encrypted. We can't see your data.
Your data is encrypted in your browser before it leaves your device.
Messages are automatically deleted after being read once.
We never see your data. Only encrypted blobs pass through our servers.
Links work exactly once. Refresh the page and it's gone forever.
Your sensitive data is encrypted in your browser using AES-256-GCM. The encryption key is generated randomly and never sent to our servers.
Only the encrypted blob is stored in our database, with an automatic expiration time. We literally cannot read your data.
When your recipient opens the link, the encrypted data is fetched and immediately deleted from our servers using an atomic Redis GETDEL. The key in the URL hash decrypts the message in their browser.
If an auditor demands SOC 2 control over the storage layer or a residency clause naming a specific region, self-hosting gives you that paper. If audit is silent, a managed tier removes an entire class of incidents from your runbook.
Run the Redis volume on LUKS with a key held in HashiCorp Vault, or on EBS with a KMS CMK that requires MFA to decrypt. Snapshots inherit the protection — which raw RDB files on a vanilla filesystem do not.
Track the onetimesecret/onetimesecret repo for CVEs in Ruby, Sinatra, and Redis. Subscribe to the GitHub releases feed so a critical patch does not sit unapplied for weeks behind your change-management board.
When moving off self-hosted OTS to PasteOnce or any successor, run both endpoints for at least the longest TTL window you accept. Stop new writes to the old one first; let outstanding links drain; decommission only after.
A regional bank's security team is told no SaaS may hold ciphertext touching customer PII. They fork the OTS repo, stand it up on an internal Kubernetes cluster behind their OIDC SSO, and accept the ops tail because the regulator left them no other lane.
A four-person startup ran OTS on a $5 droplet for two years. The founder wants Saturdays back, post-mortems the hours spent on TLS renewal and Redis disk-full incidents, and moves the team to PasteOnce on a Friday afternoon.
A security consultant compares managed PasteOnce versus self-hosted OTS versus the OTS-hosted variant for a healthcare client. The deciding column is HIPAA Business Associate Agreement availability, which forces a self-host outcome regardless of preference.
Self-host if a regulator, customer contract, or internal policy forbids third-party storage of ciphertext, or if you already run a security ops team that maintains similar small Ruby services. Otherwise the operational tail usually outweighs the sovereignty benefit.
OTS encrypts on the server in Ruby and stores ciphertext plus a passphrase-derived reference in Redis. PasteOnce encrypts in the browser using AES-256-GCM and never receives the decryption key — it travels in the URL fragment, which browsers do not transmit. OTS trusts the operator; PasteOnce removes them from the cryptographic loop.
No, and you should not want to. Each OTS link is bound to its origin domain and a server-side passphrase derivation; the ciphertext is not portable. The clean migration path is to drain outstanding links on the old instance and route only new requests forward.
Yes — the GitHub repository continues to receive commits and the hosted service remains operational. The choice between OTS and PasteOnce is not about abandonment risk; it is whether you want to operate infrastructure or consume a service with the cryptography pulled fully into the client.