scrypt Key Derivation & Verification
Derive scrypt keys with explicit N, r and p parameters. Export a complete JSON record and verify it locally.
Keep the parameters with the derived key
scrypt takes a password, salt, N, r, p and output length. This tool returns a JSON record with algorithm=scrypt, version=1, those parameters, and lowercase hexadecimal salt and hash fields. That JSON wrapper is this tool’s interchange format; it is not a universal scrypt password-string standard.
Verify accepts that complete record and a candidate password. It validates resource costs before calculating, then compares derived bytes. You can reproduce the hash in Node crypto.scrypt or Python hashlib.scrypt using the recorded values. Passwords use UTF-8 without normalization.
Memory and browser limits
Defaults are N=131072, r=8, p=1 and a 32-byte key with a random 16-byte salt. N must be a power of two from 2 to 262144; r is 1–32 and p is 1–8. Output may contain 1–128 bytes. Custom hex salts can be empty for published test vectors; short salts show a diagnostic.
The estimated working allocation 128×r×(N+p)+256×r cannot exceed 256 MiB; N×r×p is capped at 16777216. A Worker can be cancelled and stops after 30 seconds. An allowed configuration is not a production security recommendation.
Reference
Questions & answers
Why is there no single standard scrypt hash string?
Applications use different wrappers. The JSON record makes every parameter and byte encoding explicit; convert it deliberately for another application.
Does p create browser threads?
No. It is the scrypt parallelization parameter. The pinned WASM implementation executes inside one browser Worker.
Is my input uploaded?
No. Processing runs in your browser. Engines load from this site; the tool does not send input to a processing API or save it. Clear removes the visible input and result.