Bcrypt Tester

The text believed to have generated the hash
60 characters, starting with $2a$, $2b$, or $2y$

About the Bcrypt Tester

Verify whether a plain text password matches a bcrypt hash. It's the inverse of the generator: extremely useful for debugging logins, recovering access in test environments, and validating passwords without resetting the database. All verification happens locally, with nothing sent to any server. To generate bcrypt hashes, use our Hash Generator.

Use cases by framework

The bcrypt algorithm is standardized, so hashes generated by the frameworks below follow the same format and can be verified here without any conversion.

Framework / languageGenerationVerification
Laravel (PHP)Hash::make($plain)Hash::check($plain, $hash)
Node.js (bcrypt / bcryptjs)bcrypt.hash(plain, rounds)bcrypt.compare(plain, hash)
Python (passlib / bcrypt)bcrypt.hashpw(plain, salt)bcrypt.checkpw(plain, hash)
Spring Security (Java)encoder.encode(plain)encoder.matches(plain, hash)
Django (Python)make_password(plain)check_password(plain, hash)
Ruby (bcrypt-ruby)BCrypt::Password.create(plain)password == plain

How to verify in 3 steps

  1. Paste the original password in the first field.
  2. Paste the bcrypt hash (60 characters, starting with $2a$, $2b$, or $2y$).
  3. Click Verify to see if they match.

Structure of a bcrypt hash

A bcrypt hash has 60 characters split into four parts separated by $.

PartExampleMeaning
Version$2b$Identifies the variant (2a, 2b, or 2y)
Cost10$Number of rounds (computational cost)
Salt22 charactersRandom sequence embedded in the hash
Hash31 charactersResult of bcrypt applied to the text + salt

Frequently asked questions