AES Encryption Online on macOS means encrypting and decrypting text snippets directly inside Safari, Chrome, or Firefox through the browser's Web Crypto API, without installing OpenSSL, downloading a separate app, or uploading anything to a remote server. The tool wraps the ciphertext in a self-contained AES-256-GCM JSON package, signs it with a 128-bit authentication tag, and protects the AES key with PBKDF2-SHA-256 key derivation, so the same workflow that runs on Windows or Linux also runs on a MacBook Air, a Mac Studio, or an iPad sharing the same Safari session. Because every step happens locally, there is no dependency on macOS Keychain or FileVault, no command-line ceremony, and no chance that the password leaves the device. For Mac users who need a quick way to password-protect a text snippet, share it through chat, email, or iCloud Drive, and open it again later on any device, that combination of AES-256, GCM authentication, browser-only execution, and a portable JSON container is the practical answer.

Why Mac Users Reach for a Browser-Based AES Tool
macOS already ships powerful encryption: FileVault protects a whole startup volume with AES-XTS through Apple's Secure Enclave, iCloud Keychain encrypts synced passwords, and Notes can lock individual notes with a password. Those features all lock data to the macOS ecosystem or to a specific Apple container, and they are not designed for portable text snippets that need to round-trip through chat, email, a public repository, or a friend on Windows.
For that use case, Mac users traditionally had three options:
- Run openssl enc -aes-256-gcm in Terminal, which is fast but command-line-only, easy to mistype, and produces formats that are not always interoperable with Windows or Linux counterparts.
- Install a dedicated desktop app such as AES Crypt, which adds a download, a code-signing check, and an extra trust decision.
- Use a hosted online tool, which usually means the password and plaintext travel to a remote server.
A browser-based AES tool that runs against Web Crypto fills the gap: no install, no command-line flag mistakes, and the password never leaves the page. On macOS Sonoma and Sequoia, Safari 17 and Chrome 120 both expose the Web Crypto API on every standard page load, so the cryptography happens in the same JavaScript engine that renders the rest of the site.
How AES Encryption Online Runs on macOS
Web Crypto is the W3C-defined JavaScript API that gives browsers access to primitives such as PBKDF2, AES-CBC, and AES-GCM. The AES Encryption Online page leans on that interface rather than rolling its own cipher, which is why the same code path is available on a MacBook, an iPad running Safari, and a Windows PC running Edge without modification.
The implementation follows these steps every time you press Encrypt:
- The browser generates a fresh 16-byte random salt and a fresh 12-byte random initialization vector using its cryptographically secure RNG.
- The password you typed is converted to UTF-8 and fed into PBKDF2 with SHA-256, 210,000 iterations, and the fresh salt, producing a non-exportable 256-bit AES key.
- The browser runs AES-GCM with that key, the fresh IV, and a 128-bit authentication tag, producing the ciphertext.
- The salt, IV, ciphertext, and a small header describing the algorithm are written into a versioned JSON package using unpadded base64url encoding.
Because the key is created with the deriveKey routine rather than the importKey routine, the underlying key material cannot be exported out of the browser context, so there is no JavaScript variable that holds the raw 256 bits. That constraint is enforced by Web Crypto, not by the page, which is the strongest practical guarantee a single-page tool can offer on macOS.
Encrypt a Text Snippet on Mac
Open AES Encryption Online in Safari or Chrome on the Mac, then follow these actions:
- Make sure Encrypt is the selected mode at the top of the page.
- Paste or type the plaintext you want to protect into the input field. The page accepts any UTF-8 text, including emoji and accented characters, with no length cap beyond what fits in the form.
- Type a unique passphrase into the password field. The interface enforces a minimum of 12 UTF-8 bytes, which is enough to require real entropy rather than a one-word password, and accepts longer passphrases generated by a password manager.
- Click Encrypt. The page derives the AES key, encrypts the text, and renders the complete package in the output field.
- Click Copy to put the package on the macOS clipboard, then paste it into your chat client, email draft, or local document. The clipboard now holds the package, not the original plaintext.
- Send the password to the recipient through a different channel than the package itself. The package is safe to email, but if the password travels in the same message, anyone who intercepts the message has both halves and the protection is reduced to nothing.
Decrypt a JSON Package on Mac
If you have received a package from another person or from another device, open the same tool, switch to Decrypt mode, and round-trip it back to plaintext:
- Paste the complete package text into the Decrypt input, exactly as you received it. Do not strip whitespace, rename fields, or re-encode the base64url values, because the validator compares labels, lengths, and the version header against the format spec.
- Type the matching password into the password field. The same UTF-8 password that was used at encrypt time must be entered, character for character, including any emoji or accented letters.
- Click Decrypt. The page re-derives the AES key with the salt stored in the package, runs AES-GCM with the stored IV, and checks the 128-bit tag. If everything matches, the plaintext appears in the output field.
- Click Copy to capture the recovered text, then paste it where you need it. If the password is wrong or any byte of the package was edited, Web Crypto will fail the authentication check and the page reports the failure without printing partial output.
For a deeper walkthrough of the JSON container itself, see the related guide on opening a JSON package with its password.
Inside the JSON Package: Fields and Limits
A complete package is a single JSON object with the following fields. Any tool that wants to interoperate must reproduce this exact layout, including the unpadded base64url encoding defined in RFC 4648 and the placement of the GCM tag inside the ciphertext field.
| Field | Purpose | Value type and size |
|---|---|---|
| version | Pins the format spec | Integer, fixed at 1 |
| algorithm | Cipher declaration | String AES-256-GCM |
| kdf | Key derivation declaration | String PBKDF2-SHA-256 |
| iterations | PBKDF2 cost factor | Integer, fixed at 210000 |
| salt | PBKDF2 input, not secret | 16 bytes, base64url |
| iv | AES-GCM nonce, not secret | 12 bytes, base64url |
| ciphertext | Authenticated bytes plus 128-bit tag | base64url, includes tag |
The salt and IV are intentionally visible: their job is uniqueness and key derivation, not secrecy. The password is the only secret, and it is never written into the output. The cipher mode and tag length match the construction described in NIST SP 800-38D.
Mac-Side Security Notes That Matter
The cryptography on the page is correct, but the surrounding Mac environment still controls what reaches that code. A few practical notes apply on macOS specifically:
- Clipboard managers on macOS keep a history of copied values. After you copy the recovered plaintext, clear sensitive entries from your clipboard manager if it stores history.
- iCloud Universal Clipboard can sync a copied package to a nearby iPad or iPhone. If you do not want the package to land on another device, paste it directly into the destination field and clear the clipboard.
- Safari and Chrome extensions can read page content. Use the tool with extensions disabled, or in a private window, when handling anything sensitive.
- Shared or public Macs such as kiosks or library computers keep plaintext and packages in the browser profile. Always close the tab and clear the form when you are done.
- The password is never uploaded, there is no recovery service, and there is no server-side key escrow. If the password is lost, the package is unrecoverable.
The implementation has been checked against the published NIST AES-GCM vectors, the empty-plaintext authentication case, a full zero-block case, and the RFC 4648 base64url fixtures, so the transformation itself behaves as defined. Those checks do not extend to the browser, the Mac, the password, or the place you store the package; those are still your responsibility.
Related reading: Base58 Decode on Mac: A Browser-Based Workflow.