AnyTool
Your files never leave your device. All processing happens locally in your browser.

How do I keep encrypted notes that never leave my browser?

Create a vault protected by a master passphrase. Your notes are encrypted with real AES-256-GCM — the key is stretched from your passphrase with PBKDF2-HMAC-SHA-256 over a random salt via the Web Crypto API — and only the resulting ciphertext is saved to this browser’s IndexedDB. Unlock to read and search them in memory, and lock to wipe the plaintext. Nothing is ever uploaded, synced or sent to a server; if you forget the passphrase the notes cannot be recovered.

  • One master passphrase unlocks a vault of notes; create, edit, delete and search
  • AES-256-GCM with a PBKDF2-HMAC-SHA-256 key (210,000 iterations, random salt + IV)
  • Only the ciphertext is stored (IndexedDB) — never plaintext
  • Export / import the still-encrypted vault to back it up or move it; change the passphrase to re-encrypt
  • Optional idle auto-lock; forgetting the passphrase means the notes are unrecoverable

What is

Encrypted notes vault

An encrypted notes vault is a private notepad whose contents are protected by a passphrase using authenticated encryption. In this tool the entire set of notes is serialised and encrypted as a single AES-256-GCM (RFC 5116) blob, with the encryption key derived from the passphrase by PBKDF2-HMAC-SHA-256 (RFC 8018) over a random salt using the browser’s Web Crypto API. Only that ciphertext is persisted, in the browser’s IndexedDB — the plaintext exists only in memory while the vault is unlocked, and there is no key escrow, so a lost passphrase means lost notes.

Security & Privacy

Related terms

AES-256-GCMPBKDF2HMAC-SHA-256authenticated encryptionkey derivationsaltIV / nonceWeb Crypto APIIndexedDBzero-knowledgepassphrasethreat model

Frequently Asked Questions

No. Notes are encrypted in your browser and only the ciphertext is saved to this device’s IndexedDB. There is no server, upload, sync or telemetry.

This tool is 100% client-side. Your notes are serialised and encrypted with AES-256-GCM using a PBKDF2-HMAC-SHA-256 key derived from your passphrase, all via the Web Crypto API, and only the resulting ciphertext blob is written to this browser’s IndexedDB. Nothing is uploaded, there is no account, no cloud sync and no analytics, and locking the vault wipes the decrypted notes and passphrase from memory. Because the data lives only in this browser, it is also not backed up for you — export the encrypted vault yourself if you want a copy.

The notes are permanently unrecoverable. There is no reset, no escrow and no backdoor by design.

The passphrase is never stored anywhere — it is only used, in memory, to derive the decryption key. That means nobody, including this tool, can recover your notes if you forget it: a correct passphrase is the only way to pass AES-GCM’s authentication and decrypt the vault. Choose something you can remember but that is hard to guess, use the built-in strength meter or random generator, and write it down somewhere safe. Keep an exported backup of the encrypted vault too, since clearing your browser data would otherwise wipe everything.

AES-256-GCM authenticated encryption with a PBKDF2-HMAC-SHA-256 key (210,000 iterations) and a random salt and IV — but its real strength depends on your passphrase.

Each vault is encrypted with AES-256 in GCM mode, which both encrypts and authenticates, so a wrong passphrase or any tampering simply fails to decrypt. The key is stretched from your passphrase with PBKDF2-HMAC-SHA-256 at 210,000 iterations over a fresh 16-byte random salt, with a random 12-byte IV per encryption, all from the Web Crypto API and crypto.getRandomValues. The cipher is strong, but the weakest link is the passphrase: a short or common one can be brute-forced offline if an attacker obtains the ciphertext, so use a long, unique passphrase.

Yes. Export the still-encrypted vault to a file, then import it on another browser and unlock it with the same passphrase.

Use Export to download your vault as a file that stays encrypted with your passphrase, so it is safe to store or transfer. On another device open the tool, choose Import, select the file, and unlock it with the same passphrase. You can also change your passphrase at any time, which re-encrypts the whole vault. Remember that importing replaces the vault currently stored in that browser, and that a shared or compromised computer can expose notes while they are unlocked.

Detailed Explanation

How It Works

What Secure Notes Is

Secure Notes is a 100% client-side encrypted notepad: a small “vault” of notes that is unlocked by a master passphrase and lives only in your browser. Every note (title and body) is held together in one vault that is serialised to JSON and encrypted as a single authenticated ciphertext blob; only that ciphertext is written to storage, never the plaintext. When you unlock, the blob is decrypted into memory so you can read, search and edit; when you lock, the decrypted notes and the passphrase are cleared from memory. There is no account, no server and no sync — the tool is a private aid, not a cloud service.

  • A passphrase-unlocked vault of notes, entirely in the browser
  • Whole vault encrypted as one AES-256-GCM blob; only ciphertext stored
  • Unlock decrypts into memory; Lock wipes plaintext and passphrase
  • No account, no server, no sync, no telemetry
  • A lightweight private notepad, not a full password manager
Methodology

How the Vault Is Encrypted and Stored

On create, you choose a master passphrase and an empty vault is encrypted and saved. The tool derives a 256-bit key from your passphrase with PBKDF2-HMAC-SHA-256 (210,000 iterations) over a fresh random 16-byte salt, then encrypts the vault JSON with AES-256-GCM using a random 12-byte IV; the salt, IV and iteration count are packed with the ciphertext so it is self-describing. That base64 blob is persisted to the browser’s IndexedDB via idb-keyval. Every create, edit or delete re-encrypts the entire vault with a new random IV and rewrites the blob, so what is on disk is always ciphertext. Search runs only on the decrypted notes held in memory while unlocked.

  • PBKDF2-HMAC-SHA-256, 210,000 iterations, random 16-byte salt
  • AES-256-GCM with a fresh random 12-byte IV per encryption
  • Salt, IV and iterations packed with the ciphertext (self-describing)
  • Persisted to IndexedDB (idb-keyval) as ciphertext only
  • Every save re-encrypts the whole vault; search is in-memory
Technical Details

The Cryptography in Detail

All cryptography uses the browser’s native Web Crypto API (window.crypto.subtle) and crypto.getRandomValues for every salt, IV and generated passphrase — never Math.random. AES-GCM is authenticated encryption: a 128-bit authentication tag is produced and checked on decrypt, so a wrong passphrase or any tampering with the stored blob simply fails rather than returning garbage. PBKDF2 deliberately makes each passphrase guess expensive, slowing offline brute-force if someone ever obtains the ciphertext. Because the key is derived, not stored, and there is no escrow, the correct passphrase is the only thing that can unlock the vault. Export wraps the same ciphertext in a small JSON envelope; changing the passphrase re-derives a new key and re-encrypts every note.

  • Web Crypto API + crypto.getRandomValues (never Math.random)
  • AES-GCM 128-bit tag authenticates data; tampering fails to decrypt
  • PBKDF2 iterations slow offline brute-force of the passphrase
  • Key is derived, never stored; no escrow, no backdoor
  • Change-passphrase re-derives the key and re-encrypts the vault
Limitations

Honest Limitations

This is a lightweight private notepad, not a hardened, audited password manager. The vault lives only in this browser: it is not synced or backed up anywhere, so clearing site data, private-browsing mode, or a browser reset can erase it — export a backup. If you forget the passphrase the notes are unrecoverable; there is no reset. Security depends on your passphrase strength: a short or common one can be brute-forced offline if an attacker obtains the ciphertext. On a shared, public or malware-infected device, notes are visible while unlocked, and any cross-site-scripting flaw in the page could read them in memory; browser storage is only as safe as the device and origin. JavaScript also cannot guarantee decrypted text is fully purged from memory. For high-stakes secrets use a dedicated password manager.

  • Only in this browser — not synced or backed up; export to keep a copy
  • Forgotten passphrase = unrecoverable notes (no reset, no escrow)
  • Strength depends on your passphrase; weak ones are brute-forceable
  • Shared/compromised device or XSS can expose unlocked notes
  • Not a substitute for an audited password manager
Privacy & Security

Private by Design

Everything happens on your device. Encryption, decryption, key derivation and random generation run locally through the Web Crypto API; only the ciphertext blob is stored, in this browser’s IndexedDB, and there is no server, upload, sync, CDN in the crypto path, logging or telemetry. Your passphrase is never stored — it exists only in memory to derive the key — and locking clears both the decrypted notes and the passphrase. The tool works offline once cached, supports dark mode and a mobile-first layout, and has no analytics. The only optional network use anywhere on the site is consent-gated ads, which never see your notes or passphrase.

  • Encrypted/decrypted locally via Web Crypto; only ciphertext stored
  • Passphrase never stored; Lock wipes plaintext and passphrase from memory
  • No server, no upload, no sync, no CDN in the crypto path, no telemetry
  • Works offline once cached; dark-mode and mobile-first
  • Only optional network use is consent-gated ads that never see your data
Secure Notes — cryptography and storage design
AspectChoiceNotes
CipherAES-256-GCMAuthenticated; wrong passphrase or tampering fails to decrypt
Key derivationPBKDF2-HMAC-SHA-256210,000 iterations over a random 16-byte salt
IV / nonceRandom 12 bytes per encryptionFresh IV on every save via crypto.getRandomValues
Randomnesscrypto.getRandomValuesNever Math.random for salts, IVs or generated passphrases
At restCiphertext in IndexedDBPlaintext never persisted; exists only in memory while unlocked
BackupExport / import encrypted fileStays encrypted; forgotten passphrase = unrecoverable

The cipher is strong; the weakest link is passphrase strength. Notes live only in this browser and are not backed up for you. Everything runs locally. As of July 2026.