Encrypt Files Online: Free AES-256 File Encryptor, No Upload
Encrypt and decrypt any file with AES-256-GCM in your browser. Passphrase + optional keyfile, batch mode, hidden filenames. Free, no upload, no account.
What it does
Drop in one file or fifty, choose a passphrase, and get back files that nobody can open without it. The same page decrypts them again: add an encrypted file and the tool recognises it from its contents, whatever it has been renamed to.
Beyond the basics, you can add a keyfile as a second factor, hide the original filename, check that a file still decrypts without downloading it, and wrap a file in a portable .html page that decrypts itself for someone who has never heard of this site.
How it works
Your passphrase is turned into a 256-bit key with PBKDF2-HMAC-SHA-256, using a fresh random salt for every file and an iteration count you choose (300,000 to 2,000,000; 600,000 by default). Deliberately slow key derivation is what makes guessing passphrases expensive for an attacker.
The file is then encrypted with AES-256-GCM in 1 MiB blocks. Each block has its own nonce and its own authentication tag, and the last block is flagged as final. Because the block position is part of the nonce, a reordered, dropped, duplicated or truncated block fails verification instead of silently producing a damaged file. The header is authenticated too, so changing any of its fields is detected.
The original filename, type, size and modified date are stored encrypted inside the file. Optionally, the output name is random too, so nothing about the file leaks from its name. If you add a keyfile, its SHA-256 hash is mixed into the key material, so the passphrase alone is not enough.
All of this uses your browser’s built-in WebCrypto, so there is no crypto library to download. Encryption runs on slices of the file read in turn, which keeps memory use close to the size of the output rather than several times larger.
The file format (.rlte)
The format is documented so your files are never locked to this site. All integers are big-endian.
| Bytes | Content |
|---|---|
| 0–3 | Magic RLTE |
| 4 | Version (1) |
| 5 | Flags (bit 0 = keyfile required) |
| 6 | KDF id (1 = PBKDF2-HMAC-SHA-256) |
| 7 | Reserved (0) |
| 8–11 | PBKDF2 iterations |
| 12 | log2 of block size (20 = 1 MiB) |
| 13–28 | Salt (16 bytes) |
| 29–35 | Nonce prefix (7 bytes) |
| 36–39 | Length L of the metadata record |
| 40… | Metadata record (L bytes): AES-GCM of a small JSON object |
| then | Data blocks of up to 1 MiB + 16 bytes each |
Every record uses the 36-byte header as AES-GCM additional data. The nonce is the 7-byte prefix, then a 4-byte block counter, then a flag byte (0 = block, 1 = final block, 2 = metadata). The key is PBKDF2-HMAC-SHA-256 over the NFC-normalised UTF-8 passphrase, followed by the keyfile’s 32-byte SHA-256 if one is used.
How to use it
- Add your files by clicking the drop area or dragging them in. You can mix files to encrypt and files to decrypt.
- Type a passphrase twice, or press Generate for a strong random one. If you generate one, store it in a password manager before you close the page.
- Optionally add a keyfile, pick an iteration count, and choose whether the output filename should be random.
- Press Encrypt. Download each result, or use Download all results (.zip). For a file that someone else will open, use Portable .html to make a self-decrypting page.
- To open an encrypted file later, add it, enter the same passphrase (and keyfile if you used one) and press Decrypt. Verify only checks that a file and passphrase work without producing a download, and Details shows what is in the header without needing a passphrase.
If you refresh the page, your encrypted files are still there, ready to decrypt. Plaintext files, decrypted results, passphrases and keyfiles are not kept.
Choosing a passphrase
The strongest settings cannot rescue a short or common passphrase. A long random passphrase from the generator is the best choice; four or five unrelated words also work well. The strength meter on this page is a rough local estimate. For a closer look at a passphrase’s weaknesses, run it through the password generator and strength checker.
If you also want to encrypt short pieces of text rather than whole files, the text encrypt and decrypt tool is the better fit. And since a file is only as private as its metadata, strip location and device details from photos with Bare before you encrypt them. When you need a PDF that opens with a password in any ordinary PDF reader, use PDF password instead, because an .rlte file can only be opened with this tool or its portable page. To confirm that a transferred file arrived intact, compare checksums with the hash generator.
Supported formats
- Any file type can be encrypted: documents, images, archives, video, databases.
- Size: limited by your browser’s memory, which in practice is roughly 1–2 GB on a desktop computer and less on phones. Very large batches may be slow.
- Output:
.rltefiles, plus optional self-decrypting.htmlpages for files up to 25 MB. - Browsers: current Chrome, Edge, Firefox and Safari, on a secure (https) page.
Limitations
- There is no recovery. If you lose the passphrase or the keyfile, the file cannot be opened by anyone, including us. We never receive either.
- PBKDF2 is not memory-hard, so it is weaker than Argon2 against specialised hardware. Use a long random passphrase and a higher iteration count for sensitive files.
- The tool has not been independently audited. For high-stakes material, use a tool that has been.
- The encrypted size reveals the approximate size of the original file.
- Anyone who has the file and the passphrase can open it: encryption protects the contents, not the fact that the file exists.
- The portable
.htmlpage contains your encrypted data in the page itself, so it is about a third larger than the.rltefile.
FAQ
Is it safe to encrypt files in a web page?
The page does the work on your device using your browser’s own cryptography, and your files and passphrase are never sent to a server. You can confirm this by watching your browser’s network tab while you encrypt, or by loading the page once and going offline. The honest caveat is that you are trusting the code you load; for the highest-stakes work, use a reviewed, installed tool.
What happens if I forget the passphrase?
The file is gone. There is no reset and no back door, which is exactly what makes it secure. Store the passphrase (and keyfile, if used) somewhere safe, such as a password manager.
Can I open the file without this website?
Yes. The format above is documented, and it uses only standard primitives (PBKDF2, AES-256-GCM, SHA-256). Or choose Portable .html, which produces a single page with the decryption code built in; it works offline in any current browser.
What is a keyfile for?
It is a second factor. Any file you control works as one: its hash is mixed into the key, so decrypting needs both the passphrase and the exact same keyfile. Even one changed byte in the keyfile produces a different key. Keep it somewhere separate from the encrypted file.
Why did decryption fail?
Messages are specific. “Wrong passphrase or keyfile” means the key did not match (check for typos, caps lock, and whether a keyfile was used). A message naming a block, or saying the end of the file does not verify, means the file was damaged, truncated or modified after encryption.
Does it hide the filename?
Always inside the file: the real name is stored encrypted and restored when you decrypt. With “Random output filename” on (the default), the downloaded file’s own name is random as well.
Privacy
Everything is local. Encryption, decryption, key derivation, the keyfile hash, the passphrase generator and the portable page builder all run in your browser. Your files, passphrases and keyfiles are never uploaded.
No feature of this tool uses the internet for your data. There is no optional online step and no checkbox for one. The only thing fetched from the network is a pinned zip library, loaded the first time you download a .zip; fetching it sends none of your data.
What is stored in your browser: only encrypted (.rlte) files, so they survive a refresh, along with last-used settings such as the iteration count. Plaintext files, decrypted results, passphrases and keyfiles are never written to storage. A Clear everything button removes the list and all saved files.