All guides
EncryptionDeep dive

XChaCha20-Poly1305 vs AES-GCM: which encryption should you trust?

Both are modern, authenticated ciphers used to protect data. What the difference is, why nonce size matters, and why we chose XChaCha20-Poly1305.

· 2 min read

If you read about modern encryption you'll keep meeting two names: AES-GCM and ChaCha20-Poly1305 (and its extended-nonce sibling, XChaCha20-Poly1305). Both are excellent. The differences are practical, not "one is broken".

What they have in common

Both are AEAD ciphers: authenticated encryption with associated data. They don't just scramble data; they also add a tag that proves it hasn't been changed. Flip one bit of the ciphertext and decryption fails loudly instead of returning garbage. They can also bind extra, unencrypted context (such as an item's id) to the ciphertext, so encrypted data can't be swapped between places without detection.

The real differences

AES-256-GCMXChaCha20-Poly1305
Speed with hardware AES (most desktops and phones)Very fastFast
Speed without hardware AESSlower, and harder to make side-channel safeFast and constant-time in software
Nonce size96 bits192 bits
Safe to pick nonces at randomOnly for a limited number of messages per keyYes, practically without limit

Why nonce size matters

Every encryption needs a nonce, a number that must never repeat with the same key. With AES-GCM's 96-bit nonce, picking nonces at random becomes risky after billions of encryptions under one key, and a repeat can leak information and even allow forgeries. Systems avoid this with counters, which are easy to get wrong across devices that sync.

XChaCha20's 192-bit nonce is so large that random nonces are safe for any realistic amount of data. For a vault that encrypts on many devices at once, that removes a whole class of mistakes.

What Potent Cipher uses

  • XChaCha20-Poly1305 for every secret, with a random 24-byte nonce each time.
  • The item's id, vault and format version as associated data, so a server can't swap one item's ciphertext for another's.
  • A chunked streaming construction for files, so reordering or cutting a file short is detected.

All of it comes from audited RustCrypto implementations compiled to WebAssembly in your browser and natively in the desktop app. Nothing is home-made. The details are in the .pcipher specification and the open-source core.

Bottom line

Either cipher, used correctly, keeps your data safe. The words to look for on any security page are authenticated encryption and unique nonces, done on your device. Our security page shows how ours fits together.

Put these guides to work

Your first 100 secrets are free, encrypted on your device with a key we never see.

  • No credit card
  • Zero-knowledge
  • Free file encryption