Password Generator
Build a password your way — a memorable word-based passphrase, or a fully random character password with length and character-set controls. Generate one at a time or a whole batch at once; every value is picked using your browser's cryptographically secure random generator, and nothing ever leaves your browser.
Choose a separator and which extras to include — the word count, words, digit, symbol, and their position are all picked fresh using your browser's cryptographically secure random generator each time you click Generate. See our passphrase guide for why this method works.
How to Generate a Strong Password
- Choose Passphrase or Random Characters mode at the top of the panel.
- In Passphrase mode, pick a separator and toggle numbers, symbols, and capitalization. In Random Characters mode, set the length, choose which character types to include, and optionally exclude ambiguous characters.
- Click "Generate New Password" for one result, or turn on Batch Generate to create several independent passwords at once.
- Check the strength meter and entropy estimate, then click "Copy Password" (or "Copy All" in batch mode) once you're happy with the result.
Frequently Asked Questions
Why does this generate a passphrase from words instead of random characters?
Word-based passphrases are easier for a person to read and type while still carrying real entropy — the strength meter under the field reports the actual estimated bits so you can judge each result for yourself. You choose the separator and which extras to include; the word count, the words themselves, the digit, and the symbol are all picked at random by your browser's cryptographically secure generator, so no two results look alike.
Why isn't there a dash or space separator option?
Both were removed on purpose. A space in a password can break copy-paste into some forms and command-line tools, and dashes made every result look too similar in shape. With words running together (or split by an underscore or dot), plus numbers and symbols landing in different spots and shapes each time, results look much more like a genuinely random string.
Is the randomness actually secure, or is it just Math.random()?
It's not Math.random(). Which words are picked, how many words there are, the digit value, and the symbol character all come from crypto.getRandomValues(), the browser's cryptographically secure random number generator — only the separator, capitalization, and whether to include a number or symbol are the settings you choose directly.
Why does the strength rating change so much between settings?
Turning on numbers and symbols adds real bits of entropy on top of whatever word count gets randomly picked for that result — a single word with nothing extra sits around 7 bits, while two words with a number and a symbol can reach roughly 24 bits, which is why the rating can range from Weak to Very Strong between generations.
Why does the password sometimes have one word and sometimes two?
The word count itself is randomized between one and two words each time you click Generate, the same way the specific words, digit, and symbol are — it's one more thing that can't be predicted, and it's also why results can look as different as a single short word or a longer two-word combination with mixed digits and symbols.
Does the Random Characters mode guarantee every checked character type actually appears?
Yes. A naive generator that just samples randomly from a combined pool can accidentally produce a password missing one of the required types even with the box checked. This tool avoids that: it first picks one guaranteed random character from every checked type, fills the rest of the length from the combined pool, then shuffles the whole result with a Fisher–Yates shuffle — all using crypto.getRandomValues() — so every required type is present and the guaranteed characters aren't stuck in predictable positions.
What does "Exclude ambiguous characters" do?
When enabled, it removes 0, O, 1, l, and I (the digits zero and one, capital O, capital I, and lowercase l) from the uppercase, lowercase, and number pools before anything is picked, so easily confused characters never show up — useful when you'll be reading or typing the password by hand. Symbols aren't affected since none of them are visually ambiguous with letters or digits.
Can I generate more than one password at a time?
Yes — turn on Batch Generate, set a count from 2 to 50, and click Generate Batch. Every password in the list is generated independently using crypto.getRandomValues() with your current mode and settings, and you can copy any one individually or use Copy All to copy the whole list at once.