Skip to content
Back to blog
encryption

Client-side vs server-side encryption for secure links

P
PassTransfer
Published November 1, 20243 min read

Why encryption architecture matters

When you use a secure link tool to share a password, the secret travels from your browser to a server and then to the recipient. Encryption determines how exposed the secret is during and after that journey. But not all encryption is equivalent — the location where encryption happens makes a significant difference to your security model.

Server-side encryption explained

In server-side encryption, your secret is transmitted to the server in plain text (or lightly protected by HTTPS), and the server encrypts it before storing it. When the recipient retrieves the secret, the server decrypts it and delivers it.

What this means in practice:

  • The server operator can technically read your secret
  • A server breach could expose decrypted data if keys are stored alongside data
  • You are trusting the service provider's security practices entirely
  • HTTPS protects the secret in transit between browser and server

This model is simpler to implement and covers the most common threat: secrets sitting unprotected in databases or email archives.

Client-side encryption explained

In client-side encryption, your browser encrypts the secret before it leaves your device. The server only ever stores an encrypted blob. When the recipient opens the link, their browser decrypts it — often using a key embedded in the link's URL fragment (the part after #), which is never sent to the server.

What this means in practice:

  • The server operator cannot read your secret, even theoretically
  • A server breach exposes only encrypted data that is useless without the key
  • The key is typically part of the link itself, so keeping the link secure is critical
  • More complex to implement correctly; subtle implementation flaws can undermine the model

The practical comparison

Property Server-side encryption Client-side encryption
Server operator can read secret Yes (in principle) No
Protection if server is breached Depends on key management Strong (if implemented correctly)
Protection in transit (HTTPS) Yes Yes
Implementation complexity Lower Higher
Link URL contains decryption key No Often yes
Trust required in provider High Lower

The nuance: HTTPS + server-side encryption is often sufficient

For most credential sharing scenarios, a well-implemented server-side encrypted tool with HTTPS provides adequate security. The threat model for most teams is not "the service provider is reading our passwords" — it is "passwords are sitting in email threads and Slack channels in plain text."

Moving from email to any properly built one-time link tool, regardless of encryption architecture, eliminates the most common risks.

When client-side encryption is worth prioritising

Client-side encryption is the right choice when:

  • You are sharing secrets with very high sensitivity (private keys, financial credentials)
  • You have regulatory requirements that demand end-to-end confidentiality
  • You cannot accept any theoretical risk of provider access to your data
  • You are in a jurisdiction with strong data sovereignty requirements

What PassTransfer does

PassTransfer encrypts secrets in your browser with AES-GCM (WebCrypto) before they reach the server, so the server only ever stores ciphertext it cannot read. Secrets are deleted immediately after retrieval and never appear in logs. HTTPS protects all data in transit.

For the typical business credential — a CMS login, a hosting account, a client handover — this provides strong, practical security without the implementation complexity of client-side encryption.

Share a secret securely with PassTransfer →

Share this article
P
PassTransfer

The team behind PassTransfer writes about secure sharing, compliance and practical security for teams and agencies.

Ready to get started?

Sharing securely takes 10 seconds

Paste your password, pick an expiry time and share the link. Free and without an account.

Share a password