How it works
Where the randomness comes from
Every character and every word is picked with crypto.getRandomValues, the browser's cryptographic random source, never Math.random.
A random 32-bit number is turned into a pick from the pool by taking the remainder. Numbers past the last whole multiple of the pool size are thrown away and drawn again, so no character or word comes up more often than the others.
Passwords
The pool is the kinds of character you switch on: 26 lowercase letters, 26 capitals, 10 digits and 27 symbols that paste safely into most forms (!@#$%^&*()-=_+?[]{};:,.<>/~). Leaving out look-alikes removes I, l, 1, O and 0.
Length runs from 8 to 128 characters. At least one kind of character always stays on.
entropy (bits) = length × log2(pool size)
Passphrases
A passphrase is 3 to 10 words drawn from the EFF large word list (7,776 words, one for each roll of five dice), joined by the separator you choose. Capitalising the first word does not add entropy; a digit at the end adds log2(10), about 3.3 bits.
The dice under each word are the five rolls that would pick it from the printed list, so you can check a phrase by hand.
entropy (bits) = words × log2(list size) + 3.32 if a digit is added
Strength bands
Under 40 bits is weak, 40 to 59 fair, 60 to 94 strong and 95 or more very strong. The bands describe a random guess at the whole password; they assume the attacker knows how it was made but not the random picks.





