Password Hash Tool
Derive and verify PBKDF2 password hashes in your browser, and inspect bcrypt and Argon2 hash formats with their limits stated.
- Runs locally in your browser
- No upload required
Try it
Supported formats
Privacy
Runs entirely in your browser. Your input is never uploaded, stored, or sent to a third party.
Derived a PBKDF2-HMAC-SHA256 hash with 1,000 iterations.
How it works
- Decoded the base64 salt.
- Ran PBKDF2-HMAC-SHA256 with 1,000 iterations to derive 32 bytes.
- Encoded the iteration count, salt and derived key as a PHC-style string.
- A password hash is only as strong as its parameters and salt; use a per-password random salt and a high iteration count.
- The password and derived key stay in your browser; nothing is sent or stored.
Methodology
- Decode the salt and parameters from the supplied encoding.
- For PBKDF2, run the RFC 8018 block construction over HMAC-SHA256 for the requested iteration count.
- Compare a stored key with the derived key in constant time, without early exit, so a timing signal does not leak matching prefixes.
- For bcrypt and Argon2, parse only the encoded structure and report its parameters, stating that this tool does not compute those primitives.
Usage
- Choose derive, verify or inspect.
- For derive, supply a per-password salt and an iteration count; the tool outputs a PHC-style encoding.
- For verify, paste the stored encoding and the candidate password.
- For inspect, paste a bcrypt or Argon2 encoding to read its parameters.
Examples
These are examples, not current values: they use fixed inputs, while the interactive tool computes live results in your browser.
Derive a PBKDF2 hash (1,000 iterations)
{
"mode": "derive",
"password": "correct horse battery staple",
"saltBase64": "c2FsdHktU2FsdA==",
"iterations": 1000
}Verify a matching PBKDF2 hash
{
"mode": "verify",
"password": "password",
"hash": "$pbkdf2-sha256$i=1$c2FsdA==$Eg+2z/z4syxD5yJSVsT4N6hlSMkszDVICAWYfLcL4Xs="
}Inspect a bcrypt encoding
{
"mode": "inspect",
"hash": "$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewdBPj4J/HS.iK2"
}Limitations
What a password hash must do
Password storage hashes must be slow and salted. A per-password random salt stops an attacker from amortising one guess across many accounts, and a high work factor makes each guess expensive. PBKDF2 expresses that work as an iteration count; bcrypt as a cost factor; Argon2 as memory, iterations and parallelism.
This tool is a development aid. It does not store hashes, manage peppers or enforce lockout, and it must not be used to check real credentials in production.
Why the bcrypt/Argon2 limit is stated, not hidden
A verifier that returns 'valid' without actually running the primitive would be worse than no tool at all. The inspect mode reports the encoding and its parameters and explicitly declines to verify, which is the honest and testable behavior the security contract requires.
Frequently asked questions
- Why can it derive PBKDF2 but not bcrypt or Argon2?
- PBKDF2 is a compact standard construction over HMAC that can be implemented exactly and tested against published vectors. bcrypt and Argon2 are larger, stateful primitives whose browser re-implementations are hard to get right; rather than ship a fake verifier, the tool inspects their encoding and leaves verification to the server library.
- Which algorithm should I use for a new password store?
- Prefer Argon2id (memory-hard), then bcrypt, then scrypt. PBKDF2 remains acceptable where a standard or FIPS requirement mandates it, provided the iteration count is high. The choice belongs on the server, not in the browser.
- Is the derived hash sent anywhere?
- No. The password, salt and derived key are processed in memory by this page and are never transmitted or stored.
Sources
Send feedback
Tell us if this tool helped, report a problem, or suggest a tool. Only the message you type is sent — never the input you used in the tool.
Was this tool useful?
Prefer to write to us directly? See the contact page.