Bcrypt Generator β How to Hash & Verify Passwords Correctly
Learn what bcrypt is, how the cost factor and salt work, how bcrypt hashes are structured, and how to use a free bcrypt generator to test and verify password hashes in your development workflow.
By sadiqbd Β· June 6, 2026
Storing passwords in plain text is a career-ending mistake β bcrypt is why it doesn't happen
If a database gets breached and the passwords are stored as plain text or even simple MD5/SHA hashes, every user's password is immediately compromised. Attackers can reverse common hashes in seconds using precomputed rainbow tables. bcrypt was designed specifically to prevent this.
Understanding bcrypt β what it does, why it's different from regular hashing, and how to use a bcrypt generator correctly β is a security fundamental for anyone building systems that handle user authentication.
What Is Bcrypt?
Bcrypt is a password hashing function designed in 1999 by Niels Provos and David Mazières. It has three properties that make it suitable for passwords, where many other hash functions don't:
1. It's deliberately slow. Bcrypt includes a configurable "cost factor" (or "work factor") that controls how much computation is required to produce the hash. Higher cost = more iterations = more time. This is a feature, not a bug. A fast hash function like MD5 can be computed billions of times per second on modern hardware, making brute-force attacks trivial. Bcrypt at cost 12 might take 250ms β fast enough for login but slow enough to make brute force impractical.
2. It incorporates a salt automatically. A salt is a random value added to the password before hashing, ensuring that two users with the same password get different hashes. Bcrypt generates and stores the salt as part of the hash β you don't manage it separately.
3. The output includes everything needed to verify. A bcrypt hash contains the algorithm version, cost factor, salt, and the hash itself β all in one string. This makes verification straightforward.
Anatomy of a Bcrypt Hash
A typical bcrypt hash looks like:
$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LevtVb1N6ZynJpWca
Breaking it down:
$2b$β algorithm version (2b is the current standard; 2a is older)12β cost factor (2ΒΉΒ² = 4,096 iterations)LQv3c1yqBWVHxkd0LHAkCOβ 22 characters of Base64-encoded salt (128 bits)Yz6TtxMQJqhN8/LevtVb1N6ZynJpWcaβ the 31-character hash
The full string is always exactly 60 characters for bcrypt.
Choosing the Right Cost Factor
The cost factor (also called "rounds") is a power of 2. Common values and their approximate computation times on modern hardware:
| Cost | Iterations | Time (approx.) |
|---|---|---|
| 10 | 1,024 | ~65ms |
| 11 | 2,048 | ~130ms |
| 12 | 4,096 | ~250ms |
| 13 | 8,192 | ~500ms |
| 14 | 16,384 | ~1 second |
Recommended starting point: cost 12. It's fast enough that users won't notice the login delay, but slow enough to make mass cracking expensive.
The right cost factor is the highest one your server hardware can sustain without degrading the user experience. As hardware gets faster over time, you can increase the cost factor during password resets or re-logins.
How to Use the Bcrypt Generator on sadiqbd.com
Generating a hash:
- Enter the password (or text) you want to hash.
- Set the cost factor (default 12 is a reasonable choice).
- Click Generate.
- Copy the resulting hash β this is what you store in your database.
Verifying a password:
- Enter the plain-text password you want to verify.
- Enter the stored bcrypt hash.
- Click Verify.
- The tool confirms whether the password matches the hash.
Real-World Developer Use Cases
Generating a test hash for development
You're building a login system and need a bcrypt hash of "testpassword123" to seed your development database.
Input: testpassword123, cost: 12
Output: $2b$12$Wur9b3fP5VV... (a unique hash every time, even for the same input, due to random salting)
Store this hash in your dev database. Your login function will verify against it without ever seeing the plain text.
Migrating from MD5 to bcrypt
You have an existing user table with MD5-hashed passwords. Migrating:
- Add a new
bcrypt_hashcolumn (nullable). - On each successful login: if
bcrypt_hashis null, verify against the MD5 hash, then immediately bcrypt the plain-text password and store it. - After enough time (most active users have logged in), expire all null
bcrypt_hashaccounts and force a password reset.
This gradual migration upgrades password security without forcing every user to reset their password simultaneously.
Understanding a library's default settings
You're using Node.js bcrypt library and want to know if the default cost factor is appropriate for your production environment:
const bcrypt = require('bcryptjs');
const hash = await bcrypt.hash('mypassword', 12); // cost 12
const match = await bcrypt.compare('mypassword', hash); // true
The sadiqbd.com bcrypt generator lets you test different cost factors and see the output format β useful for understanding what the library produces before writing code.
API key hashing
Some applications also bcrypt API keys stored in the database β so a database breach doesn't expose live API keys. The key is shown to the user once, bcrypt-hashed for storage, and verified on each request.
Bcrypt vs. Other Password Hashing Options
| Algorithm | Salted | Configurable slowness | Recommended |
|---|---|---|---|
| MD5 | No (without extra work) | No | No β too fast |
| SHA-256 | No (without extra work) | No | Not for passwords |
| bcrypt | Yes (built-in) | Yes (cost factor) | Yes |
| scrypt | Yes | Yes | Yes |
| Argon2 | Yes | Yes | Yes (OWASP preferred) |
Bcrypt is the most widely supported option across languages and frameworks. Argon2 is the more modern choice (winner of the Password Hashing Competition in 2015) and preferred by OWASP for new systems. Both are significantly better than MD5 or SHA-based hashing for passwords.
Tips for Using Bcrypt in Production
Never store plain-text passwords. This seems obvious, but plaintext password databases still appear in data breaches.
Never use bcrypt for data encryption. Bcrypt is a one-way hash β you can't recover the original input from the hash. It's designed only for password verification, not for encrypting data you need to retrieve.
Don't use bcrypt for API tokens or session tokens. These need to be randomly generated and stored differently. Use a cryptographically secure random generator for tokens.
Trim passwords before hashing. Leading/trailing whitespace can cause login failures when users accidentally add a space. Trim first, then hash.
bcrypt has a 72-byte password limit. Passwords longer than 72 bytes are silently truncated. If you need to support very long passwords (passphrases), pre-hash with SHA-256 and then bcrypt the hash. This is an edge case but worth knowing.
Frequently Asked Questions
Is bcrypt the same as encryption? No. Bcrypt is a one-way hash β you can verify that a password matches a hash, but you cannot recover the original password from the hash. Encryption is reversible; hashing is not.
Why does bcrypt generate a different hash for the same password each time? Because it generates a new random salt each time. Two hashes of "mypassword" with the same cost factor will look different but will both verify correctly against "mypassword." This is intentional β it prevents rainbow table attacks.
What cost factor should I use? Cost 12 is a widely used default. Benchmark on your server hardware β choose the highest factor that keeps login time under 100β300ms. Adjust upward as hardware improves.
Can I use the bcrypt generator to hash real passwords? This tool is useful for development, testing, and learning. For production applications, use a server-side bcrypt implementation β don't hash real user passwords in a browser tool, as the network transmission is a potential exposure.
Is the bcrypt generator free? Yes β completely free, no sign-up required.
Bcrypt is the workhorse of password security for a reason: it's been battle-tested for 25 years, automatically salts, and is deliberately slow. Understanding how to generate and verify hashes β even without writing code β is a practical skill for any developer working with authentication.
Try the Bcrypt Generator free at sadiqbd.com β generate and verify bcrypt hashes instantly, no setup required.