Password Entropy Analyser

Calculate Shannon entropy, run offline zxcvbn pattern analysis, and see estimated GPU crack times across four hardware tiers — nothing leaves your browser.

ZERO UPLOAD · ALL LOCAL

NIST SP 800-63-4 length requirements

  • 8 characters (SHALL)
  • 15 characters (SHALL)
  • at least 64 characters (SHOULD)
  • prohibited — SHALL NOT be mandated

In place of composition rules, NIST requires blocklist screening against known breached and commonly used passwords at creation time.

Matching passphrase and password entropy tiers

  • 4 words ≈ 8 characters ~51.7 bits vs ~52.6 bits
  • 6 words ≈ 12 characters ~77.5 bits vs ~78.8 bits
  • 7 words ≈ 14 characters ~90.5 bits vs ~92.0 bits
  • Per-unit efficiency ~12.9 bits per word vs ~6.57 bits per character

Online vs. offline guess rates

  • ~100 guesses/hour
  • ~300 billion guesses/second on an RTX 4090
  • ~1,560 guesses/second on the same GPU
  • ~190 million times slower under bcrypt than NTLM

The password doesn't change between scenarios — only the threat model does. A breach converts an online-throttled password into an offline target overnight.

Credential stuffing by the numbers

  • Verizon 2025 DBIR 22% of breaches started with a compromised credential
  • Akamai ~193 billion credential stuffing attempts monitored in a single year
  • What stops it a unique password per service — not higher entropy
  • NIST's defense mandatory blocklist screening against known-breached credentials at creation

Python's secrets module functions

  • secrets.choice(alphabet) uniform selection from a character pool — the official password recipe
  • secrets.token_urlsafe(nbytes) base64, URL-safe — byte count maps directly to entropy
  • secrets.token_hex(nbytes) hex-encoded, avoids punctuation entirely
  • Never use the random module — Mersenne Twister state is reconstructable from 624 outputs

Node's crypto module functions

  • bounded integers, uses rejection sampling to avoid modulo bias
  • 256 bits of entropy as a raw byte buffer
  • 122 bits of actual randomness (6 of 128 bits are fixed by the UUID format)
  • Math.random() — not cryptographically secure per Node's own docs

PowerShell's RandomNumberGenerator methods

  • GetString(chars, length) draws each character from the cryptographically secure source
  • GetInt32(fromInclusive, toExclusive) manual per-character selection for older PowerShell versions
  • GetBytes(count) raw byte array for token-style secrets
  • Never use Get-Random — built for general-purpose randomness, not prediction resistance

Bash secure-random idioms

  • filters a uniform byte stream by inclusion — no modulo bias
  • 128 bits of entropy in one call, no filtering needed
  • functionally identical today — both backed by the same kernel CSPRNG
  • $RANDOM — a simple linear generator, not built to resist prediction

Entropy by character pool at 12 characters

  • ~56.4 bits
  • ~68.4 bits
  • ~71.5 bits
  • ~78.8 bits

NIST SP 800-63-4 requires at least 15 characters for a password standing alone as the only factor — 12 characters clears only the 8-character multi-factor floor.

Entropy by character pool at 16 characters

  • Lowercase only (26 chars) ~75.2 bits
  • + Uppercase (52 chars) ~91.2 bits
  • + Digits (62 chars) ~95.3 bits
  • Full 95-char pool ~105.1 bits — the ceiling for this length

Pre-filled for this page

The input below is pre-filled with 1234, the example this page refers to, so you can see it analysed immediately.

6-digit PIN entropy at a glance

  • 1,000,000 combinations (10⁶)
  • 19.93 bits — 100x a 4-digit PIN's 13.29 bits
  • 29.63% of studied 6-digit PINs
  • 20.66% of studied 6-digit PINs

Research on throttled attackers (10 to 100 guesses) found six-digit PINs provide little to no improvement over four-digit ones, because roughly half encode a calendar date.

Diceware entropy by word count

  • Wordlist size 7,776 words (6⁵, matching five dice rolls)
  • Per word log₂(7776) ≈ 12.925 bits
  • 6 words (EFF recommended) ~77.5 bits
  • 7 words ~90.5 bits

WPA2 passphrase math

  • 8 to 63 printable ASCII characters (IEEE 802.11 standard)
  • ~52.6 bits
  • ~413.9 bits
  • always a fixed 256-bit PMK via PBKDF2-HMAC-SHA1, 4,096 iterations

A longer passphrase doesn't produce a longer key — it makes each of those 4,096 iterations per guess harder for an offline attacker to brute-force.

Type or paste a password to analyse its strength.

Output (Strength)

Length
Character pool
Entropy
Pattern
Attack Scenarios GPU times assume raw brute-force of a stolen hash. Online times use pattern-aware estimation against a live service.
GPU — Fast Hash (NTLM, MD5) Est. crack time
RTX 4070 Ti Super 155 GH/s · 16 GB GDDR6X
RTX 5070 175 GH/s · 12 GB GDDR7
RTX 4090 300 GH/s · 24 GB GDDR6X
RTX 5090 410 GH/s · 32 GB GDDR7
GPU — Slow Hash (bcrypt cost 12 / Argon2id) Est. crack time
RTX 4070 Ti Super 740 H/s * · 16 GB GDDR6X
RTX 5070 670 H/s * · 12 GB GDDR7
RTX 4090 1,440 H/s * · 24 GB GDDR6X
RTX 5090 2,380 H/s * · 32 GB GDDR7
Online Attack Est. crack time
Throttled 100 guesses/hour — rate-limited login service
Unthrottled 10 guesses/second — no rate limiting

* bcrypt and Argon2id are deliberately slow password hashes, so their crack times depend entirely on the cost factor a site configures. These rates assume bcrypt at cost factor 12, a conservative legacy setting. OWASP's current guidance prefers Argon2id for new systems and lists bcrypt as a legacy fallback with a work factor of 10 or more. Published hashcat v6.2.6 benchmarks measure bcrypt at cost factor 5 (RTX 4090 at 184 kH/s, RTX 5090 at 305 kH/s); each step up the cost factor doubles the work, so cost 12 runs 128 times slower than the benchmark default. The RTX 4090 and RTX 5090 figures divide those benchmarks by 128, while the RTX 4070 Ti Super and RTX 5070 figures are scaled from their SM and core counts. Sources: hashcat RTX 4090, hashcat RTX 5090, and the OWASP Password Storage Cheat Sheet.

  1. Type or paste a password into the input field — strength updates instantly as you type.
  2. Check the entropy bits and strength tier in the meter below the input.
  3. Review the crack time table to see how long each attack scenario would take against your password.
  4. Read the feedback panel for specific suggestions if zxcvbn detected patterns or weaknesses.
  5. Use the eye icon to unmask the password if you need to review what you typed.

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

How long is long enough

Band arithmetic gives length targets. Eight full-pool characters carry about 52.6 bits, inside the Fair band; twelve carry about 78.9 bits, into Strong; sixteen carry about 105 bits, far past the top band. Each added character multiplies the brute-force space by the pool size, which is why one more character moves the bands faster than adding an entire character class: a longer string drawn from a smaller alphabet routinely outscores a shorter one decorated with every symbol on the keyboard. The formula in the paragraphs above does the exact arithmetic for any length you are weighing.

The PIN is the anti-example. A four-digit PIN carries 13.3 bits of entropy and a six-digit PIN 19.9 bits, both deep in the Very Weak band, and both survive on phones and bank cards only because the device throttles guesses. Throttling is an online-attack defense; it does nothing for a stolen hash, where the table's fast-hash rows clear the entire four-digit space almost instantly. The meter reports the raw number honestly either way, which is the right behavior for an analyser: your threat model, not the score band, decides whether 13 bits is acceptable.

The math holds only when each character is drawn unpredictably, which is what a cryptographic random source provides and what human choice does not. Hand-picked strings carry exactly the patterns the pattern section catalogs: dictionary words, walked keyboards, appended years. The honest workflow is to generate from a secure source, paste the result here to confirm the score, and adopt it only when both signals agree. A password you composed yourself has already been shaped by the memorable habits every cracker exploits first, no matter how many character classes it spans.

What the NIST guidelines require

The rules themselves are short. The current guidance requires verifiers to demand at least 15 characters when a password authenticates on its own, and at least 8 when it only backs a second factor; it calls for accepting passwords of at least 64 characters, including every printing ASCII character and the space; it prohibits composition rules that mandate mixtures of character classes; and it prohibits forcing periodic changes unless the password shows evidence of compromise.4 Length is the lever the standard pulls, and each rule it drops removes a dial that never helped.

The one addition is screening. The same guidance calls for comparing every new password against a blocklist of known-compromised and commonly used values and rejecting the matches.5 This analyser runs entirely offline and consults no breach corpus: its dictionary matches common passwords and patterns locally, which catches the obvious end of the problem while the password stays on your machine. Full breach screening belongs to the service that stores the password, at signup or change time, because only the service can see the breached lists it checks against. A browser meter measures; a verifier screens.

Reading the meter against the rules is straightforward: the guidelines reward length and unpredictability and distrust symbol theater, which is exactly what the two signals here measure. The entropy figure prices length over the true pool; the zxcvbn score prices predictability. A password that clears the Strong band without satisfying a single composition rule is not a rebel against the standard. It is the kind of password the standard is steering you toward, and the fact that it needs no numeral, no capital, and no symbol is the point rather than the problem.

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.

Password strength analysis for correct-horse-battery-staple showing 28 characters, a 59-character pool, 164.7 bits and a common word warning
correct-horse-battery-staple: 28 characters, a 59-symbol pool and 164.7 bits, rated Strong. The Common word detected pattern note is a reminder that dictionary words lower the real cost of guessing.

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

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.8 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. Published hashcat v6.2.6 benchmarks measure the RTX 4090 at 184 kH/s at cost factor 5, and dividing by 128 lands at the table's 1,440 H/s at cost 12. The size of the difference is easiest to feel in concrete numbers: a 12-character digits-only password clears the 4090's NTLM row in about two seconds yet needs about eleven years against its bcrypt row, while a 12-character full-pool random password survives millennia on both rows. 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.5 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.

Where passphrases fit

A passphrase's bits come from the word list it draws from. Each uniformly random word contributes log₂(listSize) bits, so five words from a 7,776-word list carry about 64.5 bits, comparable to a ten-character full-pool random string, and six words clear 77 bits, into the Strong band.9 The arithmetic is friendlier than character math because words are chunky: on the standard dice wordlist each added word buys the same fixed block of uncertainty, roughly 12.9 bits, without a single symbol to remember or type.

The words must be selected at random, by dice or a generator, not lifted from a famous quote or a sentence you would actually say. zxcvbn scores dictionary-on-dictionary matches far below their raw bit count, because attackers test phrase-shaped guesses early. The meter distinguishes the two cases, holding a genuinely random word sequence near its arithmetic while collapsing a memorable sentence into pattern matches. That split is the whole reason both signals run side by side here: entropy prices the words, and the pattern engine prices the way you picked them.

Password Strength Score Bands

  • Under 28 bits
  • 28-39 bits
  • 40-54 bits
  • 55-74 bits
  • 75+ bits
  • 128× slower

Type your own password above and compare its entropy score and bcrypt-scaled crack time against these bands.

Sources
  1. 1.

    NIST, "Strength of Passwords," nist.gov, accessed June 2026. https://pages.nist.gov/800-63-4/sp800-63b/passwords/

  2. 2.

    Wikipedia, "Password strength," en.wikipedia.org, accessed June 2026. https://en.wikipedia.org/wiki/Password_strength

  3. 3.

    Dropbox, "zxcvbn README," github.com, accessed June 2026. https://github.com/dropbox/zxcvbn/blob/master/README.md

  4. 4.

    NIST, "Authenticator and Verifier Requirements," nist.gov, accessed September 2026. https://pages.nist.gov/800-63-4/sp800-63b/authenticators/

  5. 5.

    OWASP Foundation, "Authentication," cheatsheetseries.owasp.org, accessed June 2026. https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html

  6. 6.

    R. Rivest, "The MD5 Message-Digest Algorithm," RFC 1321, IETF, April 1992. https://www.rfc-editor.org/rfc/rfc1321

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

  8. 8.

    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

  9. 9.

    Joseph Bonneau, "Deep Dive: EFF's New Wordlists for Random Passphrases," eff.org, July 2016. https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases

FAQ

No. CapyToolkit runs the entire analysis in your browser. Shannon entropy is computed in TypeScript and the zxcvbn pattern library loads as a local JavaScript module from your browser cache. No keystrokes leave your device. You can verify this by opening DevTools, going to the Network tab, and typing a password. There are no outbound requests after the module files load once.

Entropy counts the bits of uncertainty an attacker must resolve through brute force, assuming they know your character set but not your specific characters. A password drawn from all 95 printable ASCII characters gives roughly 6.57 bits per character, so a 12-character password using the full set carries around 78.9 bits. Entropy does not account for predictable human patterns, which is why zxcvbn analysis runs alongside it.

The two categories model different real-world attack scenarios. GPU rows assume the attacker has obtained a password hash from a database breach and is cracking it offline using dedicated hardware. Online rows assume the attacker is submitting guesses directly against a live login service, where network latency and rate limits apply. The threat model changes completely depending on which scenario applies to your situation.

Trust the lower signal. Entropy assumes a random brute-force attacker who tests the full keyspace. zxcvbn assumes a smart attacker with common wordlists and pattern knowledge. A password like "Password123!" has high character variety but scores Very Weak because it matches patterns found in virtually every cracking dictionary. Smart attackers skip the full keyspace and go straight for the most common patterns first, so a low zxcvbn score is more dangerous than high entropy implies.

The table uses published hashcat v6.2.6 benchmarks. Fast hash rows model NTLM and MD5 on four GPUs: RTX 4070 Ti Super at 155 GH/s, RTX 5070 at 175 GH/s, RTX 4090 at 300 GH/s, and RTX 5090 at 410 GH/s. For slow hashes, the table models bcrypt at cost factor 12, matching OWASP guidance listing bcrypt as a fallback with a work factor of 10 or more. Each cost increment doubles the work, so cost 12 runs 128 times slower than the cost-5 baseline: roughly 740 H/s, 670 H/s, 1,440 H/s, and 2,380 H/s on those same four cards, respectively. The 4090 and 5090 rates divide published cost-5 benchmarks of 184 kH/s and 305 kH/s by 128, while the other two scale from SM and core counts. These are single-card figures; real-world speeds vary with a site's cost factor, thermal throttling, and driver version.

zxcvbn detected a structure that smart attackers test first: a common dictionary word, a keyboard walk like "qwerty", repeated characters, a number sequence, or an embedded date. These patterns dramatically reduce the effective guesses needed regardless of raw character pool size. The feedback panel below the table shows the specific weakness and suggests concrete ways to improve it.