~/TechPurAILearn · Build · Grow
Start Learning
~/tools/password-generator
Generators

Password Generator

Mode
16 characters
103
—
Very strong
103 bits of entropy

Estimated time to guess at 10,000,000,000 guesses/second: longer than the universe has existed

A strong password is really just a string with enough genuine randomness that guessing it isn't practical — not a password that merely looks complicated to a human eye. This tool generates three different kinds, depending on what you actually need it for: a fully random string for anywhere a password manager fills it in, a memorable multi-word passphrase for anywhere you have to type it by hand, and a numeric PIN for device locks and similar short codes — each with a live entropy score instead of a vague "strong/weak" label with no explanation behind it. A 16-character random password using all four character types draws from an 88-character set and lands around 103 bits of entropy, for a sense of scale before getting into how each mode works.

Random passwords: maximum entropy per character

This is the default mode, and the right choice whenever a password manager (or your browser's built-in one) is going to store and autofill the result — since you'll never need to type it yourself, there's no reason to trade any strength for memorability. Length and character-set toggles are both adjustable: uppercase, lowercase, numbers, and symbols can each be switched on or off independently, and an "exclude similar characters" option removes the handful of characters most commonly misread against each other — 0 and O, 1, l, and I — useful specifically for the rare case where a random password does need to be read aloud or typed from a printed copy.

Every character is selected using crypto.getRandomValues(), the Web Crypto API's cryptographically secure random number generator, through a rejection-sampling method that keeps every allowed character equally likely regardless of how the character set's size divides into the generator's output range. Math.random() is deliberately not used anywhere in this tool — it's a fast pseudo-random generator built for things like UI animations and sampling, with no guarantee of unpredictability, and was never designed to resist someone trying to reconstruct its internal state from observed output.

Memorable passphrases: built for typing by hand

Not every password gets filled in by a manager. A Wi-Fi password read off a card, a shared household or team login, a device setup code — these get typed by a human, often more than once, and a genuinely random 20-character string is both painful to type accurately and not meaningfully safer than a well-constructed passphrase for that specific use case. Memorable mode builds a password from a list of nearly 2,000 common, unambiguous English words instead, each selected with the same cryptographically secure randomness as random mode — four words picked from a list that size already clears roughly 44 bits of entropy, comparable to a decent random password, while being something a person can actually read back correctly on the first try.

A custom separator, optional capitalization of each word, and an optional trailing number are all adjustable, mainly because some login forms have their own, often undocumented character requirements — a passphrase that satisfies "must contain a number" without changing its underlying word-based structure is more practical than fighting the form.

PINs: short codes for a different threat model

A PIN is appropriate specifically where the system on the other end limits how many guesses an attacker gets — a phone's lock screen, a PIN pad with a lockout after a handful of failed attempts — because a short, all-numeric code has comparatively little entropy on its own. A 6-digit PIN has about 20 bits of entropy; a 4-digit one about 13. Neither is meaningfully resistant to an attacker who can try combinations at machine speed with no rate limit, which is exactly why PINs are only used in systems designed around that constraint in the first place.

Reading the entropy score and strength label

The strength label (Weak, Fair, Strong, Very strong) is a simplified summary of the entropy score in bits directly underneath it — the number that actually matters, since it's what determines how large a space an attacker has to search. Every additional bit of entropy doubles the number of possibilities, which is why going from a 48-bit to a 58-bit password represents far more added security than the small difference in the two numbers suggests at a glance. The estimated time-to-guess figure translates that bit count into a rough, human-readable duration under one stated assumption (10 billion guesses per second, representative of a fast offline attack against a leaked, unsalted hash) — it's deliberately labeled as an estimate, not a guarantee, since the real number depends on the attacker's hardware and how the password is actually stored on whatever system it protects.

A strong password doesn't fix a weak system

No password strength, random or otherwise, protects against a service that stores passwords in plain text, reuses the same password across multiple breached sites, or gets phished directly. Generate a unique password per account, store it in a password manager rather than memory or a note, and turn on two-factor authentication wherever it's offered — the password itself is one layer, not the whole defense.

Frequently asked questions

Is this password generator actually random, or just random-looking?

It uses crypto.getRandomValues(), the Web Crypto API's cryptographically secure random number generator — the same class of randomness source operating systems use for generating encryption keys — not Math.random(), which is a faster but predictable pseudo-random generator never intended for anything security-sensitive. Character selection also uses rejection sampling to avoid modulo bias, so every allowed character has an genuinely equal chance of appearing, not a statistically skewed one.

What does the entropy score actually mean?

Entropy, measured in bits, is a measure of how many possibilities an attacker who knows your settings (but not your specific password) would have to search through — each additional bit doubles that number. A random password drawing from a 70-character set at 16 characters long has roughly 98 bits of entropy; a 4-word memorable passphrase from this tool's roughly 2,000-word list has about 44 bits. More bits means more possibilities to search, which is the actual mechanism behind 'stronger' — not a vague marketing label.

How is the estimated crack time calculated, and should I trust the exact number?

It's a rough order-of-magnitude estimate, not a guarantee — calculated as half the total keyspace divided by a stated guess rate (10 billion guesses per second, a reasonable estimate for a fast offline attack against a leaked, unsalted hash using modern hardware). Treat the number as directional: 'a few hours' and 'longer than the universe has existed' mean very different things, but the exact figure shifts with the attacker's hardware, the hashing algorithm protecting the password on the other end, and whether the attack is offline or rate-limited online. The entropy score underneath it is the more stable number to compare against.

Why does the tool offer passphrases instead of only random character strings?

Because the right answer depends on where the password actually gets used. A password manager fills in long random strings for you, so there's no reason not to maximize entropy per character. A password you have to type by hand — a device PIN, a Wi-Fi password you're reading off a card, a shared account's login — is realistically more usable, and no weaker, as a passphrase: four to six random common words are measurably harder to brute-force than most people's typed random passwords, and far easier to type correctly without a manager's autofill.

Is a 4-digit PIN ever actually a good choice?

Only for low-stakes, rate-limited contexts — the lock screen on a phone that wipes or locks out after a handful of failed attempts, for instance, where an attacker can't just try all 10,000 combinations at machine speed. A 4-digit PIN has about 13 bits of entropy, which is trivial to brute-force against anything that doesn't actively throttle guesses. For anything without that kind of built-in rate limiting, a longer PIN or a different mode entirely is the safer choice.

Does this tool store, sync, or transmit the passwords it generates?

No. Generation happens entirely in your browser using the Web Crypto API — nothing is sent to a server, logged, or saved anywhere, including in this tool itself. That also means there's no vault, no sync across devices, and no account; if you need a password stored and autofilled later, a dedicated password manager is doing a genuinely different job than a generator, and this tool is intentionally just the generator half.