AES-256-GCM
Authenticated encryption. It doesn't just hide the contents, it detects tampering. If one byte of the vault changes, decryption fails instead of returning something plausible. Nobody with access to your disk can quietly edit one entry.
PBKDF2-SHA256, 600,000 iterations
A password isn't a key. This turns one into the other deliberately slowly, so every guess an attacker makes costs them 600,000 hash operations. That's the current OWASP recommendation for this function.
Why PBKDF2 and not a memory-hard function like Argon2id: PBKDF2 ships natively in the browser's Web Crypto API, with no third-party code in the path between your password and your key. At 600,000 iterations it meets the published standard for the function in use.
32-byte random salt, per vault
Two people with the same password get different keys.
12-byte random IV, per save
Regenerated every time the vault is written, never reused.
The iteration count is stored in the vault
Alongside the salt and IV. Each vault records how it was made, which is how the count was raised from 310,000 to 600,000 without breaking anything already encrypted. A vault claiming an unreasonable count is refused rather than run.
Passwords
Minimum 12 characters. Scoring is by length, not by symbol rules, because length is what actually adds entropy. Four or five random words beats any twelve-character password you'd remember. There's also a short blocklist of the passwords that sail through on length alone, and it's compiled into the extension. The check runs against an in-memory list in the same function where you typed. Nothing about your password, not even a hash of it, is transmitted, because there is no network code to transmit it with.