Bitwarden Argon2id: how to enable it and which KDF settings to use

Bitwarden supports Argon2id as its key derivation function (KDF), and you can switch to it in the web app under Settings, Security, Keys. Pick Argon2id in the Algorithm menu, keep or adjust the defaults (32 MiB memory, 6 iterations, 4 threads), then select Update encryption settings and confirm with your master password. The change applies to your account on every Bitwarden app.
This guide explains what Argon2id does in Bitwarden, how it compares with PBKDF2, the exact steps to switch, and how to choose memory, iteration and parallelism values without locking out a phone or an older device.

What Argon2id does in Bitwarden
Argon2id is the function Bitwarden uses to turn your master password into the key that protects your vault, and it makes every password guess expensive for an attacker. Bitwarden never stores your master password. Instead, each client runs the master password through a KDF to derive a master key, and that key is what unlocks the vault encryption key.
The point of a KDF is cost. If someone copies an encrypted vault, they have to run the same KDF for every password they try. A slow, memory-hungry KDF means far fewer guesses per second, which is why the choice of algorithm matters most for people whose master password is not very long.
Argon2 comes in three variants. Per RFC 9106, Argon2d uses data-dependent memory access, Argon2i uses data-independent memory access, and Argon2id combines both, so it resists side-channel attacks and time-memory trade-offs. The RFC makes Argon2id the variant every implementation must support, and it is the variant Bitwarden uses.
Argon2id vs PBKDF2 in Bitwarden
Argon2id is the stronger choice against GPU and ASIC cracking because it forces each guess to use a block of memory, while PBKDF2 only costs processor time. Bitwarden offers both algorithms, and PBKDF2 SHA-256 remains a valid, supported option.
| Setting | PBKDF2 SHA-256 | Argon2id |
|---|---|---|
| Bitwarden default | 600,000 iterations | 32 MiB memory, 6 iterations, 4 threads |
| What makes it slow | CPU time only | CPU time plus memory |
| Resistance to GPU cracking | Moderate | High |
| Main trade-off | Needs very high iteration counts | High memory values can strain mobile apps |
Bitwarden states that its Argon2id defaults sit above the current OWASP recommendations. For comparison, the OWASP Password Storage Cheat Sheet lists minimum Argon2id configurations such as 19 MiB with 2 iterations and 1 thread, and recommends 600,000 iterations for PBKDF2-HMAC-SHA256. Bitwarden raised its PBKDF2 minimum to that 600,000 level in release 2026.2.1. If you want to raise PBKDF2 instead of switching, see our guide to setting Bitwarden KDF iterations manually.
How to enable Argon2id in Bitwarden
You enable Argon2id from the Bitwarden web app, not from the browser extension or mobile app. The steps follow the Bitwarden encryption key derivation help page:
- Sign in to the Bitwarden web app (vault.bitwarden.com, vault.bitwarden.eu or your self-hosted server).
- Go to Settings, then Security.
- Select the Keys tab.
- Open the Algorithm dropdown and choose Argon2id.
- Review the KDF memory, KDF iterations and KDF parallelism fields that appear (optional).
- Select Update encryption settings and confirm with your master password.

Bitwarden notes that the symmetric vault key is not rotated by this change, so your vault data is not re-encrypted; only the way your master key is derived changes. A backup is not required, but taking one first is sensible. In the web app you can do that under Tools, Export, and the Bitwarden export guide recommends the encrypted JSON format if the file will sit on disk. Be ready to unlock or log in again on your other devices after the change.

Which Argon2id settings to use
The Bitwarden defaults of 32 MiB memory, 6 iterations and 4 threads are the right choice for most people, because they already exceed the OWASP minimums and work on phones. Change them only if you understand the cost to every device you use.
- KDF memory: the most effective lever against GPU cracking. Bitwarden warns that values above 64 MiB trigger a warning dialog when iOS autofill starts or when you create a Send from the share sheet, unless biometric unlock is on, because iOS extensions have tight memory limits.
- KDF iterations: each extra pass increases unlock time in a linear way. Raise it if unlocking feels instant on your slowest device.
- KDF parallelism: Bitwarden's rule of thumb is a maximum of the number of CPU cores times 2. Most people should leave it at 4.
A practical test: after changing a value, lock and unlock Bitwarden on your slowest device, usually an older phone. If unlocking takes more than a few seconds or autofill fails, step the memory value back down. Remember that a long, unique master password still protects you far more than any KDF tuning does.
FAQ
Does switching to Argon2id change my master password?
No. Your master password stays the same. Only the algorithm that derives the key from it changes.
Can I switch back to PBKDF2?
Yes. Return to Settings, Security, Keys in the web app, choose PBKDF2 SHA-256 in the Algorithm menu and select Update encryption settings.
Do my Bitwarden apps need an update before I switch?
Yes, update every Bitwarden app and browser extension you use first. Bitwarden added Argon2id in early 2023, and an outdated client that predates that support cannot unlock an Argon2id account.
Related: Bitwarden Authenticator imports TOTP tokens from other apps, KeePassXC passkeys and Bitwarden import, what the LastPass vault theft meant for KDF settings
The browser extension in Firefox quit working after I changed to Argon2id. It was a bit of a hassle to change back to PBKDF2 SHA-256 while using 2FA to log in. I’d wait until the extensions all get an update to support Argon2id.
Your articles make it worth to still stick with ghacks, Ashwin. Thank you! But man those articles from the new authors are … something else.
Thanks @Ashwin for this very interesting article! :]
Thank you for heads up. Changed to Argon2 in latest ver of Chrome after checking version of Android
Default values fail in Waterfox and Librewolf. OK in Brave but I reset to previous values.
I had not tested it in my phone. After the reset, an app in which I do use Google sign in failed logon. Google itself was OK. Some may see irony in that sentence.
Some may see irony in preference of browsers and use of Google on phone but phone screens are too small for me. I never browse using the phone and think its a good thing if Google realises some people still genuinely care for nature.
Tack