Strong Password Generator
Random passwords, memorable passphrases, and PINs. Live entropy and crack-time display. Runs 100% in your browser.
Runs entirely in your browser — no upload, no loggingBrute-force time at 100 billion guesses/sec: 5 hours
8-character passwords are crackable in hours by a single GPU. Bump length to 14+ for offline-safe storage.
Skip characters like 0, O, l, 1, I that look alike
Written by Ishan Karunaratne · Last reviewed:
What Counts as a Strong Password in 2026?
NIST SP 800-63B (2024 revision) sets the floor at 8 characters and the recommendation at 15. OWASP guidance for stored credentials is more nuanced — what matters is total entropy, not character variety. Entropy in bits is length × log2(pool size). A 16-character password with all four character classes (94 possible chars) has 16 × log2(94) ≈ 105 bits — enough to resist offline brute-force from a national-level adversary.
| Length | Pool | Entropy | Crack time (1 GPU, fast hash) |
|---|---|---|---|
| 8 | all 4 sets | 52 bits | ~7 hours |
| 10 | all 4 sets | 66 bits | ~12 years |
| 14 | all 4 sets | 92 bits | ~800 trillion years |
| 16 | all 4 sets | 105 bits | effectively forever |
| 4 words | EFF list | 52 bits | ~7 hours |
| 5 words | EFF list | 65 bits | ~9 years |
| 6 words | EFF list | 78 bits | ~76,000 years |
Crack times assume 100 billion guesses/sec — realistic for one modern GPU against unsalted fast hashes like MD5/SHA-1. Bcrypt/Argon2 are 10⁵–10⁷ times slower, making the same password effectively uncrackable.
Random vs Memorable vs PIN
Use the type selector at the top of the tool to switch between three generation modes. Each has different ideal use cases.
Random Password
High-entropy character string. Use for anything stored in a password manager. 16 chars is a strong default; 20+ for master passwords. Length matters more than symbols.
Memorable Password
EFF Diceware passphrase. Use for anything you have to type from memory — master password, disk encryption, YubiKey passphrase. 5+ words for strong security.
PIN Code
4–12 digit numeric code. Suitable for rate-limited unlock screens (phones, hardware tokens, ATM cards). Never use as a standalone password for an online account.
How This Generator Works
Random bytes come from crypto.getRandomValues(), the browser's CSPRNG. To map random integers onto a character pool without modulo bias, the implementation uses rejection sampling — a random 32-bit integer is rejected if it would land in the partial bucket at the end of the range, then re-rolled. The same technique applies to picking words from the EFF wordlist.
No password ever leaves your browser. The page is delivered over HTTPS, but no XHR or fetch request fires when you generate. You can prove it: open DevTools → Network → click regenerate → confirm the network panel stays empty. Source code is open and inspectable via View Source.