Why offline analysis matters
Typing a password into a web-based strength meter is a small act of trust most people make without thinking. When the meter runs server-side, the password travels over HTTP before any feedback appears. The security check itself becomes a data exposure event. This tool works differently: analysis runs entirely in your browser using TypeScript and a pattern model that loads locally as a JavaScript module. Nothing is transmitted.
The pattern analysis library loads on demand the first time you click the input field, not at page load. Your browser caches those module files, and after that initial download, every analysis runs in local memory. You can verify this yourself by opening DevTools, switching to the Network tab, and typing a password. The only requests shown are the module files loading once. After that, there are no outbound requests, and the tool continues working even offline.
TIP
Load the page once while you are online, then disconnect from the
internet. The tool keeps working because the TypeScript analyzer and the
zxcvbn pattern module are already cached in your browser after that first
visit. You can type any password with full confidence that no network
request leaves your machine while the analysis runs.
Shannon entropy and character pool size
Entropy is a measure of unpredictability, not complexity. It counts the bits of uncertainty an attacker must resolve to guess your password through brute force, under the assumption that they know your character set but not which specific characters you chose. Adding even one character class expands the keyspace significantly, because the attacker must now test every position against a larger alphabet.1
Pool size comes from which character classes appear: lowercase letters add
26, uppercase adds 26, digits add 10, and printable ASCII symbols add 33,
giving a maximum pool of 95. Entropy equals length multiplied by
log₂(poolSize). A 12-character password using the full 95-character
set yields roughly 78.9 bits, meaning an attacker must resolve
2⁽⁹·⁹ possible combinations to guarantee a hit.
Using even one uppercase letter grants the full 26-character uppercase
pool, because a brute-force scanner must test every position against the
expanded alphabet.2
What entropy does not capture
High entropy does not mean a password is strong in practice. Entropy
treats every character position as equally random, but humans rarely
choose randomly. A 15-character all-digit password carries 49.8 bits of
entropy by the formula, yet every character is drawn from a pool of only
10. An attacker targeting digit-only combinations exhausts that space far
faster than the entropy figure implies. The tool accounts for this by
capping the displayed strength score using both zxcvbn's pattern estimate
and the entropy ceiling simultaneously, always showing the lower of the
two signals.3
Reading the crack time table
Two separate threat models drive the table's layout. GPU rows assume the attacker has obtained a password hash from a database breach and is cracking it offline using dedicated hardware with no request rate limit. Online rows assume the attacker is submitting guesses directly against a live login service, where network latency, HTTP overhead, and lockout policies slow everything down. The time scales differ by many orders of magnitude between the two categories.
For GPU rows, crack time uses raw brute force: the full keyspace (poolSize raised to the power of length) divided by 2 for the average case, then divided by the GPU's hash rate. The fast hash section covers NTLM and MD5, which are non-iterative algorithms designed for speed. Modern graphics cards test hundreds of billions of these per second. The slow hash section covers bcrypt and Argon2id, which are intentionally expensive functions that cap GPU throughput in the hundreds or thousands per second regardless of hardware tier.45
Why bcrypt cost factor changes everything
The slow hash rows hinge on a number that never appears in the password itself: the cost factor. bcrypt repeats its internal key-setup loop a number of times set by that factor, and each step up the scale doubles the work, so a hash stored at cost 12 takes 128 times longer to test than one stored at cost 5. Hashcat benchmarks bcrypt at cost 5 by default, which is why raw benchmark charts show an RTX 4090 reaching 200,000 hashes per second.67 Most real login systems should not store passwords that cheaply.
Because OWASP's current guidance prefers Argon2id for new systems and lists bcrypt as a legacy fallback with a work factor of 10 or more, the table models bcrypt at cost 12 as a conservative legacy setting. Dividing the cost-5 benchmark by 128 brings the RTX 4090 down to roughly 1,560 bcrypt hashes per second. A 12-character random password that an NTLM attack would clear in seconds can therefore survive centuries of offline bcrypt cracking. The algorithm a site chooses, and the cost factor it configures, shapes your real exposure far more than the raw speed of the attacker's card.
Online rows use zxcvbn's pattern-aware guess estimate rather than raw
brute force. Attackers hitting a live login endpoint start with the most
common passwords and credential-stuffing lists, not random combinations. A
password that looks random to a brute-force formula might still fall
quickly if it follows a recognizable pattern that appears in breach data.
Throttled means 100 guesses per hour, which most web services enforce.
Unthrottled means 10 guesses per second on a service with no rate limiting
configured.3
NOTE Crack times are order-of-magnitude estimates based on single-card benchmark figures, not a guarantee of how long any real attack would take. Actual speeds shift with thermal throttling, driver version, the cost factor a site configures, and multi-GPU or clustered cracking setups. Treat the table as a way to compare relative risk across algorithms and hardware tiers rather than a precise prediction.
zxcvbn pattern analysis
Most passwords people create fall into patterns that attackers
specifically train for. NIST notes that attackers are likely to guess
dictionary words and passwords from previous breaches, so common patterns
should be blocked before throttling takes effect.1 zxcvbn applies the same idea locally: it starts with common passwords and
wordlists, then applies systematic mutations and character substitutions. The
pattern label in the metric strip identifies the dominant structure found in
your password, if any. Five categories cover the most common weaknesses:
The five weakness categories
- Dictionary: matched a common English word, name, or well-known password pattern.
- Keyboard walk: follows adjacent key rows or columns such as "qwerty", "asdfg", or "1qaz2wsx".
- Repeated characters: "aaaa", "abababab", or other repeating substrings.
- Sequential characters: consecutive alphabet or number sequences such as "abcd", "1234", or "zyxw".
- Date pattern: embedded dates in common formats like "19870612" or "Jun1987".
When Shannon entropy and the zxcvbn score point in different directions,
the tool always applies the lower of the two. "P@$$w0rd123" uses
uppercase, symbols, and digits, giving a pool size of 95 and over 70 bits
of Shannon entropy. Yet it scores Very Weak because the substitution
pattern (@ for a, $ for s, 0 for o) appears in virtually every password
cracking ruleset. Your final displayed score reflects both signals, and
the feedback panel explains exactly what zxcvbn detected and how to
address it.
Password Strength Score Bands
- Very Weak Under 28 bits
- Weak 28-39 bits
- Fair 40-54 bits
- Good 55-74 bits
- Strong 75+ bits
- bcrypt cost 12 vs. cost 5 128× slower
Type your own password above and compare its entropy score and bcrypt-scaled crack time against these bands.
- 1.
NIST, "Strength of Passwords," nist.gov, accessed June 2026. https://pages.nist.gov/800-63-4/sp800-63b/passwords/
- 2.
Wikipedia, "Password strength," en.wikipedia.org, accessed June 2026. https://en.wikipedia.org/wiki/Password_strength
- 3.
Dropbox, "zxcvbn README," github.com, accessed June 2026. https://github.com/dropbox/zxcvbn/blob/master/README.md
- 4.
R. Rivest, "The MD5 Message-Digest Algorithm," RFC 1321, IETF, April 1992. https://www.rfc-editor.org/rfc/rfc1321
- 5.
A. Biryukov, D. Dinu, D. Khovratovich, and S. Josefsson, "Argon2 Memory-Hard Function for Password Hashing and Proof-of-Work Applications," RFC 9106, IETF, March 2021. https://www.rfc-editor.org/rfc/rfc9106
- 6.
OWASP Foundation, "Password Storage Cheat Sheet," cheatsheetseries.owasp.org, accessed June 2026. https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html
- 7.
Francisco Pires, "One RTX 4090 Is Faster at Password Cracking Than Three 6900XTs, Eight 1080s," tomshardware.com, October 2022. https://www.tomshardware.com/news/rtx-4090-password-cracking-comparison