AEAD File Encrypt/Decrypt
Encrypt a file with a password using AES-256-GCM or (X)ChaCha20-Poly1305 and Argon2id, then decrypt it again. Files never leave your browser.
Your inputs and files stay in your browser
Encrypt
Large files are processed in chunks in the browser.
More memory and passes make password guessing slower, but encryption and decryption take longer and need that much memory. The settings are stored in the file, so decryption picks them up.
Below the OWASP minimum for Argon2id (19 MiB × 2 passes): a weak password could be guessed quickly.
The password starts or ends with a space. It is used exactly as typed, spaces included.
Decrypt
Choose a file and a password, then encrypt or decrypt — the result file and its header appear here.
- Result
- Key derivation
- Header
On this page
AEAD File Encrypt/Decrypt protects a file with a password using authenticated encryption (AES-256-GCM, ChaCha20-Poly1305 or XChaCha20-Poly1305) and turns it back into the original. Everything happens in your browser: the file and the password are never uploaded.
Detailed Functionality
The password is stretched with Argon2id (64 MiB of memory, 3 passes) and a random 16-byte salt into a 256-bit key, so guessing passwords is slow even on fast hardware. The file is then encrypted in 1 MiB chunks by a Rust/WebAssembly module; every chunk gets its own nonce (a random prefix plus a chunk counter) and a 16-byte authentication tag. A progress bar shows speed and remaining time, and Cancel stops the job between chunks.
Key derivation (Argon2id) sets the cost: Light, Standard (the default), Strong, Maximum (1 GiB, for desktops) or your own memory, passes and lanes. Higher cost slows down password guessing, and every encryption and decryption, by the same factor. Non-default settings are written into the authenticated header (9 bytes more), so decryption needs only the password; settings below the OWASP minimum show a warning.
The result is a .aead container in the MDT3 format: a 35-byte header (47 bytes for XChaCha20) holding the algorithm, salt and nonce prefix, followed by the chunks. The header and a "last chunk" flag are authenticated with every chunk, so a wrong password, any modified byte, reordered chunks, a file cut short (even exactly at a chunk boundary) or extra data appended at the end are all rejected instead of producing damaged output. The algorithm is read from the header, so decryption only needs the password.
Containers written by earlier versions of this tool (MDT2) still decrypt; that older format cannot detect a cut exactly at a 1 MiB boundary, and the tool says so after decrypting. The password is used exactly as typed; for old files it also tries the password without leading/trailing spaces, because earlier versions trimmed it. The encrypted or decrypted file is assembled in memory before you download it, so the practical size limit is your device's RAM.
Practical Examples
Encrypt before uploading to cloud storage: report.pdf (2.5 MiB) with AES-256-GCM becomes report.pdf.aead, 2.5 MiB plus a 35-byte header plus 3 × 16 bytes of tags. The Header field starts with 4d445433, the ASCII bytes MDT3.
Decrypt on another computer: open the tool, choose report.pdf.aead in the decrypt panel, type the same password and download report.pdf. A file without the .aead extension is saved with .dec appended.
Interrupted transfer: if only the first 2 MiB of report.pdf.aead arrived, decryption stops with "Decryption failed: wrong password, or the file is corrupted or was modified." instead of returning a shorter PDF.
Empty file: a 0-byte file still produces a 51-byte container (header plus one authenticated empty chunk), so even an emptied container is detected.
How to Use This Tool
Choose the file to encrypt
In the Encrypt panel click Choose file under File.
Pick an algorithm and a password
Select the Algorithm (AES-256-GCM is the default) and type a Password. A hint appears if it starts or ends with a space, because spaces count.
Encrypt and download
Click Encrypt file, watch the progress bar, then click Download to save
<name>.aead.Decrypt later
In the Decrypt panel choose the
.aeadfile, enter the same password in the field above, click Decrypt file and then Download.
Tips and Best Practices
- There is no password recovery: if the password is lost, the file cannot be decrypted by anyone, including this tool.
- A long passphrase beats a short complex password; Argon2id slows guessing but cannot save
123456. - XChaCha20-Poly1305 uses a 128-bit random nonce prefix; choose it if you encrypt very many files with the same password.
- "Wrong password" and "file was modified" give the same error on purpose: the tag check cannot tell them apart.
- Encrypt a legacy MDT2 file again to upgrade it to MDT3 and get truncation detection.
- After the first visit the page also works without a network connection.