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.
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.