ToolBook
Support us on Ko-fi
Help us keep this free, forever

Password Generator

How to use the Password Generator

Generate cryptographically secure passwords with a live strength indicator.

  1. Set the password length

    Use the slider to set password length. 16 characters is the sweet spot for most accounts. Go to 24+ for sensitive accounts like banking or email.

  2. Choose your character types

    Toggle uppercase, lowercase, numbers, and symbols. Each additional type expands the character set and dramatically increases entropy.

  3. Generate a new password

    Click the refresh icon to generate a new unique password with the same settings. Every click produces a cryptographically independent result.

  4. Check the strength bar

    The animated strength bar and entropy score update live. Aim for "Strong" or "Very strong" — entropy above 60 bits is the target.

  5. Copy to your password manager

    Click Copy to copy the password to your clipboard. Paste it directly into your password manager for safe storage.

Frequently asked questions

How does the password generator work?

The generator uses the Web Crypto API's cryptographically secure random number generator (CSPRNG) — the same one used by browsers for TLS. It builds a character set from your selected options and maps secure random bytes into characters using modulo. No passwords are ever sent to a server.

What is entropy and why does it matter?

Entropy (measured in bits) represents the number of possible passwords of the given length and character set. Each bit doubles the search space. A 40-bit password has ~1 trillion possibilities; a 70-bit password has ~1 septillion. The crack time estimate assumes a modern GPU cluster running 10 billion guesses/second.

How long should my password be?

For a password manager-generated password, 16–20 characters with uppercase, lowercase, numbers, and symbols is excellent (~90 bits entropy). For a memorable passphrase, 4–5 random words are equivalent. For a WiFi password you type occasionally, 12–14 characters is a practical balance.

Are passwords generated here secure to use?

Yes — the generator runs entirely in your browser. No password is stored, logged, or transmitted. The CSPRNG cannot be predicted from its output. The only risk is on your device: screen recording, browser extensions, or keyloggers would all be a concern regardless of which tool you use.

What is the "time to crack" estimate based on?

The crack time assumes an attacker running an offline brute-force attack at 10 billion guesses/second — a realistic rate for a dedicated GPU cluster attacking a fast hash like MD5. Against a slow hash like bcrypt, real-world crack times would be millions of times longer.

Why use a password generator instead of creating one myself?

Humans are predictable. We unconsciously reach for names, dates, favourite words, or keyboard patterns that attackers specifically target in dictionary and rule-based attacks. A CSPRNG produces output with no exploitable patterns — it genuinely cannot be guessed from any information about you.

Should I use a different password for every account?

Yes, always. When a site is breached, attackers test stolen credentials on hundreds of other services automatically — a technique called credential stuffing. Unique passwords keep a breach at one site contained. A password manager makes this practical: generate a unique password here, save it, and never think about it again.

What is the difference between a passphrase and a password?

A password is a string of random characters. A passphrase is a sequence of random words, such as 'timber-frost-lantern-cloud'. Passphrases are easier to type and remember while still offering strong security when they use four or more truly random words, which gives roughly 50 bits of entropy.

What are examples of weak passwords to avoid?

Common weak patterns include dictionary words ('sunshine', 'dragon'), keyboard walks ('qwerty123'), names or birth years ('john1990'), and character substitutions ('p@ssw0rd'). These are the first patterns checked in every credential-stuffing attack. Adding complexity to a memorable base word rarely helps — use a generator instead.

Password security: entropy, strength meters, and what actually matters

Why 16 random characters beats a memorable phrase, and what 'time to crack' really means.

How secure random password generation works

The generator uses crypto.getRandomValues() — the Web Crypto API's CSPRNG (Cryptographically Secure Pseudo-Random Number Generator). Unlike Math.random(), which is deterministic and predictable from its seed, crypto.getRandomValues() is seeded from the operating system's entropy pool (hardware timing events, mouse movements, network activity). It cannot be predicted from its outputs.

The generation process:

  1. Build a character set from your selected options (uppercase, lowercase, digits, symbols)
  2. Fill a byte array of the requested length with secure random bytes
  3. Map each byte to a character: charset[byte % charset.length]

This simple process is secure because the byte distribution is uniform and unpredictable. The modulo operation introduces a tiny bias when charset.length doesn't divide 256 evenly, but for practical password lengths and charset sizes, this bias is negligible (< 0.4%).

Password entropy: the only metric that matters

Entropy (in bits) measures the unpredictability of a password. Each additional bit doubles the number of possible passwords:

| Entropy | Passwords | Example | |---------|-----------|---------| | 28 bits | ~268 million | 5 lowercase chars | | 40 bits | ~1 trillion | 8 lowercase chars | | 60 bits | ~1 quintillion | 10 mixed alphanumeric | | 80 bits | ~1.2 × 10²⁴ | 13 full charset | | 100 bits | ~1.3 × 10³⁰ | 17 full charset |

The formula: Entropy = length × log₂(charset size)

A 16-character password using all four character types (charset size: 94) produces entropy = 16 × log₂(94) ≈ 104 bits. This is completely infeasible to brute-force — even at a billion billion guesses per second, it would take longer than the age of the universe.

Crack time assumptions

The "time to crack" estimate assumes 10 billion guesses per second — a realistic estimate for a dedicated GPU cluster attacking a fast hash (MD5, NTLM, or similar). Against stronger hashing algorithms used by modern systems:

  • bcrypt (cost 12): ~100 guesses/second — crack times become 10⁸× longer
  • Argon2id (strong): ~1,000 guesses/second — even more resistant

The displayed crack time is therefore a worst-case estimate for the weakest possible storage. Against bcrypt, even a 40-bit password would take years. The right defense is both a strong password AND proper hashing on the server side.

Character types and their contribution to entropy

| Type | Characters | Charset size | log₂ | |------|------------|--------------|------| | Lowercase only | a–z | 26 | 4.7 | | + Uppercase | A–Za–z | 52 | 5.7 | | + Digits | A–Za–z0–9 | 62 | 5.95 | | + Symbols | All printable | 94 | 6.55 |

Adding symbols to a 16-character password increases entropy from 95 bits to 104 bits — useful, but less impactful than simply adding more length. Length is the dominant factor. A 20-character all-lowercase password has higher entropy than a 12-character full-charset password.

Passphrases vs random character passwords

A passphrase like correct-horse-battery-staple (4 random words from a 7,776-word list) has ~52 bits of entropy. A 16-character random password from a 94-character charset has ~104 bits. The random password wins on entropy per keystroke.

However, passphrases have a usability advantage: they're easier to memorize and type without a password manager. For accounts you type manually, a 5–6 word passphrase from a large wordlist is a good alternative.

For everything else — use a password manager and let it generate 20+ character random passwords.

Storing passwords safely

A strong generated password is only as secure as where you store it. The best practices:

  • Use a password manager (Bitwarden, 1Password, Keychain) — the only scalable solution
  • Never store passwords in plain text files, notes apps, or spreadsheets
  • Never reuse passwords across sites — one breach exposes all accounts
  • Enable two-factor authentication on accounts where it's offered