How this generator makes a password
Every character comes from crypto.getRandomValues, the same cryptographically secure random number generator your browser uses for TLS keys. It is seeded by the operating system's entropy pool, not by the clock or by Math.random(), whose output can be predicted from a handful of earlier values.
Turning random bytes into characters is where many generators go subtly wrong. A 32-bit random number taken modulo 94 symbols makes the first few symbols slightly more likely than the rest, because 232 is not a multiple of 94. This page uses rejection sampling instead: a draw that falls in the uneven tail is discarded and redrawn, so every symbol in the chosen set has exactly the same probability.
"One of each set" works the same way. Rather than forcing a digit into a fixed slot, which would make positions predictable, a whole candidate password is drawn and thrown away if it is missing a set. The result is uniform across every password that satisfies the rule. Generation, strength analysis and the passphrase word list all run inside this page; the password is never written to the address bar, the history panel or browser storage.
How long is long enough
Strength is measured in bits of entropy: the base-2 logarithm of the number of equally likely passwords the generator could have produced. Each extra bit doubles the attacker's work. With all four character sets (90 symbols), each character adds about 6.5 bits.
| Use | Target | Random password | Diceware passphrase |
| Website account behind a rate limit and a password manager | 60–80 bits | 12–14 characters | 5–6 words |
| Password manager master password, disk encryption | 80–100 bits | 15–16 characters | 7–8 words |
| API keys, service accounts, anything hashed with a fast hash | 128 bits | 20+ characters | 10 words |
| Wi-Fi (WPA2/WPA3 personal) | 80+ bits | 16+ characters | 7 words |
These figures assume the password was produced randomly. A human-chosen password of the same length is far weaker, because people pick from a tiny, predictable part of the space, which is what the strength checker on the right measures.
Passwords or passphrases
A Diceware passphrase strings together words picked at random from the Electronic Frontier Foundation's list of 7,776 words. Each word is worth log2(7,776) ≈ 12.9 bits, so six words give about 77.5 bits, roughly a 12-character random password with every character class. The words were chosen by the EFF to be common, distinct and easy to type, so a passphrase is much easier to remember and to enter on a phone or a TV remote.
The strength comes from the random choice, not from the words being obscure: an attacker who knows you used this exact list and six words still has 277 combinations to try. Choosing the words yourself, or picking a famous phrase, removes that protection entirely. Use a passphrase for anything you must type from memory; use a long random password for everything a password manager fills in for you.
What the strength checker measures
For a password you typed, counting character classes badly overestimates strength: P@ssw0rd1! uses all four classes yet is one of the first guesses in every cracking list. The checker therefore looks for the patterns real cracking tools try first and prices each one at its actual cost to guess:
- Common passwords, including leetspeak substitutions such as 0 for o and @ for a.
- Keyboard walks like
qwerty, asdf and 1qaz2wsx, forwards and backwards.
- Sequences and repeats such as
abcd, 9876, aaaa and abcabc.
- Years and dates, which people append to satisfy "must contain a number" rules.
It then finds the cheapest way to describe the whole password as a mix of those patterns and brute-forced characters, and reports that cost in bits. The crack-time table divides the average number of guesses by four realistic attack speeds. The offline figures assume the attacker has stolen the password database; whether your password survives then depends far more on the site's hashing (bcrypt or Argon2 versus MD5) than on anything you control, which is why a unique password per site matters more than any single password's length.
Storing what you generate
A strong random password is only useful if it is unique to one account and kept somewhere safe. A password manager such as Bitwarden, 1Password, KeePassXC or the one built into your browser or phone is the right home for it: it generates, stores and fills passwords so you never need to remember more than the master passphrase. Turn on two-factor authentication, preferably a passkey or a hardware key, for email and anything financial. When a site supports passkeys, prefer them over passwords altogether.