Password hashing parameters
Two questions, answered in your browser: do my settings meet the OWASP minimums, and how many iterations can my hardware actually afford?
Measure your own hardware
Runs PBKDF2 through Web Crypto, times it, and reports how many iterations fit in your time budget. Nothing leaves the page.
Read this before quoting the number
Measured in a browser tab on the device you are using, not on your server. Use it as an order of magnitude.
Check your current settings
Enter what your application uses today. The verdict compares it to the published minimums, nothing more.
Meets the OWASP minimum
Matched configuration: m=19456 KiB, t=2, p=1
Parallelism is displayed but not scored: OWASP presents it as a tradeoff dimension rather than a threshold.
Thresholds read from the OWASP Password Storage Cheat Sheet (2026-09-06)
The published minimums
These are the values listed on the OWASP Password Storage Cheat Sheet, transcribed without interpretation. The five Argon2id lines are presented as equivalent to each other, and so are the five scrypt lines: you pick the one that fits your CPU and RAM budget, you do not need to satisfy all five.
Order of preference stated by OWASP: Argon2id > scrypt > bcrypt > PBKDF2
Stated time budget: a hash should take less than one second. (1000 ms)
| Argon2id | memory | iterations (t) | parallelism (p) |
|---|---|---|---|
| 46 MiB | m=47104 | t=1 | p=1 |
| 19 MiB | m=19456 | t=2 | p=1 |
| 12 MiB | m=12288 | t=3 | p=1 |
| 9 MiB | m=9216 | t=4 | p=1 |
| 7 MiB | m=7168 | t=5 | p=1 |
| scrypt | N | r | p |
|---|---|---|---|
| 128 MiB | 2^17 | r=8 | p=1 |
| 64 MiB | 2^16 | r=8 | p=2 |
| 32 MiB | 2^15 | r=8 | p=3 |
| 16 MiB | 2^14 | r=8 | p=5 |
| 8 MiB | 2^13 | r=8 | p=10 |
| PBKDF2 | iterations |
|---|---|
| HMAC-SHA-256 | 600,000 |
| HMAC-SHA-512 | 220,000 |
| HMAC-SHA-1 | 1,400,000 |
| bcrypt | cost >= 10 |
bcrypt also caps input at 72 bytes, and OWASP warns against naive pre-hashing because of null-byte handling and password shucking.
Thresholds read from the OWASP Password Storage Cheat Sheet (2026-09-06)
Why a benchmark and not a recommendation
Iteration counts are not a property of an algorithm, they are a property of your hardware. A number that is comfortable on a 2026 server can lock up a shared container. That is why the second half of this page measures instead of advising.
The measurement uses PBKDF2 through the browser's native Web Crypto API. No library is downloaded, nothing is sent anywhere, and you can confirm both claims in your browser's Network tab.
What this measurement is not
A browser is not your production server. Web Crypto runs native code, but it runs it on your laptop, inside a tab, next to whatever else is open. Read the result as an order of magnitude for the machine you are sitting at, not as a benchmark of your backend. Argon2id and scrypt are deliberately not benchmarked here: neither is exposed by Web Crypto, and shipping a WebAssembly build would measure the build, not your server.
Frequently asked questions
Which algorithm should I use for new code?
OWASP lists Argon2id first, then scrypt if Argon2id is unavailable, then bcrypt for legacy systems, then PBKDF2 when FIPS-140 compliance is required. The order is theirs, not ours.
My Argon2id memory is lower than 47104 KiB. Is that a failure?
Not necessarily. OWASP lists five equivalent configurations, and lower memory is acceptable when the iteration count rises to compensate: 19456 KiB with t=2, 12288 with t=3, 9216 with t=4, 7168 with t=5. The checker on this page passes your settings if they meet or exceed any one of the five.
Why does the checker ignore parallelism?
Because OWASP presents parallelism as part of a tradeoff rather than as a floor to clear. We display the value you enter and score memory and iterations only. Saying so is more useful than pretending to a precision the source does not give.
Is my password sent anywhere by the benchmark?
The benchmark does not use your password at all. It derives bits from a fixed probe string with a random salt, purely to time the operation. There is no input field for a password in that section.
How current are these numbers?
They were read from the OWASP Password Storage Cheat Sheet on 2026-09-06. OWASP revises them as hardware gets faster, so treat that date as part of the answer and follow the source link if you need to confirm.