Generate salted bcrypt password hashes with an adjustable cost factor, or verify a password against an existing hash. Standard $2a$/$2b$ output that inter-operates with every language. 100% in your browser — no password ever leaves your device.
A fresh cryptographically-random salt (via crypto.getRandomValues) is baked into every hash, so the same password produces a different hash each time — that is by design. Cost 10 means 2¹⁰ key-expansion rounds. Each +1 doubles the work: costs above 12 may take a moment on this device.
Verification re-derives the hash using the salt and cost embedded in the supplied hash, then compares in constant time. It works with standard $2a$, $2b$ and $2y$ bcrypt hashes from any language or library.