Bcrypt Password Hash Generator
bcrypt Hash Generator — Free Online Tool
Generate a salted, deliberately slow bcrypt hash - the only algorithm on this page that is actually correct for passwords. Enter your text below and press Crypt.
Bcrypt Password Hash Generator
Generate a salted, deliberately slow bcrypt hash - the only algorithm on this page that is actually correct for passwords.
What bcrypt Is
bcrypt is a password hashing function, which is a different job from every other algorithm on this page. It is built on the Blowfish key schedule, it generates its own random salt, and it takes a cost factor that controls how many iterations it performs. Being slow is the feature: the whole point is to make each guess expensive for an attacker.
| Algorithm | bcrypt (Blowfish-based key derivation family) |
|---|---|
| Designed by | Niels Provos and David Mazieres, 1999 |
| Specification | Modular crypt format ($2y$) |
| Status in 2026 | Correct for password storage |
A worked example
Hashing the five characters hello with bcrypt gives:
Run it twice and you will get two different results. That is not a fault — it is the salt, and it is the whole reason bcrypt is safe for passwords.
How bcrypt Got Here
Niels Provos and David Mazieres presented bcrypt at USENIX in 1999, for OpenBSD. Its key insight was adaptive cost: as hardware gets faster, you raise the work factor and the algorithm stays expensive, which no fixed-cost hash can do. It has been the default password hash in PHP since version 5.5 introduced password_hash(), and it is what Laravel's Hash facade uses out of the box - which is the function behind this page. It remains an accepted choice today, with Argon2id generally preferred for new systems because it also resists attackers with large amounts of memory.
Security Status of bcrypt
bcrypt has no known algorithmic break. Its known limits are practical: input is truncated at 72 bytes, so very long passphrases lose their tail, and some implementations handled null bytes badly in the past - which is why the $2y$ prefix exists to mark corrected ones. It is memory-light compared to Argon2id and scrypt, so it offers less resistance to attackers using custom hardware, but it remains far stronger for passwords than any general-purpose hash.
Use bcrypt for
- Storing user passwords, with a cost factor tuned so hashing takes roughly 250ms on your own hardware.
- Hashing API keys and tokens that a user chooses.
- Any secret where an attacker who obtains the database should still face an expensive brute force.
Do not use bcrypt for
- File integrity or checksums - bcrypt is salted, so the same file gives a different result every time.
- Content addressing, deduplication or cache keys, for the same reason.
- Digital signatures.
- Passphrases longer than 72 bytes without pre-hashing them, because the excess is silently discarded.
How to Use This bcrypt Generator
- Paste or type your text into the input box above, or upload a plain-text file.
- Press the Crypt button.
- The digest appears in the output box, ready to copy.
The same input always produces the same output@if($algo['status'] === 'password') — except with bcrypt, where the random salt makes every result different@endif, on this page or in any correct implementation. If a digest from another tool disagrees with this one, the cause is almost always a difference in the input: a trailing newline, a different character encoding, or invisible whitespace.
Frequently Asked Questions About bcrypt
Why does bcrypt give a different hash every time for the same password?
Because it generates a fresh random salt on each call and stores it inside the output string. That is correct and necessary: identical passwords produce different hashes, so an attacker cannot tell from a leaked database which users share a password, and precomputed rainbow tables are useless. Verification works by reading the salt back out of the stored hash.
How do I check a password against a bcrypt hash?
Never by hashing the input and comparing strings - the new salt guarantees they will differ. Use the verification function your language provides, such as password_verify() in PHP or Hash::check() in Laravel, which extracts the salt and cost from the stored hash and recomputes with them.
What does the cost factor mean?
It is a base-2 logarithm of the iteration count, so cost 10 is 1,024 iterations and cost 12 is 4,096. Each increment doubles the work. The usual guidance is to pick the highest value that keeps hashing under roughly 250ms on your production hardware, and to raise it as machines get faster.
Should I use bcrypt or Argon2id?
Argon2id is the current recommendation for new systems because it is memory-hard as well as slow, which blunts attacks using GPUs and custom hardware. bcrypt remains a perfectly defensible choice, is available everywhere, and is vastly better than any fast hash. Migrating an existing bcrypt database is worth doing on next login rather than urgently.
Hashing in One Minute
A hash function takes input of any length and returns a fixed-length digest. Three properties define a cryptographic hash: the same input always yields the same digest, it is infeasible to recover the input from the digest, and it is infeasible to find two inputs that produce the same digest. Hashing is one-way and keyless, which is what separates it from encryption — there is nothing to decrypt, because nothing was encrypted.
Where hashes go wrong is almost always a mismatch between the job and the tool. A checksum for detecting a corrupted download and a password hash protecting a leaked database are different problems, and an algorithm that is excellent at one can be disqualifying at the other. For the full treatment — how the algorithms work internally, salting, HMAC, rainbow tables and the rest — see the complete guide to hash generation.
The Other Algorithms in This Tool
The generator above supports every algorithm below. Each has its own page explaining what it is for.