IDENTITY & PASSWORDS

Password Strength Checker & Breach Lookup

Type a password to evaluate how predictable it is using local pattern analysis. You can also check whether it appears in Have I Been Pwned's Pwned Passwords corpus using a privacy-preserving 5-character hash prefix.

Live Checker Live
Waiting for input… β€”
We'll estimate how long it would take to crack.
πŸ”’ Strength check never leaves your device. Breach check sends only 5 hash characters (k-anonymity) to HaveIBeenPwned.

How this password strength checker actually works

Most password meters you'll find online score based on arbitrary rules β€” "add a number," "add a symbol" β€” which allows weak-but-technically-compliant passwords like P@ssw0rd1 to score as "strong." This tool instead uses zxcvbn-ts, a pattern-matching password strength estimator: it checks your password against built-in password and language dictionaries, keyboard-adjacency patterns (like qwerty or 1qaz2wsx), dates, repeated and sequential characters, and common letter-for-symbol substitutions (like @ for a). The score (0–4) reflects how many guesses an attacker would realistically need, not just how many character types you used.

A long password can still be weak when it consists of repeated characters, common words, or predictable sequences β€” and a somewhat shorter but genuinely unpredictable password may require far more guesses to crack. Character categories alone do not determine the score: P@ssw0rd1 uses uppercase, lowercase, a digit, and a symbol, and still scores only 1 out of 4. The bar and crack-time estimate update as you type (after a short pause, to avoid recalculating on every keystroke), so you can see the effect of edits without needing to submit anything.

Why the breach check matters more than strength alone

A password can score well on pattern-matching and still be a bad choice if it has already leaked in a data breach β€” attackers don't need to guess a password that's sitting in a breach compilation they already own. This is a separate check from the strength score above: the strength score comes from a local, offline pattern-matching library with its own built-in word lists, while the breach check queries Have I Been Pwned's Pwned Passwords database, an independent, continuously updated collection of passwords seen in real breaches. This tool checks your password against it using k-anonymity: your password is hashed with SHA-1 locally in your browser, and only the first 5 characters of that hash are sent to the API. The full list of matching hash suffixes comes back, and the match is found locally β€” the complete password, and the complete hash, never leave your device.

Frequently asked questions

Do you store or log the passwords I type here?

No. Your password value itself is processed entirely in your browser and is never included in a network request during strength analysis β€” the first time you use this tool, your browser does fetch the (password-free) analysis code itself, same as loading any other part of the page. The breach check sends only a 5-character hash prefix; that prefix doesn't uniquely identify your password and is shared by many different hashes, though it isn't a mathematical impossibility to work backward from a hash if an attacker already has a list of candidate passwords to check against it β€” the point of the k-anonymity approach is that the prefix alone gives an observer very little to go on.

My password scored "Very hard to guess" but shows a crack time of seconds. Isn't that a contradiction?

No β€” they're answering different questions. The score measures how predictable the password is against pattern-based guessing (dictionary words, keyboard walks, dates, and so on); it doesn't know how the password will actually be stored. The crack-time rows answer "how fast, assuming a specific attack" β€” and a fast, unsalted hash can turn even a hard-to-guess password into a fast crack. That's precisely why we show four scenarios instead of one number: the honest answer depends on the attacker's method, not just your password.

What counts as a "strong" password?

A higher score means the password is harder to guess using known patterns β€” it is not a promise about how long it would survive an actual attack. That depends entirely on how the site storing your password hashes it: the same password can take centuries against a slow, properly-salted hash and seconds against a fast one, which is why we show multiple attack scenarios instead of a single number. Length and unpredictability still help in every scenario β€” a long passphrase of unrelated words generally scores higher than a short password stuffed with symbols in predictable places.

My password shows as strong but was found in a breach. Which matters more?

The breach result. A leaked password is a known password to attackers regardless of its theoretical strength β€” treat any "found in breaches" result as a password to retire immediately.

Does this catch things like "P@ssw0rd" or "Password123"?

Yes. zxcvbn-ts recognizes common letter-for-symbol substitutions (@ for a, 0 for o), dictionary words, and predictable suffixes like adding a number or capital letter β€” passwords built this way score low even though they'd pass most sites' "must contain a symbol and a number" rules.

What is k-anonymity, in plain terms?

It's a way to check a large dataset for a match without revealing what you're checking. Instead of sending your full password hash, only the first 5 characters are sent β€” thousands of other hashes share that same prefix, so the API can't isolate yours from the crowd. The exact match is found locally, on your device.

If you need a replacement for a weak or exposed password, create one with our cryptographically secure Password Generator.

Last reviewed: . Methodology: local zxcvbn-ts pattern analysis and an optional Have I Been Pwned k-anonymity lookup.

Relevant, Not Routine

New tools and anything else worth knowing β€” sent occasionally, only when there's something real to say.