Encryption and security

What is encrypted, and what Why can see.

Are private messages end-to-end encrypted?

Yes. Messages, photos, files and locations in private messages are encrypted on your device (ECDH P-256 + AES-256-GCM) before they are sent. The server only stores ciphertext and has no key to decrypt it.

How can I read my messages on several devices?

Each account has one encryption key, kept on your devices. By default Why also keeps a copy locked with your 6-character message protection code (PBKDF2, 600,000 rounds + AES-256-GCM). On a new device, you type this code to unlock it right there on that device.

Choose a code that is hard to guess: a short code can be guessed by someone who gets hold of the server's data. For more safety, choose in Settings to keep the key only on your devices: Why deletes its copy, new devices must be approved from an old one, and losing every device means old messages can't be read again.

What is NOT end-to-end encrypted?

  • Posts, comments and likes (they are meant to be seen).
  • Group chats: they are moderated to block violent or explicit content.
  • Messages and files in Chat with someone, so reports can be reviewed. Files there are encrypted at rest, but the server holds the key.

What can Why see?

Even for encrypted messages, the server knows who messaged whom, when, and how big the message was (not what it says). Why also sees the account details you provide, posts according to the audience you choose, and your IP address when you visit.

How long are sent files kept?

Up to 25 MB per file. Files are compressed and encrypted, then deleted automatically after 30 days. After that the message shows "File expired".

Are calls secure?

Calls between friends use WebRTC: audio and video are encrypted (DTLS-SRTP) and the call set-up is end-to-end encrypted too.

Calls in Chat with someone always go through a relay server, so neither side sees the other's IP address.

How is my account protected?

  • Passwords are stored as bcrypt hashes; nobody can read the original.
  • Failed sign-ins are rate-limited to stop password guessing.
  • Every connection uses HTTPS and the sign-in cookie is only sent over secure connections.
  • A strict Content Security Policy blocks injected scripts.