Password Generator
Generate one or several random passwords with your browser's cryptographic random source. Pick the length and character sets and see the exact entropy. Nothing leaves your device.
Whole number from 4 to 128.
Whole number from 1 to 20.
Include lowercase letters.
Include uppercase letters.
Include digits.
Include symbols from the list below.
Removes i, l, 1, L, o, 0 and O, which are easy to confuse when read or typed.
Each password contains at least one character from every selected set. This slightly lowers the entropy; the figure shown accounts for it.
Printable ASCII symbols only; letters, digits and spaces are not allowed. Duplicates are ignored.
Passwords are generated in your browser. They are never sent to a server and never stored.
How it works
A password from this page has the length you choose. Each character is drawn independently and uniformly from a pool: the union of the sets you switched on. The sets are lowercase a-z (26 characters), uppercase A-Z (26), digits 0-9 (10) and symbols (23 by default, listed below). Duplicates are removed, and the pool size in the result is the number of distinct characters.
Where the randomness comes from. The only source is crypto.getRandomValues, the browser's cryptographic random generator from the Web Crypto API. The ordinary, non-cryptographic Math generator is never used; the tool's tests check its source code for that.
No modulo bias. The generator gets random bytes, numbers from 0 to 255. Picking one of n characters with a plain remainder is unfair unless n divides 256 evenly. With a pool of 7, 256 = 36 × 7 + 4, so the byte values 0 to 3 would each be reachable 37 times and 4 to 6 only 36 times: some characters would show up slightly more often. The tool avoids this by rejection: every byte at or above 252 is thrown away and a new one is drawn. For a pool of 62 the cut-off is 248. One byte per draw is enough for any pool up to 256 characters. Every accepted value is then equally likely, and on average fewer than two draws are needed per character.
Require every selected set. When this is on (the default), a finished password that lacks a character from any selected set is discarded and generated again from scratch. The tool does not place one character from each set and then shuffle, because that would make some valid passwords more likely than others and the entropy could no longer be stated exactly. Re-drawing keeps all valid passwords equally likely.
Entropy. For a uniform choice among N possible passwords, entropy is log2(N) bits. With the requirement off, N is the pool size raised to the length, so the entropy is length × log2(pool size). With it on, N is the exact number of strings of that length that contain at least one character from every selected set, counted by inclusion-exclusion. The figure assumes an attacker who knows your options but not the password.
Strength labels. Below 28 bits is "Very weak", 28 to below 36 "Weak", 36 to below 60 "Fair", 60 to below 128 "Strong", and 128 or more "Very strong". These cut-offs are this site's own editorial convention, not a standard, and they say nothing about where you will use the password.
The default symbols are !@#$%^&*()-_=+[]{};:,.?. Quotes, backslash, space, angle brackets, slash, pipe, tilde and backtick are left out of that list; you can type any printable ASCII symbol into the symbols field yourself.
Examples
The entropy figures are length × log2(pool). Requirement off unless stated.
| Settings | Pool | Entropy | Label |
|---|---|---|---|
| Digits only, 6 characters | 10 | 19.93 bits | Very weak |
| Digits only, 10 characters | 10 | 33.22 bits | Weak |
| Lowercase only, 8 characters | 26 | 37.60 bits | Fair |
| Two symbols (! and #) only, 40 characters | 2 | 40.00 bits | Fair |
| Letters and digits, 12 characters | 62 | 71.45 bits | Strong |
| Letters and digits, 21 characters | 62 | 125.04 bits | Strong |
| Letters and digits, 22 characters | 62 | 130.99 bits | Very strong |
| All four sets, 16 characters | 85 | 102.55 bits | Strong |
| Digits and lowercase, 4 characters, requirement on | 36 | 20.21 bits (20.68 with it off) | Very weak |
The last row is the exact count: 36⁴ − 26⁴ − 10⁴ = 1,212,640 valid passwords, and log2 of that is 20.21, against 4 × log2(36) = 20.68 with the requirement off. With all four sets and 16 characters, turning the requirement on lowers the figure by only a fraction of a bit (about 0.2), because almost every random password already contains all four kinds.
A draw, step by step. Digits only, length 4, pool of 10, so the cut-off is 250. Suppose the random bytes are 252, 3, 255, 17, 200, 9. The bytes 252 and 255 are at or above 250 and are discarded. The rest give 3, 17 mod 10 = 7, 200 mod 10 = 0 and 9: the password is 3709.
Re-drawing for the requirement. Lowercase plus digits, length 4. A first draw that comes out as abcd has no digit, so it is discarded; the next draw abc0 has both kinds and is kept.
Excluding look-alikes. With all four sets, the pool goes from 85 to 78 characters (23 lowercase, 24 uppercase, 8 digits, 23 symbols).
Things to watch for
- The entropy belongs to the generator's output. If you edit a generated password by hand, shorten it or add a word, the figure no longer applies to it.
- Entropy is not a crack time. The page deliberately gives no such estimate. How fast guessing can go depends on the attacker and on how the service stores or limits passwords.
- Length against variety. Adding two letters-and-digits characters (about 11.9 bits) gains more than switching symbols on for a 16-character password (about 7.3 bits). If a site allows long passwords, use the length.
- Sites with rules. Some services restrict which symbols or how many characters they accept. Edit the symbols field to match, or switch symbols off. The field takes up to 64 printable ASCII symbols; letters, digits, spaces and non-ASCII characters are refused.
- Look-alike list. It is exactly i, l, 1, L, o, 0 and O. The capital I, which can resemble a lowercase l in some fonts, is not removed.
- Limits. Length from 4 to 128, up to 20 passwords at once. With "Require every selected set", the length must be at least the number of selected sets.
- Keeping the result. As general advice, not a statement about this tool: use one unique password per account and keep them in a password manager rather than reusing or memorizing them. Clipboard history features or other apps may keep a copy of what you copy.
- Privacy. Passwords are created in your browser after the page loads. They are not sent, stored or logged, and changing any option generates new ones immediately.
Frequently asked questions
Last updated: 10/11/2026
Related tools
Generate random (v4) or time-ordered (v7) UUIDs, up to 100 at once, and check what an existing UUID contains. Everything runs in your browser.
Hash text with MD5, SHA-1, SHA-256, SHA-384 and SHA-512 at once, as hex or Base64. The text is read as UTF-8 and never leaves your browser.