Protect sensitive text with this free online AES encryption tool. Encrypt plain text with a secret key using industry-standard AES-256 encryption directly in your browser — no data is ever sent to a server, so your secrets stay completely private. Use it to encrypt messages, credentials, or notes before pasting them anywhere untrusted.
AES (Advanced Encryption Standard) is the symmetric cipher that secures HTTPS traffic, file vaults, and messaging apps. You provide a secret key and the plaintext; the tool produces scrambled ciphertext that only someone with the same key can read back using the AES Decryption Tool. For a strong key, generate one with the Password Generator.
AES encryption online is the fastest way to protect a piece of text without installing software or trusting a server with your data. Because AES is symmetric, the same secret key is used to encrypt and decrypt, which makes it suitable for storing secrets, sharing credentials with a colleague, or scrambling notes saved in a cloud that you do not fully control. The ciphertext output is base64, so it pastes cleanly into any chat, email, or document.
This tool runs the full encrypt text online workflow client-side, so the plaintext and key never leave your machine. That is important: a server-based AES encryptor could log your inputs. For maximum security, pick a long, random key, never reuse a key across different secrets, and always pair this tool with the matching decryptor when you need to recover the original message.
The same plaintext and key always produce the same ciphertext (with a fixed salt). The output is base64-encoded so it is safe to paste into any text channel:
Key: my-secret-passphrase
Plain text: Attack at dawnU2FsdGVkX1+3xY9pQr2... (AES-encrypted, base64 output)AES (Advanced Encryption Standard) is a symmetric block cipher and the most widely trusted encryption algorithm in the world — it protects TLS/HTTPS, Wi-Fi (WPA2/3), full-disk encryption, and government data. "Symmetric" means the same secret key is used to encrypt and to decrypt. AES operates on 128-bit blocks and comes in three key sizes: AES-128, AES-192, and AES-256, where the number is the key length in bits. A longer key means more rounds of mixing and a larger keyspace to brute-force; AES-256 offers 2²⁵⁶ possible keys, which is computationally unbreakable with current technology.
A key alone is not enough for secure encryption. Modern modes like CBC and GCM require an initialization vector (IV) or nonce — a random value that makes identical plaintexts encrypt to different ciphertexts each time, preventing pattern leakage. A salt similarly randomises the key-derivation step that turns your passphrase into an AES key. Because reusing an IV with the same key is catastrophic for security, good implementations generate a fresh random IV/salt for every encryption and store it alongside the ciphertext.
Running this in the browser is genuinely safe: the encryption happens locally with the Web Crypto API / a vetted library, and your plaintext and key never traverse the network. Never reuse a key across many messages, never share the key over the same channel as the ciphertext, and rotate keys if one might have leaked. To produce strong, random keys, use the Password Generator, and to generate unique tokens rather than secrets, use the UUID Generator.
Different cipher block modes dictate how 128-bit blocks are encrypted sequentially. Modern security standards mandate authenticated modes:
| Cipher Mode | IV / Nonce Requirement | Integrity Auth Tag? | Parallelization | Security Assessment |
|---|---|---|---|---|
| AES-GCM (Galois/Counter Mode) | 96-bit unique nonce | Yes (AEAD) | Full hardware acceleration | Gold Standard: Recommended for TLS 1.3, cloud storage, and APIs |
| AES-CBC (Cipher Block Chaining) | 128-bit random IV | No (Requires HMAC) | Sequential encryption only | Acceptable if combined with Encrypt-then-MAC; vulnerable to padding oracles |
| AES-CTR (Counter Mode) | 128-bit unique counter/nonce | No (Stream cipher) | Highly parallelizable | Fast, but catastrophic if a nonce is reused across plaintexts |
| AES-ECB (Electronic Codebook) | None (Insecure) | No | Independent blocks | Prohibited: Preserves structural plaintext patterns (the ECB Penguin effect) |
Implement AES-256 encryption across modern web browsers and backend servers using standard cryptographic primitives:
async function encryptAesGcm(plainText, secretKeyString) {
const enc = new TextEncoder();
const rawKey = await crypto.subtle.digest('SHA-256', enc.encode(secretKeyString));
const key = await crypto.subtle.importKey('raw', rawKey, 'AES-GCM', false, ['encrypt']);
const iv = crypto.getRandomValues(new Uint8Array(12));
const cipherBuffer = await crypto.subtle.encrypt(
{ name: 'AES-GCM', iv: iv },
key,
enc.encode(plainText)
);
return {
iv: btoa(String.fromCharCode(...iv)),
ciphertext: btoa(String.fromCharCode(...new Uint8Array(cipherBuffer)))
};
}import os
import base64
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
def encrypt_aes_gcm(plaintext: str, key_32_bytes: bytes) -> dict:
aesgcm = AESGCM(key_32_bytes)
nonce = os.urandom(12)
ciphertext = aesgcm.encrypt(nonce, plaintext.encode('utf-8'), None)
return {
"nonce": base64.b64encode(nonce).decode('utf-8'),
"ciphertext": base64.b64encode(ciphertext).decode('utf-8')
}