Password Strength Checker
Check entropy and strength score of a password
Updated
What is the Password Strength Checker?
A password strength checker that goes far beyond a simple colour bar. Paste or type any password and get an instant, detailed breakdown: entropy in bits, a normalised strength score, estimated crack times across five real-world attack scenarios, pattern warnings, and actionable suggestions — all computed locally in your browser with no data ever leaving your device.
Most password meters only tell you weak or strong without explaining why. This tool shows you the exact maths: the size of the character pool your password draws from, how much Shannon entropy its actual character distribution contains, which patterns reduce its effective strength, and — crucially — how long it would realistically take an attacker to crack it on an online login form versus an offline GPU cluster.
Key features:
- Dual-entropy analysis — charset entropy (pool size × length) and Shannon entropy (actual character randomness) displayed side-by-side, with a pattern-penalised effective entropy as the bottom line
- Five crack-time scenarios — from a throttled online form (100 guesses/hour) all the way to a nation-state GPU cluster (100 trillion hashes/second)
- Six pattern detectors — common passwords, l33t-speak substitutions, sequential characters, keyboard walks, repeated substrings, and date patterns
- Requirements checklist — at a glance see which of the seven standard password requirements you meet
- Built-in password generator — produce a cryptographically random password of any length with your choice of character classes, then analyse it immediately
- 100% client-side — no passwords are sent to any server, ever
How it works
The first measure of strength is how large the search space is — the total number of possible passwords of the same length using the same character types.
The formula is:
Charset entropy (bits) = length × log₂(pool size)
The pool size grows with each character class you add:
| Class | Pool size |
|---|---|
| Lowercase letters (a–z) | 26 |
| Uppercase letters (A–Z) | 26 |
| Digits (0–9) | 10 |
| Symbols (!@#$…) | 33 |
| All four combined | 95 |
A 12-character password using all four classes has a pool of 95, giving 12 × log₂(95) ≈ 78.8 bits — over 300 quadrillion possible passwords.
2. Shannon entropy
Charset entropy assumes you drew each character perfectly at random from the full pool. In practice, most people don't. Shannon entropy measures how random your actual character distribution is:
Shannon entropy = −Σ p(c) × log₂(p(c))
A password like aaaabbbb has a large charset pool on paper, but its characters are heavily skewed — Shannon entropy reveals the true randomness is much lower. The tool takes the lower of the two entropy figures as the starting point.
3. Pattern detection and effective entropy
Raw entropy assumes purely random characters. Real-world passwords deviate from this — attackers exploit those deviations. The tool runs six detectors and deducts penalty bits for each match:
| Pattern type | Example | Penalty |
|---|---|---|
| Common password | password, qwerty123 |
−100 bits |
| L33t-speak substitution | P@ssw0rd → password |
−30 bits |
| Sequential characters | abcd, 1234 |
−20 bits |
| Keyboard walk | qwer, asdf |
−20 bits |
| Repeated characters/substrings | aaaa, abababab |
−15 bits |
| Date pattern | 1990, 14/07/2024 |
−10 bits |
Effective entropy = max(0, base entropy − total penalties). This is the number displayed prominently and used to drive all other outputs.
4. Strength score and level
Effective entropy is mapped to a 0–100 score on a logarithmic-ish scale anchored at 128 bits = 100:
Score = min(100, round(effectiveEntropy / 128 × 100))
Scores map to six labelled levels:
| Score | Level |
|---|---|
| 0–9 | Very Weak |
| 10–24 | Weak |
| 25–44 | Fair |
| 45–64 | Good |
| 65–84 | Strong |
| 85–100 | Very Strong |
5. Crack-time estimation
For each attack scenario the expected number of guesses is 2^(effectiveEntropy − 1) (on average, an attacker finds the password halfway through the search space). Dividing by the scenario's guesses-per-second gives the expected crack time:
| Scenario | Speed | Represents |
|---|---|---|
| Online (throttled) | ~0.028/s | Login form with rate limiting |
| Online (unthrottled) | 10/s | API endpoint with no rate limit |
| Offline — slow hash | 10,000/s | bcrypt or Argon2 on modern hardware |
| Offline — fast hash | 100 billion/s | MD5/SHA-1 on a consumer GPU |
| Nation-state / GPU cluster | 100 trillion/s | Dedicated cracking rig |
Times are displayed in the most human-readable unit: milliseconds, seconds, minutes, hours, days, months, years, or centuries.
6. Password generator
The built-in generator uses crypto.getRandomValues — the browser's cryptographically secure random number generator — to produce passwords that are genuinely unguessable. It guarantees at least one character from each enabled class before filling the remainder, then shuffles all characters with a Fisher-Yates algorithm so mandatory characters don't cluster at predictable positions.
Examples
Common weak password
A dictionary word followed by digits — one of the most guessed patterns in the world.
Mixed-case with a symbol
A capitalised word, a birth year, and an exclamation mark — a common but still predictable pattern.
L33t-speak substitution
Letter-to-symbol swaps look clever but are the first thing cracking tools try.
Long random password
A randomly generated 16-character password using all four character classes.
Keyboard walk
Running your fingers across the keyboard produces patterns attackers know well.
Frequently asked questions
What is password entropy and why does it matter?
What is password entropy and why does it matter?
Entropy, measured in bits, describes how unpredictable a password is. A password with N bits of entropy means an attacker would need to try up to 2ᴺ guesses to guarantee finding it — and on average would find it halfway through, after 2^(N−1) guesses. The higher the entropy, the larger the search space, and the longer a brute-force or dictionary attack takes. A 40-bit password might fall in seconds on a GPU; an 80-bit password would take millions of years under the same conditions.
What is the difference between charset entropy and effective entropy?
What is the difference between charset entropy and effective entropy?
Charset entropy is a theoretical upper bound: it assumes every character was drawn at random from the full pool of character types you used (lowercase, uppercase, digits, symbols). It tells you how strong the password could be given its length and variety. Effective entropy is the realistic lower bound after subtracting penalties for patterns — sequential runs, keyboard walks, common words, l33t-speak substitutions, and date strings. Attackers don't try every possible combination in order; they try the most likely guesses first. Effective entropy models that threat more honestly.
How are crack times calculated?
How are crack times calculated?
The tool estimates the expected number of guesses needed to find your password as 2^(effectiveEntropy − 1) — on average, the correct password is found halfway through an exhaustive search. Dividing that by each scenario's guesses-per-second gives the expected crack time. The five scenarios range from a rate-limited login form (~0.028 guesses/second) to a nation-state GPU cluster (100 trillion hashes/second), covering the realistic threat spectrum for most passwords.
Is my password sent to a server?
Is my password sent to a server?
No. All analysis happens entirely inside your browser using JavaScript. Your password never leaves your device and is never transmitted over the network. You can even disconnect from the internet and the tool will keep working.
What makes a password truly strong?
What makes a password truly strong?
The biggest driver is length — every additional character multiplies the search space exponentially. After length, randomness matters most: using all four character classes (lowercase, uppercase, digits, symbols) and avoiding predictable patterns. A 20-character random password using only lowercase letters is still stronger than a 10-character password using all four classes. The ideal password is long, randomly generated, and unique to each account — which is exactly what password managers are designed for.
Why does my "clever" password score poorly?
Why does my "clever" password score poorly?
Common tricks like capitalising the first letter, appending 123 or !, substituting @ for a, or adding a birth year are all included in every serious cracking dictionary. Attackers apply these transformations automatically. A password like P@ssw0rd2024! looks complex but resolves to a well-known base word after de-substitution — the tool's l33t-speak and date detectors catch exactly this. Genuine randomness is the only reliable defence.
How many bits of entropy is "good enough"?
How many bits of entropy is "good enough"?
A rough guide based on current hardware:
- Below 40 bits — crackable in seconds to hours even against a slow hash
- 40–60 bits — adequate for rate-limited online accounts, but weak offline
- 60–80 bits — strong against most offline attacks with bcrypt/Argon2
- 80–100 bits — very strong; would take years against fast GPU hashing
- 100+ bits — effectively uncrackable by any currently feasible means For accounts that store sensitive data, aim for at least 80 bits of effective entropy — easily achievable with a 16+ character random password or a four-word passphrase.
What is a keyboard walk, and why is it weak?
What is a keyboard walk, and why is it weak?
A keyboard walk is a sequence of characters that are physically adjacent on a standard QWERTY keyboard — qwerty, asdf, zxcv, 1qaz, and similar runs. They feel random to the eye but are systematically covered by every major password cracking tool. The tool detects runs of four or more adjacent keys in any horizontal row, in either direction.
What is the difference between a fast hash and a slow hash?
What is the difference between a fast hash and a slow hash?
A fast hash (MD5, SHA-1, SHA-256) is designed for speed — useful for checksums, but catastrophic for password storage because an attacker can test billions of candidates per second on a GPU. A slow hash (bcrypt, scrypt, Argon2) is deliberately computationally expensive, limiting attackers to thousands of guesses per second even on powerful hardware. If you don't know which type your service uses, assume the worst. This is why having a high effective entropy matters even against slow hashes.
Should I use a passphrase instead of a random password?
Should I use a passphrase instead of a random password?
A passphrase — four or more unrelated random words (e.g. correct horse battery staple) — can achieve high entropy while remaining memorable. A four-word passphrase drawn from a list of 7,776 words (EFF diceware) has roughly 51 bits of charset entropy; five words gives ~64 bits. The trade-off compared with a fully random character password of similar length is that passphrases have a smaller effective pool (words, not individual characters), so length becomes even more important. Both approaches are valid — use whichever you'll actually store and use correctly.
Why should I use a unique password for every account?
Why should I use a unique password for every account?
If you reuse a password and one service is breached, attackers immediately try that credential on every other popular site — a technique called credential stuffing. Billions of username/password pairs from past breaches are freely available online. A strong, unique password means a breach of one site doesn't cascade into a breach of your bank, email, or cloud storage. A password manager makes this practical by generating and storing a distinct password per account.
How does the password generator ensure randomness?
How does the password generator ensure randomness?
The generator uses crypto.getRandomValues — the browser's cryptographically secure pseudorandom number generator (CSPRNG), the same source used for TLS key generation. It first guarantees at least one character from each enabled class, then fills the remainder from the combined pool, and finally applies a Fisher-Yates shuffle so the mandatory characters are distributed randomly rather than clustered at predictable positions. Unlike Math.random, a CSPRNG is not predictable from its seed or from observing its output.
Related tools
More utilities you might find handy.
API Key Generator
Generate cryptographically secure API keys, tokens, and secrets in your browser. Hex, Base62, Base64URL, UUID, custom charset, prefixes, and bulk export.
Bcrypt Hash Generator
Generate and inspect bcrypt password hashes locally in your browser.
CRC32 Generator
Instantly generate CRC32, CRC32C, BZIP2, MPEG-2 and other checksums for text, files, hex or Base64 – 100% client-side.