AES & ChaCha20 Encrypt/Decrypt Online Encryption Tool
This browser-based AES & ChaCha20 Encrypt/Decrypt tool encrypts or decrypts content with AES-GCM, AES-CBC, AES-CTR, or ChaCha20-Poly1305. Provide a key in hex, Base64, or UTF-8, or use a passphrase to derive a 256-bit key with PBKDF2-SHA256 (600,000 iterations); the IV is used as the salt. Choose an automatic or manual IV, optionally prepend it to ciphertext, and add AAD for AEAD modes.
The AES & ChaCha20 Encrypt/Decrypt tool is a browser-based workbench for encrypting and decrypting content with four symmetric ciphers: AES-GCM, AES-CBC, AES-CTR, and ChaCha20-Poly1305. It supports raw keys supplied as hex, Base64, or UTF-8, as well as passphrases. Use it to explore cipher settings or handle encryption and decryption directly in your browser.
AES-GCM and ChaCha20-Poly1305 are AEAD modes: they authenticate data as well as encrypt it. For these modes, you can provide optional authenticated-associated-data (AAD), which is not encrypted but is verified during decryption. AES-CBC uses PKCS7 padding, and AES-CTR is a stream mode. A passphrase is used to derive a 256-bit key with PBKDF2-SHA256 at 600,000 iterations, using the IV as the salt.
An IV can be generated automatically or entered manually. You can also prepend it to the ciphertext so it travels with the message. These options help you choose how the encryption input is prepared and how the resulting ciphertext is packaged. The tool handles both encryption and decryption, so you can use it to inspect cipher behavior or work with existing ciphertext when you have the necessary key and settings.
The tool runs locally in your browser using @noble/ciphers and WebCrypto. Your input is processed on your device and is not uploaded, stored, or sent to a server. After the page has loaded, it works offline without a server dependency, making it useful when you want to keep encryption and decryption tasks private.
Developers and DevOps engineers can use the workbench to learn about supported cipher modes, test encryption settings, or produce and inspect cipher output without relying on a remote processing service. Its options also make it practical for comparing raw-key and passphrase workflows.
Step 1: Enter the content you want to encrypt or decrypt. Provide a key in hex, Base64, or UTF-8, or enter a passphrase to derive a key.
Step 2: Choose AES-GCM, AES-CBC, AES-CTR, or ChaCha20-Poly1305. AES-CBC uses PKCS7 padding, while AES-CTR operates as a stream mode.
Step 3: Set the IV to automatic generation or enter it manually. You can also choose to prepend the IV to the ciphertext so it travels with the encrypted message.
Step 4: For AES-GCM or ChaCha20-Poly1305, optionally enter authenticated-associated-data (AAD). It is not encrypted, but is verified during decryption.
Step 5: Run the encryption or decryption and copy the resulting output.
Use case: Check a cipher output against a value you were given by decrypting it with the corresponding key and settings.
Use case: Test a known input and compare the encryption result when learning how a supported algorithm behaves.
Use case: Encrypt or decrypt content locally instead of entering it on a third-party page that sends data to a server.
Use case: Compare AES-GCM, AES-CBC, AES-CTR, and ChaCha20-Poly1305 for a development or learning task using the same input.
Use case: Try passphrase-based key derivation when you need to work with a passphrase rather than provide a raw key.
Use case: Prepare an encrypted message with its IV prepended to the ciphertext so the IV can travel alongside it.