How we protect your photos
Last updated: 25 September 2026 · Русский
In short: photos and videos are encrypted on your device before upload, the key never reaches our server, and without the key nobody can open the files — including us. Below is how it works: first in plain words, then details for specialists, and honestly — what encryption does not do.
In plain words
- The key is created on your phone. It is 256 random bits, stored in your Telegram account (the mini app's cloud storage) and on the device itself. It is never sent to the My Albums server.
- Everything that describes a photo is encrypted: the photos and videos themselves, captions, tagged people, capture dates and places, face prints for suggestions, album names. Search runs on your phone — queries are not sent to the server.
- The recovery code is the key itself. The app shows it on first launch. Write it down on paper and never show it to anyone, including support. If both the code and your Telegram account are lost, nobody can recover the photos.
- A secret album is locked with its own password. Neither we nor Telegram have it, so an unlocked phone in someone else's hands will not open the album. A forgotten password cannot be recovered.
- A shared album is encrypted with its own key, not your main one. Sharing it opens only that album, not your whole library.
What our server sees and what it does not
| Sees | Does not see |
|---|---|
| Your Telegram ID, name and language | The photos and videos themselves |
| How many files you have, their size, photo or video, upload time | Captions, capture dates and places |
| Your plan and Stars payments | Tagged people and face prints |
| In shared albums: who is a member and with what role, who uploaded what, who reacted | Album names, the reactions themselves, search queries |
| That you uploaded the same file again — this is how duplicate protection works | Your key, recovery code and secret-album passwords |
Honestly: what encryption does not do
- The app's code is delivered by our server. This is true of every web app with end-to-end encryption: in theory a compromised server could deliver modified code. What we do about it: only our scripts and Telegram's script may run on the app page; every hour the files the server actually delivers are compared with the published version; the code is open and readable — check it yourself; an independent audit is being prepared.
- The key is stored in your Telegram account. Whoever gains access to your Telegram gets the key too. Turn on Telegram's cloud password (two-step verification).
- "Send to my chat" on Android. Telegram on Android does not let mini apps save files, so when you tap it, the file goes decrypted through our server to your chat with the bot. The server does not store it; in the chat Telegram stores it unencrypted.
- An unlocked phone. Someone holding your unlocked phone with Telegram open will see your library. Keep the most private photos in secret albums.
For specialists
- Encryption uses the browser's standard WebCrypto: AES-256-GCM with a random 96-bit IV. Large files are encrypted in 1 MiB chunks: each chunk has its own IV, and the chunk number and file header are authenticated (AAD) — chunks cannot be reordered, swapped or silently truncated.
- Secret albums: a random album key wrapped with a password-derived key — PBKDF2-HMAC-SHA256, 300,000 iterations, 128-bit salt.
- Shared albums: every user has an ECDH P-256 key pair; the private half is stored on the server only encrypted with the main key. The album key is delivered to a member with ECIES (ECDH + HKDF-SHA256 + AES-256-GCM). Key substitution by the server shows up in the safety code, which must match on the owner's and the member's screens. Link guests get the album key locked with a random 80-bit code (PBKDF2); the code is passed separately from the link and never reaches the server.
- Duplicate tags: HMAC-SHA256 of the file content with a key derived from yours; the content cannot be recovered from a tag.
- Sign-in: the Telegram data signature (HMAC-SHA256) is verified on the server; a session lasts 12 hours and the server stores only a hash of its token.
- App page: Content-Security-Policy (scripts only from us and Telegram), HSTS, Referrer-Policy: no-referrer. Files are kept in Cloudflare R2 (European region); download links are signed and live for 10 minutes.
- All encryption is in one file: crypto.js.
Checks and vulnerability reports
How to verify the encryption yourself — four ways, from simple to thorough. We are preparing an independent code audit and will publish its report on this page.
Found a vulnerability? Write to @MyAlbums_support or [email protected] — we will look into it and fix it, and with your consent thank you here.
