Password Generator
Build a random password or a memorable passphrase with real cryptographic randomness. Entropy, strength and crack time are shown for the exact options you picked — and nothing ever leaves your browser.
🔐 Result
Assumes the attacker knows exactly how the password was made and has to search half the keyspace on average. A password reused elsewhere, or one sitting in a breach dump, is cracked in zero seconds regardless of these numbers.
⚙️ Settings
4 to 128 characters. Longer beats exotic every time.
Leave empty for the default set. Handy when a site rejects certain symbols.
How to use the password generator
- Pick a mode. 🔑 Password gives you random characters for a password manager; 🗣️ Passphrase gives you words you can actually type from memory.
- Drag the length slider (4–128) or the word-count slider, and switch the character classes on and off. The result regenerates instantly on every change.
- Turn on Avoid look-alike characters if the password will ever be read off a screen and typed by hand, and paste a custom symbol set if a site rejects certain punctuation.
- Check the strength row: entropy in bits, a grade from 🔴 weak to 🟣 very strong, and the estimated time to crack under the attack scenario you select.
- Press Copy and paste it straight into your password manager, or press Generate 10 to get a batch for a list of service accounts.
How the strength number is calculated
Entropy measures how many equally likely passwords the generator could have produced, expressed as a power of two. For a random password it is:
bits = length × log2(size of the character set)
A 16-character password from lowercase, uppercase, digits and the 25 default symbols draws from a set of 87 characters, so it is 16 × log2(87) ≈ 103 bits. A passphrase is counted the same way, with the word list in place of the character set:
bits = words × log2(2048) = words × 11
The word list holds exactly 2,048 short, easy-to-spell English words, which makes every word worth precisely 11 bits — no rounding, no hand-waving.
| Choice | Set size | Bits per unit | 🔴 → 🟣 |
|---|---|---|---|
| Digits only | 10 | 3.32 | needs 30+ characters |
| Lowercase only | 26 | 4.70 | needs 22+ characters |
| Letters + digits | 62 | 5.95 | 17 characters ≈ 101 bits |
| All four classes | 87 | 6.44 | 16 characters ≈ 103 bits |
| Passphrase words | 2,048 | 11.00 | 9 words ≈ 99 bits |
Grades are fixed thresholds: under 45 bits is 🔴 weak, 45–64 is 🟡 fair, 65–99 is 🟢 strong, and 100 or more is 🟣 very strong.
Worked examples
A 12-character letters-and-digits password. The set is 62 characters, so entropy is 12 × 5.954 = 71.4 bits — 🟢 strong. Against an offline attacker running 100 billion guesses per second on a fast hash, half the keyspace is 2^70.4 ≈ 1.6 × 10^21 guesses, which takes roughly 500 years. Against a well-funded attacker at 100 trillion per second it falls to about six months. That is the gap between “fine for a forum” and “not fine for your email”.
A six-word passphrase. harbor-cactus-ribbon-melon-quartz-drift is 6 × 11 = 66 bits — just into 🟢 strong. It is 38 characters long, but you only have to remember six things. Add a seventh word and you are at 77 bits.
Eight lowercase letters. qwtzibpr looks random, and it is, but 8 × 4.7 = 37.6 bits is 🔴 weak: a GPU rig grinds through it in well under a minute. Randomness does not rescue a short password.
No repeats, 10 characters, lowercase. Instead of 10 × log2(26) = 47 bits, the tool computes log2(26) + log2(25) + … + log2(17) = 44.9 bits. Banning repeats cost you two bits.
Reading the time-to-crack estimate
The estimate assumes the worst realistic case: the attacker has stolen the password database, knows exactly which generator and settings you used, and only has to search half the keyspace on average. Guess rates are deliberately round numbers — 10 per second for a rate-limited login form, 100 billion per second for a GPU cluster against a fast hash like SHA-256, 10 thousand per second against a properly salted slow hash such as bcrypt or Argon2.
Treat the output as an order of magnitude, not a promise. It also cannot see the thing that actually breaks most accounts: reuse. A 🟣 very strong password that you also used on a site that got breached is cracked in zero seconds, because nobody has to guess it.
Tips and common mistakes
- Length first. Adding one character to an 87-symbol password adds 6.4 bits. Swapping a letter for a symbol adds nothing on its own.
- Do not “personalise” the output. Changing
k7Qmtok7Qm2019because 2019 is memorable destroys the randomness argument entirely. - One password per site, always. This is the single change that matters most, and it only works with a password manager.
- Look-alike filtering is for humans, not attackers. It shrinks the set slightly (87 → 82 characters), so it costs a fraction of a bit per character. Use it only when the password gets typed by hand.
- Beware of silent truncation. Some legacy systems cut passwords at 16 or 20 characters without telling you. If a long password mysteriously fails, try a shorter one.
- Passphrase separators are not secret. The attacker is assumed to know you used dashes. That is why the separator adds no bits in our maths.
Glossary
- Entropy – the log base 2 of the number of equally likely outcomes; one extra bit doubles the attacker’s work.
- Rejection sampling – discarding random bytes that fall outside a whole number of ranges, so that
byte % 26does not favour the first few letters. - CSPRNG – a cryptographically secure random generator; in the browser that is
crypto.getRandomValues. - Keyspace – the full set of passwords a given configuration can produce.
Privacy
Every password and passphrase on this page is generated inside your browser tab by JavaScript that is already loaded, using the built-in crypto.getRandomValues. Nothing is sent over the network, no analytics event carries the value, nothing is written to local storage or a cookie, and there is no server-side component that could keep a copy. Regenerating replaces the value in memory; closing the tab discards it. If you want to be certain, open your browser’s network panel and watch it stay silent while you click Generate.
Frequently asked questions
How long should my password be?
For an account protected by a password manager, 16 to 24 random characters from all four classes is comfortably beyond any realistic attack. For something you have to type from memory, use a passphrase of six or more words instead. Length buys far more safety than exotic symbols.
Are these passwords really random?
They come from crypto.getRandomValues, the browser's cryptographically secure random number generator, and each character is chosen with rejection sampling so no character is even slightly more likely than another. Math.random, which many generators still use, is not safe for this.
Is a passphrase weaker than a password?
Not if it is long enough. Each word from the 2,048-word list is worth exactly 11 bits, so six words give 66 bits and eight words give 88 bits. The attacker is assumed to know the word list and the format, which is the honest way to count.
Why do you not force at least one digit and one symbol?
Forcing a class shrinks the set of possible passwords, so the entropy figure shown would no longer be true. With 20 characters drawn from all four classes, the chance of getting no digit at all is under one in a thousand — just press Generate again if a site rejects the result.
Should I turn on "no repeated characters"?
Only if a system demands it. Banning repeats actually lowers entropy, because each pick has fewer options than the one before. The tool switches to the permutation formula so the bits shown stay accurate.
Do you store or log the passwords I generate?
No. They are created inside your browser tab, never transmitted, never written to storage, and discarded the moment you regenerate or close the page. There is no server that could log them.
Related tools
- Hash GeneratorCompute SHA and CRC32 digests of text or files entirely in your browser, switch between hex and Base64, sign messages with HMAC, and check two hashes against each other.
- UUID GeneratorCreate random or time-ordered identifiers in bulk, format them for JSON, CSV or a SQL insert, and paste any existing id to find out which version it is and when it was made.
- Base64 Encoder & DecoderConvert text, files and data URIs to and from Base64 with correct UTF-8 handling, a URL-safe option and MIME line wrapping. Nothing is uploaded.
- JSON Formatter & ValidatorPaste JSON, get it beautified, minified or validated with the exact line and column of the problem. Everything runs in your browser.
- Cron Expression GeneratorWrite a cron expression in Unix, Spring or Quartz form, read what it actually means in English, and see the next ten fire times in UTC and your local time.
- Unix Timestamp ConverterA live epoch clock, instant timestamp-to-date conversion in UTC and your local time, a date-to-timestamp direction, and a batch mode for whole log columns.
Last reviewed: