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

A per-password random salt of at least 8 bytes, base64 encoded.

Mode
derive
Algorithm
pbkdf2-sha256
Iterations
1,000
Result
$pbkdf2-sha256$i=1000$c2FsdHktU2FsdA==$3YcNZ0ltf6zv4CFSwMc5ntPlOe8P7URtvlqmLhhrbWc=
Note
PBKDF2-HMAC-SHA256 derived with the bundled implementation; store the salt alongside the hash.

Supported formats

Input
text, select, number
Output
text, boolean

Privacy

Runs entirely in your browser. Your input is never uploaded, stored, or sent to a third party.

Processing
In your browser
Privacy level
Browser only

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

  1. Decode the salt and parameters from the supplied encoding.
  2. For PBKDF2, run the RFC 8018 block construction over HMAC-SHA256 for the requested iteration count.
  3. Compare a stored key with the derived key in constant time, without early exit, so a timing signal does not leak matching prefixes.
  4. For bcrypt and Argon2, parse only the encoded structure and report its parameters, stating that this tool does not compute those primitives.

Usage

  1. Choose derive, verify or inspect.
  2. For derive, supply a per-password salt and an iteration count; the tool outputs a PHC-style encoding.
  3. For verify, paste the stored encoding and the candidate password.
  4. 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)

jsonSelect to copy
{
  "mode": "derive",
  "password": "correct horse battery staple",
  "saltBase64": "c2FsdHktU2FsdA==",
  "iterations": 1000
}

Verify a matching PBKDF2 hash

jsonSelect to copy
{
  "mode": "verify",
  "password": "password",
  "hash": "$pbkdf2-sha256$i=1$c2FsdA==$Eg+2z/z4syxD5yJSVsT4N6hlSMkszDVICAWYfLcL4Xs="
}

Inspect a bcrypt encoding

jsonSelect to copy
{
  "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

  1. RFC 8018: PKCS #5 — Password-Based Cryptography Specification v2.1 — IETF
  2. NIST SP 800-63B: Digital Identity Guidelines — Authentication and Lifecycle Management — NIST
  3. OWASP Password Storage Cheat Sheet — OWASP