Password Generator & Strength Meter

Generate cryptographically secure passwords and passphrases with entropy calculation

Click Generate
No password 0 bits
Generate a password to see entropy details.
Check Existing Password
Enter a password above to analyze its strength.
Bulk Generate
Click Generate Bulk to create multiple passwords.
TB
Thibault Besson-Magdelain
Web Developer & Technical Writer
Published: Jul 15, 2025 · Updated: Feb 10, 2026 · 8 min read
LinkedIn Profile

Why Password Security Matters

Passwords remain the primary barrier between attackers and your digital life. Despite decades of security research and the growing adoption of biometrics and hardware tokens, passwords authenticate more than 80% of web application logins, database connections, API keys, encryption operations, and system access points. A compromised password can lead to identity theft, financial loss, data breaches, and reputational damage that takes years to recover from. This generator is part of our web development calculators collection.

The human tendency to create predictable passwords is well-documented. Studies of leaked password databases consistently reveal that the most common passwords include "123456," "password," "qwerty," and other trivially guessable strings. Even when users try to be creative, they follow recognizable patterns: capitalizing the first letter, appending a number, substituting "3" for "e" or "@" for "a." Attackers know these patterns and build them into their cracking tools. The only defense against pattern-based attacks is genuine randomness, which is what this generator provides through the Web Crypto API.

Understanding Entropy: The Mathematics of Randomness

Password entropy is the standard measure of password unpredictability, expressed in bits. The formula is straightforward: entropy = length * log2(charset_size). A password of length 16 drawn from 95 printable ASCII characters has entropy of 16 * log2(95) = 16 * 6.57 = 105.1 bits. This means an attacker would need to try, on average, 2^104 combinations before guessing the password correctly — a number so large that even the fastest supercomputers would require more time than the age of the universe.

However, entropy only measures the theoretical strength of a truly random password. If a password is chosen by a human rather than generated randomly, its effective entropy is much lower because human choices are predictable. A 12-character password that happens to be an English word with a capital first letter and a trailing "1!" might look strong but has far less entropy than its length suggests. This is why generated passwords, despite being harder to memorize, provide dramatically better security than human-chosen alternatives of the same length.

Entropy Thresholds

Security professionals generally classify password strength by entropy ranges. Below 40 bits is considered weak and can be cracked in minutes on consumer hardware. Between 40 and 60 bits offers moderate protection suitable for low-value accounts. From 60 to 80 bits provides strong security for most applications. Above 80 bits is very strong, adequate for encryption keys and high-value targets. Above 128 bits is considered computationally infeasible to brute-force with any technology foreseeable in the coming decades.

Brute Force Attack Timelines

The time required to brute-force a password depends on both its entropy and the attacker's computing power. A modern GPU can compute approximately 10 billion (10^10) password hashes per second when attacking weak hash algorithms like MD5. Against bcrypt with a cost factor of 12, that drops to about 100 hashes per second. This enormous difference illustrates why both password strength and proper server-side hashing are essential layers of defense.

At 10 billion guesses per second against MD5: a 40-bit password falls in about 110 seconds, a 60-bit password takes about 36 years, an 80-bit password requires about 3.8 million years, and a 128-bit password would take 10^18 years — far longer than the age of the universe. Against bcrypt at 100 guesses per second, even a 60-bit password would take 36 billion years. These calculations demonstrate why the combination of strong passwords and proper hashing creates formidable security.

Dictionary Attacks and Common Patterns

Dictionary attacks exploit the human tendency to use meaningful words and predictable patterns as passwords. Rather than trying every possible character combination, attackers start with dictionaries of common passwords, English words, names, dates, and keyboard patterns. Advanced dictionary attacks apply transformation rules: capitalizing letters, appending numbers, substituting characters (l33t speak), and combining multiple words. Tools like Hashcat and John the Ripper can apply millions of such rules to million-word dictionaries.

The defense against dictionary attacks is randomness. A password generated by selecting random characters from the full charset cannot be found in any dictionary and does not follow any pattern that rules could predict. Even a passphrase of random words resists dictionary attacks because the attacker must guess not just individual words but the specific combination from a vast possibility space. A 5-word passphrase from the EFF's 7,776-word list has 7,776^5 = 2.8 * 10^19 possible combinations — equivalent to about 64 bits of entropy.

NIST SP 800-63B Guidelines

The National Institute of Standards and Technology's Special Publication 800-63B, updated in 2024, provides authoritative guidance on digital identity and authentication. The guidelines recommend a minimum password length of 8 characters (with 15+ characters preferred) and a maximum of at least 64 characters. Critically, NIST advises against composition rules (requiring specific character types) because they lead to predictable patterns and user frustration without meaningful security improvement.

NIST also recommends checking new passwords against lists of commonly used, compromised, and dictionary passwords. Periodic password expiration is explicitly discouraged unless there is evidence of compromise, as forced rotation leads to incrementally weaker passwords (users append "2" or change a single character). Instead, NIST emphasizes using multi-factor authentication as the primary security enhancement beyond passwords. These guidelines represent a significant shift from traditional password policies that prioritized complexity over length and randomness.

Passphrases: The XKCD 936 Approach

Randall Munroe's famous XKCD comic 936 illustrated that a passphrase of four random common words ("correct horse battery staple") is both more memorable and more secure than a traditionally "strong" password like "Tr0ub4dor&3." The math supports this: four random words from a 2,048-word list provide 44 bits of entropy, while the seemingly complex traditional password may have fewer effective bits due to predictable substitution patterns.

Modern passphrase recommendations use larger word lists for greater entropy. The EFF's diceware list contains 7,776 words (6^5), making each word worth about 12.9 bits of entropy. A 5-word EFF passphrase provides about 64 bits — strong enough for most purposes. For higher security, use 6 or 7 words (77 or 90 bits). This generator includes a passphrase mode with a curated word list, configurable word count, and separator options to produce memorable yet secure passphrases.

Cryptographic Randomness vs Math.random()

JavaScript's Math.random() is a pseudo-random number generator (PRNG) that produces numbers using a deterministic algorithm seeded with an initial value. While the output appears random, it is entirely predictable to anyone who knows (or can deduce) the seed. In V8 (Chrome's engine), Math.random() uses the xorshift128+ algorithm, which has been demonstrated to be reversible from a small number of outputs. Using Math.random() for password generation is a serious security vulnerability.

The Web Crypto API's crypto.getRandomValues() draws from the operating system's cryptographic random number generator, which collects entropy from hardware sources like CPU timing jitter, interrupt timing, and sometimes dedicated hardware random number generators. The output is computationally indistinguishable from true randomness and suitable for all cryptographic purposes including password generation, key derivation, and nonce creation. This tool exclusively uses crypto.getRandomValues() to ensure every generated password is genuinely unpredictable.

Multi-Factor Authentication and Beyond

Even the strongest password is vulnerable to phishing, keylogging, and server-side breaches. Multi-factor authentication (MFA) adds additional verification layers: something you know (password), something you have (phone, hardware key), and something you are (biometric). TOTP apps (like Google Authenticator), hardware security keys (like YubiKey), and push notifications each provide different security and usability trade-offs. FIDO2/WebAuthn hardware keys offer the strongest protection against phishing because they cryptographically verify the origin of the authentication request.

The future of authentication is moving toward passwordless systems using passkeys (discoverable FIDO2 credentials stored in platform authenticators or hardware keys). Major platforms including Apple, Google, and Microsoft have deployed passkey support, allowing users to authenticate with biometrics or device PINs instead of passwords. Until passwordless authentication achieves universal adoption, strong generated passwords combined with MFA remain the gold standard for account security.

Frequently Asked Questions

How does this password generator create random passwords?
This tool uses the Web Crypto API (crypto.getRandomValues()) to generate cryptographically secure random numbers. Unlike Math.random(), which uses a deterministic pseudo-random algorithm that can be predicted, the Web Crypto API draws from the operating system's entropy pool (hardware timing jitter, interrupt timing, etc.), producing genuinely unpredictable randomness suitable for security-critical applications like password generation.
What is password entropy and how is it calculated?
Password entropy measures unpredictability in bits. The formula is: entropy = password_length * log2(charset_size). For example, a 16-character password using 95 printable ASCII characters has entropy of 16 * log2(95) = 105 bits. Higher entropy means exponentially more possible combinations. Each additional bit doubles the number of guesses needed, making even small increases in entropy significant for security.
How long should my password be?
NIST SP 800-63B recommends a minimum of 8 characters, but security experts recommend 16+ characters for important accounts. A 16-character password using all character types (upper, lower, numbers, symbols) provides approximately 105 bits of entropy. For maximum security, use 20+ characters or a passphrase of 5-7 random words. The length slider in this tool supports up to 128 characters for encryption key generation and similar high-security needs.
What is a passphrase and why use one?
A passphrase is a password composed of multiple random words (e.g., "timber-cascade-prism-lunar-echo"). Passphrases are significantly easier to remember than random character strings while providing comparable entropy. A 5-word passphrase from this tool's word list provides strong security. They are particularly recommended for master passwords (password managers), encryption keys, and any credential you need to type frequently from memory.
Is it safe to generate passwords in a web browser?
Yes, when the tool runs entirely client-side as this one does. All password generation happens in your browser using JavaScript. No passwords are transmitted to any server, stored in any database, or logged anywhere. The page has no external dependencies, no analytics, and makes no network requests after loading. You can verify this by checking the Network tab in your browser's developer tools, or by saving the page and using it offline.