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 / language | Generation | Verification |
|---|---|---|
| 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
- Paste the original password in the first field.
- Paste the bcrypt hash (60 characters, starting with
$2a$,$2b$, or$2y$). - Click Verify to see if they match.
Structure of a bcrypt hash
A bcrypt hash has 60 characters split into four parts separated by $.
| Part | Example | Meaning |
|---|---|---|
| Version | $2b$ | Identifies the variant (2a, 2b, or 2y) |
| Cost | 10$ | Number of rounds (computational cost) |
| Salt | 22 characters | Random sequence embedded in the hash |
| Hash | 31 characters | Result of bcrypt applied to the text + salt |