Blowfish-based · password storage · salted

bcrypt password hashing

bcrypt is based on the Blowfish cipher, designed by Niels Provos and David Mazieres in 1999. Deliberately slow with a configurable cost factor. Widely used for password storage in web applications.

Paste a bcrypt hash above to see its structure.

How to use this tool

  1. Paste a full bcrypt hash into the bcrypt hash reference box.
  2. The structure breakdown appears instantly in the panel below — no button needed.
  3. Read the Algorithm version line to see whether the hash is $2a$, $2b$, or $2y$.
  4. Check Cost factor and Total cost to see how many rounds (2^N) the hash was stretched.
  5. Review the Salt (Base64) and Hash (Base64) lines, then delete the text to analyze another hash.

Why this tool is helpful

Verify a hash is well-formed

Confirm a pasted string matches the exact $2a$10$… layout before trusting it in code or configuration.

Read the cost factor

See at a glance how expensive a hash is (2^N rounds) and audit whether your app's work factor is still strong enough.

Inspect salt and digest

Split the hash into its 22-character salt and 31-character digest to see how bcrypt stores both in one string.

Spot version differences

Identify $2a$, $2b$, and $2y$ variants — and the PHP-specific notes that come with them.

Learn bcrypt's structure

A plain-language breakdown of the format, handy when implementing or migrating password storage.

Stay private

Analysis runs entirely in your browser. The hash you paste is never sent to or stored on a server.

FAQ

What is bcrypt?

bcrypt is a password-hashing function based on the Blowfish cipher, designed by Niels Provos and David Mazières in 1999. It's deliberately slow and salted, making brute-force attacks far harder than with fast hashes like MD5 or SHA.

What does the $2a$10$… format mean?

The string breaks into four parts: $2a$ is the algorithm version, 10 is the cost factor, the next 22 characters are the salt, and the final 31 characters are the hash digest.

What's the difference between $2a$, $2b$, and $2y$?

They're closely related versions. $2a$ is the original but has a bug in some PHP implementations; $2b$ is the fixed version; $2y$ is PHP's alias for $2b$. For PHP, use $2b$ or $2y$.

What is the cost factor?

It's a work factor controlling how many rounds bcrypt runs. A cost of 10 means 2^10 = 1,024 iterations. Raising it slows both attackers and your server, so tune it to your hardware.

Can this tool hash or verify a password for me?

No. This is a reference tool that parses an existing hash's structure. bcrypt isn't available in browser Web Crypto, so hashing and verification happen server-side, e.g. bcrypt (Node.js), bcrypt (Python), or pwhash::bcrypt (Rust).

Why does my paste say "Not a valid bcrypt hash"?

A valid hash must match exactly: a version prefix ($2a$, $2b$, $2x$, or $2y$), a one- or two-digit cost, a 22-character salt, and a 31-character digest — all using bcrypt's Base64 alphabet (A–Z, a–z, 0–9, ., /). A missing or extra character breaks the match.

Does any of my data leave my browser?

No. Everything runs locally in JavaScript. The hash you paste is never uploaded, logged, or sent to any server.