FormatterHQ

Bcrypt Hash Checker

Check whether a password matches a bcrypt hash — useful for debugging logins, migrations and seeded accounts in applications you maintain.

Input TEXT
Output TEXT
Ready.

How to use the Bcrypt Hash Checker

  1. Type the password to test into the input editor, or click Sample.
  2. Paste the stored hash (for example from your users table) into the Bcrypt hash field in the options panel.
  3. Click Check password.
  4. Read the result: “Match” means the password is correct for that hash; otherwise the tool reports no match.

Bcrypt hash checker: does this password match?

A bcrypt hash cannot be reversed, but it can be verified: take a candidate password, hash it with the salt and cost stored in the hash, and compare. This bcrypt hash checker does exactly that, like PHP’s password_verify() or bcrypt.compare() in Node.js, and tells you whether the password matches.

Example

The sample hash below was created from the password password:

$2y$10$oNf6iuS8XYJmJbpK1pIyHO5aGwiTlpF0b9.435FCUy.tMMqzNrBQ2

Checking password against it reports a match; any other password, even Password with a capital P, does not.

How verification works

  1. The hash is parsed: version ($2y$), cost (10) and the 22-character salt.
  2. Your password is hashed again with that salt and cost.
  3. The result is compared with the hash part of the stored string.

Because the salt and cost are stored inside the hash, no other information is needed. Hashes with the $2a$, $2b$, $2x$ and $2y$ prefixes are accepted. The input must be a complete 60-character bcrypt string; otherwise the tool explains that it is not a valid bcrypt hash.

What the parts of the hash tell you

The number after the version is the cost: the work factor is 2 to that power, so $10$ means 1,024 rounds of the expensive key setup and every step up doubles the time a check takes. PHP's password_hash() defaults to cost 10, while newer Laravel releases use 12. If hashes in one table show different costs, that is normal: frameworks rehash on the next login when the configured cost changes.

Bcrypt also has a fixed input limit. Only the first 72 bytes of the password are used, so two long passphrases that share the same first 72 bytes produce matching results. Multi-byte characters such as accented letters or emoji use two to four bytes each in UTF-8, so the limit is reached sooner than the character count suggests.

Debugging failed logins

  • Trailing whitespace or newlines. A password copied with a trailing space is a different password. The tool ignores a single trailing newline, but other whitespace counts.
  • Truncated hash column. If the database column is shorter than 60 characters, stored hashes are cut off and can never match.
  • Pre-hashing or pepper. Some applications hash or HMAC the password with a secret “pepper” before bcrypt, as WordPress 6.8 does with HMAC-SHA384. Plain bcrypt verification will fail for those; use the matching tool, such as the WordPress checker.
  • Different framework conventions. A password lowercased or normalised by the application before hashing must be entered the same way here.

Use it responsibly

Only check hashes from systems you own or administer, with passwords you are entitled to know — for example, confirming that a seeded test user has the expected password or that a migration preserved hashes. Bcrypt’s slowness is intentional: every check takes noticeable time at higher costs, which is exactly what protects real users’ passwords if a database leaks.

Everything runs locally in your browser; the password and hash are not uploaded. To create a new hash, use the Bcrypt Hash Generator, or for WordPress hashes the WordPress Password Hash Checker.

Frequently asked questions

Can this tool recover a password from a bcrypt hash?
No. Bcrypt cannot be decrypted. The checker only tells you whether a password you already know matches the hash.
Why does my correct password not match?
Check for extra whitespace, a truncated hash column, or an application that transforms the password (pepper, pre-hashing or normalisation) before hashing it.
Does it support $2a$ and $2b$ hashes?
Yes. $2a$, $2b$, $2x$ and $2y$ bcrypt hashes are accepted.
Why does checking take a moment?
Verification repeats the full bcrypt computation at the cost stored in the hash. Higher costs are deliberately slower.
Why does a longer password still match the hash?
Bcrypt only processes the first 72 bytes of a password and ignores the rest. If the stored password was longer than that, any candidate with the same first 72 bytes matches. Applications that need longer passphrases usually pre-hash them before bcrypt.

Last updated September 26, 2026

Related tools

Bcrypt Hash Generator Generate a bcrypt password hash ($2y$) with a configurable cost factor, compatible with PHP password_hash and Laravel. Color Contrast Checker (WCAG) Check the WCAG 2 contrast ratio of text and background colours for AA and AAA, preview it live and get the closest passing colour. Password Strength Checker Estimate password entropy and crack time for online and offline attacks, and spot common patterns — checked privately in your browser. WordPress Password Hash Checker Check if a password matches a WordPress user_pass hash ($wp$ bcrypt, $P$ phpass or legacy MD5). BLAKE2b Hash Generator Generate BLAKE2b hashes (128–512 bits) with optional keyed MAC mode, from text or files. BLAKE2s Hash Generator Generate BLAKE2s hashes (128–256 bits), the 32-bit-optimised BLAKE2 variant, with optional key. BLAKE3 Hash Generator Generate BLAKE3 hashes from text or files — the fast, parallel successor of BLAKE2. Checksum Calculator Calculate MD5, SHA-1, SHA-256, SHA-512, CRC-32 and more checksums of a file or text at once. CRC-16 Hash Generator Calculate CRC-16 checksums (ARC, MODBUS, CCITT, XMODEM, KERMIT, X-25, USB) for text or files. CRC-32 Hash Generator Generate the CRC-32 hash of any text or file online. Instant 32-bit checksum in hex, computed in your browser. CSR Decoder Decode a PKCS#10 certificate signing request to check the subject, SANs, key size and signature before you send it to a CA. CSR Generator Generate an RSA private key and certificate signing request (CSR) with SANs in your browser — the private key never leaves your device.