Privacy & security Works offline

Password Strength Checker

Measure a password's character pool and entropy, see how long it would survive three realistic attack rates, and get specific warnings about the patterns that make it weaker than it looks. The value never leaves your browser.

Checked locally, character by character, in this tab only — never transmitted, never stored.

Detected character pool
—
Entropy
—
Strength
—
Type a password to see which character classes are present.

Time to crack at three attack rates

Online, throttled — 1e6 guesses/s
—
Offline fast hash — 1e10 guesses/s
—
GPU cluster — 1e12 guesses/s
—

Pattern warnings

  • No password entered yet.

What to change

  1. Type a password above and concrete suggestions will appear here.

Reminder: this page never sends, saves or logs the value you type. There is no server-side component at all — the whole check is arithmetic running in this tab.

Analysed locally — nothing is uploaded, echoed back or stored. Close or reload the tab and it is gone for good.

How the check works

As you type, the page reads the value from the password field and does four things, all of them locally. First it inspects the characters and works out the size of the alphabet an attacker would have to search: 26 for lowercase, 26 for uppercase, 10 for digits, about 33 for the printable symbols this tool counts, plus one slot for any other character such as an accented letter or an emoji. Second it computes the raw keyspace as pool ^ length and converts that to bits: entropy = length × log2(pool).

16 characters, 26-letter pool  → 16 × log2(26) = 75.2 bits
16 characters, 62-char pool    → 16 × log2(62) = 95.3 bits
8 characters,  62-char pool    →  8 × log2(62) = 47.6 bits
16 characters,  1-char pool    → 16 × log2(1)  =  0.0 bits

Third, the tool hunts for the patterns that make a password dramatically cheaper to guess than its length implies. And fourth, it converts the resulting entropy into time at three attack rates. Two numbers are shown: the raw figure, which is what the string's character classes alone would give, and the adjusted figure after pattern penalties. The gap between them is usually the interesting part of the result.

The value is compared against an embedded list of the most common passwords — the kind that appear at the very top of every breach corpus — plus several hundred everyday English words. Because people rarely type their password exactly as the dictionary lists it, the check also maps leetspeak back to plain text: @ and 4 to a, 3 to e, 1, ! and | to i or l, 0 to o, 5 and $ to s, 7 to t. That means P@ssw0rd and passw0rd! are recognised for what they are, which a naive character-class count would happily score as strong.

A caution about the formula: length × log2(pool) is the correct entropy only for a value drawn uniformly at random from that pool. Human-chosen passwords are not uniform — they cluster around words, dates, names and keyboard runs — so the raw number is an upper bound. That is exactly why the pattern penalties exist, and why the adjusted figure is the one used for the strength label and the strength bar.

What is measured, and what is only estimated

The character pool, the length, and the presence of the patterns listed below are measured exactly — they are properties of the string itself. The crack time is an estimate, and it depends on assumptions you cannot see from here. It assumes the attacker knows your pool and length, that they can test guesses as fast as the stated rate, that the hash is unsalted and fast for the offline columns, and that they must exhaust, on average, half the keyspace to succeed. Two numbers are reported honestly: the time is quoted for the full keyspace, so halve it mentally for the average case.

  • The pool figure is what you used, not what was available. A single lowercase letter in an otherwise numeric password widens the pool by 26 characters. The pool is a property of the string, and an attacker who does not know the string must assume you drew from the full printable ASCII set — a real-world attacker usually knows better, and uses masks and rules.
  • Character classes are not the whole story. A 30-character password made of four distinct characters has the same nominal entropy as one made of thirty distinct characters under this formula, yet the former falls to a mask attack almost immediately. The tool flags long repeats, but no simple formula models every way a human builds a weak password.
  • Breach exposure is invisible here. If your password already appears in a public breach corpus, its entropy is irrelevant: it will be tried first. This page has no network access by design, so it cannot check that for you. Services such as Have I Been Pwned offer a k-anonymity range API for exactly this, and password managers can check locally.
  • Strength is not the same as safety. Password reuse, no second factor, a keylogger, or a recovery email that anyone can read will defeat a 200-bit password. This tool measures one property of one string.

Using it well

  1. Check before you commit. Paste a candidate password, read the warnings, fix the string, re-check. Nothing you type here is stored, so it is a safe scratchpad — but it is a scratchpad, not a vault, so save the final value into your password manager before you close the tab.
  2. Chase the warnings, not the bar. The bar is a summary. The warnings name the specific weakness: a dictionary word with a leet swap, a straight keyboard run, a year, a repeated block. Fixing the named problem is worth more than adding a symbol to move the bar one notch.
  3. Prefer length plus randomness. If the warnings show a recognisable word, the fix is not Word1! — it is either a genuinely random 20-character string from a generator, or four or more dice words chosen by software with a consistent separator.
  4. Re-check after every edit. Changing Summer2026 to Summer2027 keeps every pattern problem and moves the bar a fraction. Rewriting the middle of the string is what actually changes the result.
  5. Remember the two things this page cannot see. Whether the password is reused elsewhere, and whether the service storing it hashes it properly. Both matter more than a few bits of entropy.

Do not paste a password you are actively using into any site you do not control — including this one, as a matter of habit. This page genuinely makes no network request, but the habit is what protects you from the page that does. Test a variant, or generate a fresh password instead.

Frequently asked questions

Is my password sent anywhere or stored?

No. The check runs entirely inside this page: the value is read from the input element by JavaScript on your device, measured, and thrown away. There is no network request, no analytics on the field, no cookie and no database. You can confirm this by opening your browser's network panel or by turning off your internet connection — the tool behaves identically offline, and your password disappears the moment you reload or close the tab.

What does the entropy number actually mean?

Entropy is a measure of how many guesses an attacker needs, expressed in bits. For a password of length L drawn from an alphabet of A characters, the keyspace is A^L and the entropy is L × log2(A). Each additional bit doubles the work. The number shown here is a best case: it assumes the password really was drawn uniformly at random. Passwords chosen by a human, or built from a dictionary word plus a digit, hold far less entropy than their character count suggests, which is why the tool reduces the figure when it recognises a pattern.

Are the crack times realistic?

Treat them as a range, not a promise. 1e6 guesses per second models a well-throttled online login where the attacker must talk to the server over the network. 1e10 per second models an offline attack on a leaked database that used a fast hash such as unsalted MD5 or SHA-1. 1e12 per second models a dedicated GPU cluster, or a nation-state budget, working on a fast hash. Real servers that follow modern advice hash with bcrypt, scrypt or Argon2, which cuts the rate by many orders of magnitude — so the online column is usually the realistic one for a live account.

Should I use a long passphrase or a random string?

Random strings win when software types for you, so let a password manager generate 20 characters and stop worrying about it. Passphrases win when a human must remember and retype the secret — a master password, a device unlock, a Wi-Fi key. Four random words are decent, six or more are strong, and the words must come from a generator rather than your own head: human word choices cluster tightly and cracking tools exploit exactly that clustering.

Sources & further reading

  • NIST SP 800-63B — Digital Identity Guidelines — The source of the modern rules: judge length and check against blocklists, do not force composition rules, and never truncate the password before hashing.
  • OWASP Authentication Cheat Sheet — Practical guidance on password policy, breached-password checks, rate limiting and the hashing algorithms that make the online crack-time estimate the realistic one.
  • MDN — Crypto.getRandomValues() — The API behind every random value on this site, including the strong-password generator and the suggestions offered here.