Secure Password & Passphrase Generator

Create strong random passwords or memorable passphrases in bulk, with the entropy of each shown in bits. Nothing is sent or stored.

Loading tool…

About the Password Generator

Randomness comes from crypto.getRandomValues, the browser's cryptographically secure generator. Each character is chosen with rejection sampling: random 32-bit values above the largest multiple of the alphabet size are discarded, so every character is exactly equally likely. The common shortcut random % n slightly favours some characters (modulo bias).

Strength is shown as entropy: length × log2(alphabet size). A 20-character password over the 90 characters of upper case, lower case, digits and symbols has about 130 bits. As a guide, under 36 bits is very weak, 60 bits resists online guessing, and 80+ bits is strong against offline cracking of fast hashes. “Require every selected class” redraws passwords that miss a class, which keeps them uniformly random among valid results. “Exclude ambiguous” removes look-alikes such as I l 1 O 0 o and hard-to-type punctuation.

Passphrase mode picks words from a built-in list of several hundred common English words. Each word adds about 9.3 bits, so six words give roughly 56 bits — easy to type on a phone and to remember. Increase the word count for anything protecting valuable data, and use a password manager for everything else.

How to use it

  1. Choose Password or Passphrase.
  2. Set the length (or word count) and the character sets.
  3. Pick how many to generate, then click Generate for a new batch.
  4. Copy one line or use “Copy all”.

Frequently asked questions

How long should a password be?
For accounts protected by a password manager, 16–20 random characters is plenty. For a master password you type, a 6–7 word passphrase is a good balance.
Are the passwords sent anywhere?
No. They are generated in your browser and are not logged, stored or transmitted.
Why is Math.random() not good enough?
Math.random is not cryptographically secure; its output can be predicted from earlier values. crypto.getRandomValues is designed for secrets.
Is a passphrase really as strong as a random password?
Per character it is weaker, but per word it adds about 9 bits here. Enough words (7+) reach the strength of a long random password while staying memorable.

Related tools