A strong password is long and unpredictable. Length matters far more than complexity: every extra character multiplies the search space, while substituting @ for a in a dictionary word barely slows an attacker down.
Entropy is the real measure
Entropy quantifies unpredictability in bits. Each additional bit doubles the number of guesses required. It depends on the size of the character pool and the length of the password — assuming every character is chosen at random.
That assumption is the catch. A human-chosen password using all four character types has far less real entropy than the formula suggests, because people follow predictable patterns: capital first, digit and symbol last.
Entropy (bits) = length × log₂(pool size)
Strength by length
Using all 94 printable ASCII characters, against an offline attacker managing 10 billion guesses per second:
| Length | Entropy | Time to crack |
|---|---|---|
| 8 characters | 52 bits | about 5 hours |
| 10 characters | 65 bits | about 8 years |
| 12 characters | 78 bits | ~60,000 years |
| 16 characters | 104 bits | longer than the universe has existed |
| 20 characters | 131 bits | effectively unbreakable |
These assume genuinely random generation. A password appearing in any breach corpus is cracked instantly regardless of its length or apparent complexity.
Practical guidance
- Use a unique password for every account. Credential stuffing — replaying breached pairs across sites — is the most common account takeover method by far.
- Use a password manager. It is the only realistic way to keep hundreds of long random passwords.
- Enable two-factor authentication everywhere it is offered. An app or hardware key beats SMS, which is vulnerable to SIM swapping.
- Passphrases of four to six random words are strong and memorable — but the words must be randomly selected, not chosen by you.
- Do not rotate passwords on a schedule without cause. Forced rotation pushes people toward predictable increments; NIST now advises against it.
How this generator works
Passwords are generated in your browser using the Web Crypto API (crypto.getRandomValues), which is a cryptographically secure source. Nothing is transmitted, logged or stored anywhere.
The ambiguous-character option removes I, l, 1, O and 0 — worth enabling for anything you will type manually or read aloud, at a small cost in entropy.
Worked example
Using the values pre-loaded in the calculator above:
| Input | Value |
|---|---|
| Length | 16 |
| How many | 5 |
| Lowercase letters | yes |
| Uppercase letters | yes |
| Digits | yes |
| Symbols | yes |
| Exclude ambiguous characters (Il1O0) | yes |
| Output | Value |
|---|---|
| Password | Ks=*GcJ=nnEeME3< |
| Character pool size | 82 |
| Length | 16 |
| Entropy | 101.72 bits |
| Possible combinations | 4.1785e+30 |
| Offline crack time at 10 billion guesses/sec | 6,620,452,521,774.01 years |
Frequently asked questions
How long should a password be?
At least 16 random characters for anything important. For accounts protected by a password manager there is no reason not to use 20 or more.
Are passphrases as strong as random passwords?
They can be. Six words drawn randomly from a 7,776-word list gives about 77 bits — comparable to a 12-character random password, and far easier to remember.
Is this generator safe to use?
It runs entirely offline in your browser using the Web Crypto API. No password is transmitted or stored. You can verify this by disconnecting from the network — it still works.
How often should I change my passwords?
Only when there is reason to: a breach, a shared credential, or suspected compromise. Scheduled rotation without cause tends to weaken passwords in practice.