Skip to content
100% in your browser. Nothing you paste is uploaded — all processing runs locally. Read more →

Password Generator

Random characters or a memorable passphrase, your call. Both use crypto.getRandomValues with proper bias rejection. The entropy meter shows the actual bits — not a vague "weak / medium / strong" guess.

Generate

Two modes

The entropy bar — what it actually means

Entropy in bits is a measurement of how many guesses an attacker would need on average. Each bit doubles the number of guesses:

These numbers assume the password is the only thing in the way. If the site you're using stores passwords in plain text or with weak hashing, no password length saves you. See hash.tooljo.com/which-hash-function for what server-side password storage should actually look like (argon2id, scrypt, or bcrypt — not SHA-256).

Common use cases

What this tool does not do

Related tools

FAQ

Is the password sent anywhere?

No. Generation uses crypto.getRandomValues in your browser. Open DevTools → Network and confirm: zero requests during generation. The password never leaves your device.

Why is randomness done with crypto.getRandomValues and not Math.random?

Math.random() is fast and predictable enough that an attacker who sees one output can predict the next. crypto.getRandomValues uses the OS's CSPRNG (cryptographically secure pseudo-random number generator) — the same source used to derive TLS session keys. We also reject biased modulo bytes (most generators don't) so every character has equal probability.

What's a 'passphrase' and when should I use one over a random password?

A passphrase is several random words concatenated. "cyber-bonsai-anchor-cinder-emerald" is much easier to memorise than "kP3@x9Vz!Q7m" and, at 5 words from a 256-word list, has 40 bits of entropy — enough to defeat anything short of a targeted nation-state attack on a poorly-hashed database. Use a passphrase wherever you have to type the password regularly (laptop login, master password). Use a random password for everything you can store in a password manager.

How long should my password be?

For password-manager-stored credentials: 16+ random characters from a full charset (~96 bits) is well past current attack capability. For things you type: a 5-word passphrase or 12+ character random with all charsets enabled. See our full guide for the math.

Why exclude 'similar' or 'ambiguous' characters?

'Similar' (1, l, I, 0, O) reduces transcription errors when you have to read the password aloud or copy from a screenshot. 'Ambiguous' (`'") reduces shell-quoting bugs when the password ends up in a terminal command. Both reduce entropy slightly — toggle them on if you're going to be typing the password by hand, off if it lives in a password manager.

Does this generator have any bias I should know about?

Most online generators do — they call crypto.getRandomValues for one byte and do byte % charset_length, which biases the first N characters where N = 256 mod charset. We reject those bytes and re-roll, so every character of every charset is equally likely. Verifiable by reading the source.