Size the Argon2 memory parameter in KiB blocks, validate it against the lane minimum and project peak server RAM.
Argon2 fills a memory matrix of m one-kibibyte blocks split across p lanes, so each lane owns m ÷ p blocks and the spec rejects any m below 8 × p. An attacker's silicon cost scales with memory × passes, which is what a GPU cannot cheaply replicate thousands of times over. Memory is Argon2's real defence, but it is also the parameter that will exhaust a login service under a burst — sizing it without multiplying by peak concurrency is how authentication nodes get OOM-killed.
Argon2 Memory
Argon2 allocates m KiB blocks of 1 KiB each, rounded up to a multiple of 4 × lanes and never below 8 × lanes; peak RAM = m × concurrent hashes.
Area-time hardness
attacker area-time cost ∝ memory × passes, the metric that makes Argon2 hostile to ASICs.
Argon2 allocates m KiB blocks of 1 KiB each, rounded up to a multiple of 4 × lanes and never below 8 × lanes; peak RAM = m × concurrent hashes. Argon2 fills a memory matrix of m one-kibibyte blocks split across p lanes, so each lane owns m ÷ p blocks and the spec rejects any m below 8 × p. An attacker's silicon cost scales with memory × passes, which is what a GPU cannot cheaply replicate thousands of times over.
Memory is Argon2's real defence, but it is also the parameter that will exhaust a login service under a burst — sizing it without multiplying by peak concurrency is how authentication nodes get OOM-killed.
This calculator takes 4 inputs: Argon2 memory cost, Parallelism (lanes), Time cost (passes), Peak concurrent hashes. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
OWASP lists m=47104 KiB (46 MiB) with t=1 and p=1, or m=19456 KiB (19 MiB) with t=2 and p=1, as equivalent minimums. Trade memory for passes only along that curve — do not drop below 19 MiB.