Password Generator
Cryptographically secure, instant, no signup. Random or memorable passphrase, with the real entropy shown in bits — not just a colored bar. Nothing you generate ever leaves your browser.
Words are drawn from the real EFF Large Wordlist (7,776 words, ~12.92 bits/word) via crypto.getRandomValues.
Result
—
Only sends the structure (length/word-count, character classes, entropy already achieved) — never the actual password or passphrase above. Human-verified before every call so this can't be spammed.
Tip:
Example:
FAQ
How strong does a password actually need to be?
It depends what it protects against. As rough, widely-cited guidelines: under ~40 bits of entropy is guessable by an online attacker within a reasonable time; ~60-80 bits resists offline cracking against a determined attacker with real hardware; 100+ bits is future-proof for anything you can realistically brute-force today. This tool shows you the real bit count for whatever you generate, not a vague color bar.
What is entropy, exactly?
It's a measure of how many equally-likely guesses an attacker would need, expressed as bits: entropy = log2(number of possible passwords). For a random password, that's length × log2(character-pool size) — e.g. a 16-character password drawn uniformly from a 94-character pool has 16 × log2(94) ≈ 104.7 bits, meaning about 2^104.7 equally likely passwords. For a passphrase, it's word count × log2(wordlist size).
Passphrase or random password — which should I use?
Both are legitimate, and the honest answer is "it depends where you're typing it." A passphrase (several real dictionary words) is easier to type and remember by hand and can carry just as much entropy per character as a random string, since each word is drawn from a large pool (this tool uses the actual EFF Large Wordlist, 7,776 words, ~12.9 bits/word). A fully random string packs more entropy per character typed, which matters for fields with a length cap. If you're using a password manager, random mode with the maximum length your target allows is usually the strongest choice; if you need to type or read it out loud, passphrase mode is usually more practical at equal or better security.
Why crypto.getRandomValues instead of Math.random()?
Math.random() is not cryptographically secure — its output can, in principle, be predicted or its internal state recovered from observed outputs on some engines, which is disqualifying for anything security-sensitive. Every character and every word in this generator is chosen using crypto.getRandomValues() (the Web Crypto API's CSPRNG), with rejection sampling to avoid modulo bias, so the selection is genuinely uniformly random across the pool.
Do you store, log, or transmit the passwords I generate?
No. Everything — random generation, passphrase generation, the entropy math, and the pattern scan — runs entirely in your browser with plain JavaScript. Nothing about the password or passphrase you generate is sent to any server.
Why doesn't the generator force at least one uppercase/number/symbol?
So the entropy number stays exactly accurate. Forcing a character class into every password is a common convention, but it technically makes the output slightly less random than the stated formula (length × log2(pool size)) assumes, since not every combination in the pool is equally reachable anymore. This tool draws every character independently and uniformly at random instead — at 12+ characters with 2+ classes enabled, you'll almost always get a natural mix anyway, and the entropy figure shown is always exactly correct for what you got.