Secure Passphrase Generator - Cryptographic Diceware Tool
Generate cryptographically secure passphrases using diceware word lists and Web Crypto API. Calculate entropy, customize separators, and copy safely.
About
A weak password cracks in seconds. A short random one cracks in hours. The difference between a breached account and a secure one often comes down to entropy - measured in bits. This tool generates passphrases using a curated 2048-word list and the Web Crypto API (crypto.getRandomValues), producing output with calculable entropy of E = n × log2(W) bits, where n is word count and W is list size. A 4-word passphrase yields ~44 bits; a 6-word one reaches ~66 bits - sufficient to resist brute-force attacks at 1012 guesses per second for centuries.
This tool approximates real-world security assuming the attacker knows the word list and method (Kerckhoffs's principle). Actual resistance depends on your threat model. The generator runs entirely client-side. No passphrase is transmitted or stored beyond your browser's LocalStorage. The clipboard auto-clears after 60 seconds. Pro Tip: never reuse a passphrase across services, and pair it with a hardware token or TOTP for critical accounts.
Formulas
The fundamental entropy of a passphrase drawn from a uniformly random word list is calculated as:
Where E = total entropy in bits, n = number of words selected, W = size of the word list (2048 in this tool, so log2(2048) = 11 bits/word).
When augmentations are applied (digit insertion, symbol insertion, capitalization transforms), the effective entropy increases per element:
Where nd = count of random digits appended, ns = count of random symbols inserted, and S = size of the symbol alphabet (this tool uses 8 common symbols: !@#$%&*?).
The estimated crack time assumes an attacker performing an offline brute-force attack:
Where T = expected time in seconds (average case is half the keyspace), and G = guesses per second (1012 for a well-funded adversary with GPU clusters). Rejection sampling eliminates modulo bias: generate a random 32-bit integer, discard values ≥ W × floor(232 ÷ W) and retry.
Reference Data
| Word Count | Entropy (bits) | Possible Combinations | Time to Crack @ 1012 guesses/s | NIST Strength Rating |
|---|---|---|---|---|
| 3 | 33 bits | 8.59 × 109 | < 1 second | Weak |
| 4 | 44 bits | 1.76 × 1013 | ~4.9 hours | Fair |
| 5 | 55 bits | 3.60 × 1016 | ~1.14 years | Strong |
| 6 | 66 bits | 7.38 × 1019 | ~2,340 years | Very Strong |
| 7 | 77 bits | 1.51 × 1023 | ~4.79 × 106 years | Excellent |
| 8 | 88 bits | 3.09 × 1026 | ~9.81 × 109 years | Excellent |
| 9 | 99 bits | 6.34 × 1029 | ~2.01 × 1013 years | Maximum |
| 10 | 110 bits | 1.30 × 1033 | ~4.11 × 1016 years | Maximum |
| Assumptions: 2048-word list, words only, no augmentation. Adding digits/symbols per word increases entropy per element. | ||||
| Common Password Comparison | ||||
| 8-char random (a-z) | 37.6 bits | 2.09 × 1011 | ~3.5 minutes | Weak |
| 8-char mixed case+digits | 47.6 bits | 2.18 × 1014 | ~2.5 days | Fair |
| 12-char full ASCII | 78.8 bits | 3.01 × 1023 | ~9.54 × 106 years | Excellent |
| 4-word passphrase + digit | 47.3 bits | 1.76 × 1014 | ~2 days | Fair |
| 6-word passphrase + symbol | 71 bits | 2.36 × 1021 | ~7.5 × 104 years | Very Strong |