This password and passphrase generator uses your browser's cryptographic
random number generator — not Math.random() — to produce either a
character-based password or an EFF-wordlist passphrase, with the exact entropy shown for
whatever you generate.
How to use it
Pick "Password" or "Passphrase", adjust the options, and click "Generate". Toggle character
sets or word count as needed — the entropy estimate below updates to match.
Why cryptographic randomness matters here
crypto.getRandomValues() draws from the operating system's cryptographically
secure random number generator — the same quality of randomness used to generate TLS keys —
whereas Math.random() is designed for speed and reproducibility, not
unpredictability. For anything security-sensitive, that difference matters.
Password vs. passphrase
A password packs more entropy per character but is harder to type and remember; a
passphrase built from real words is longer but easier to type accurately and recall,
often for a comparable or greater total entropy. Which one fits depends on where it's going
— a password manager can hold either equally well, but a passphrase is friendlier for
anything you'll type by hand.
Frequently asked questions
Why does this matter — why not just use Math.random()?
Math.random() is not cryptographically secure — it's seeded and predictable enough that, in principle, an attacker who sees some of its output could predict the rest. This tool uses the Web Crypto API's crypto.getRandomValues(), the same source of randomness browsers use for generating actual cryptographic keys.
Does picking randomness this way introduce bias?
No — naively using modulo on a random byte biases toward smaller values whenever the range doesn't evenly divide 256. This tool uses rejection sampling (discarding and re-drawing any value that would introduce that bias) to guarantee every character or word is equally likely.
What wordlist does the passphrase mode use?
The EFF's short wordlist #1 — 1,296 words curated by the Electronic Frontier Foundation specifically for diceware-style passphrases, chosen to be memorable, unambiguous to type, and each uniquely identifiable by its first three or four letters.
How much entropy do these actually have?
Each password character from a 94-symbol set contributes about 6.55 bits; each passphrase word from the 1,296-word list contributes about 10.34 bits. This tool shows the exact bit count for whatever you generate — as a rule of thumb, 60+ bits is strong for most purposes, 80+ is very strong.
Is anything generated here sent anywhere?
No. Generation happens entirely in your browser using the Web Crypto API — nothing is transmitted, logged, or stored. Closing the tab is enough to make sure nothing lingers.