How this generator works
Your browser hands the page random bytes from the operating system's cryptographic source — the same source your banking app relies on. PassGen turns those bytes into character indexes with rejection sampling: values that would land in the uneven tail of the range are thrown away and redrawn, so every character in the pool is exactly as likely as every other. The plainer alternative, taking a random number modulo the pool size, quietly favors the first few characters; this generator does not do that.
With "One of each set" on, one character from each selected set is planted first and the finished password is shuffled with the same random source. Honest footnote: that guarantee trims a small amount of entropy compared with the headline figure, because an attacker who knows the rule can skip passwords missing a set. The difference is minor at sensible lengths, and the figure shown stays the plain length × log2(pool) value so you can compare like with like.
If you need a password you will actually remember — a master password, a device login — a passphrase of random words is usually the better tool. And when you need randomness for something that is not a password at all, our sister tool RandomNum rolls dice, flips coins and draws numbers from the same kind of cryptographic source.
Length is the whole game
Password strength against guessing is one multiplication: every character you add multiplies the attacker's work by the size of the pool. That is why the table below — computed by this site's own engine — shows time, under the 10-billion-guesses-per-second assumption, growing from hours to ages of the universe as you go from 8 to 24 characters.
| Length | Entropy, 62 chars (a–z A–Z 0–9) | Entropy, 94 chars (all printable) | Avg. crack time, 62 @ 10^10/s | Avg. crack time, 94 @ 10^10/s |
|---|---|---|---|---|
| 8 characters | 47.6 bits | 52.4 bits | 3.0 hours | 3.5 days |
| 10 characters | 59.5 bits | 65.5 bits | 1.3 years | 85.3 years |
| 12 characters | 71.5 bits | 78.7 bits | 5.1 thousand years | 754.1 thousand years |
| 14 characters | 83.4 bits | 91.8 bits | 19.6 million years | 6.7 billion years |
| 16 characters | 95.3 bits | 104.9 bits | 75.5 billion years | longer than the age of the universe, many times over |
| 20 characters | 119.1 bits | 131.1 bits | longer than the age of the universe, many times over | longer than the age of the universe, many times over |
| 24 characters | 142.9 bits | 157.3 bits | longer than the age of the universe, many times over | longer than the age of the universe, many times over |
Two practical conclusions. First, a password manager removes the only real reason to keep passwords short, so let it: generate 16–20 characters and let the manager remember them. Second, unique beats strong: a 104-bit password reused on a site that leaks its database in plain text protects nothing. One generated password per account, stored in a manager, is the entire strategy.
FAQ
Are these passwords really random?
They are drawn from crypto.getRandomValues, the browser's interface to the operating system's CSPRNG, and mapped to characters with rejection sampling so there is no modulo bias. That is the strongest randomness available to a web page.
Do you store or see the passwords I generate?
No. Generation happens in this tab, in JavaScript, on your device. The page has no server component and no analytics, and the passwords are never transmitted anywhere. See the privacy page for the details.
Why show entropy instead of a strength bar?
Because a bar hides its assumptions. Bits are checkable: 16 characters from a pool of 94 is 16 × log2(94) ≈ 104.9 bits, and you can verify that on any calculator. The entropy page walks through the math.
How long should my passwords be?
16 characters from the full printable set (≈105 bits) is comfortably beyond offline guessing under any stated rate. Go longer for a master password — or use a 5–6 word passphrase. More on the length guide.