How Long Would It Take to Crack Your Password?

By Lucian — builder & engineer, LK Forge

The strength of a randomly generated password is one number — its entropy, in bits — and it comes from a single line of arithmetic. We computed it across every length and character-set choice using the exact character sets our password generator ships, then turned each into a crack time. The results make one thing very clear: eight characters is no longer enough, and length matters far more than sprinkling in symbols.

Strength is one number: entropy

When a password is generated randomly, its unpredictability is exactly length × log₂(pool size), where the pool is how many characters could sit at each position. Turn on all four types — lowercase, uppercase, digits and symbols — and the generator draws from an 88-character pool (26 of them symbols). Each extra bit of entropy doubles the number of guesses an attacker must make, so this one number decides everything.

Key finding: an 8-character password with every character type has just 51.7 bits and falls to an offline attack in about 30 minutes. Add four characters — a 12-character password, 77.5 bits — and it would take roughly 3,400 years. A 16-character one (103.4 bits) is 2.0×10¹¹ years.

0 40 80 120 160 Fair · 40 bitsStrong · 60 bitsVery strong · 80 bits 4812162024 Entropy (bits) password length (characters) lkforge.com
Entropy against length. Top to bottom at the right edge: all four types (88), letters + digits (62), lower + UPPER (52), lowercase only (26). Every line is straight — entropy grows linearly with length.

Crack time, by length

Entropy becomes a time once you assume a guessing rate. Below, every password uses all four character types. Offline assumes a GPU rig managing ~1 trillion guesses a second against a fast or unsalted hash — the worst realistic case if a site's password database leaks. Online assumes a well-behaved login that rate-limits to ~1,000 tries a second. Times are for the average attack, which searches half the space.

Length Entropy Rating Offline (10¹²/s) Online (10³/s)
6 38.8 bits Weak instant 7 years
8 51.7 bits Fair 30 minutes 5.7×10⁴ years
10 64.6 bits Strong 5 months 4.4×10⁸ years
12 77.5 bits Strong 3.4×10³ years 3.4×10¹² years
14 90.4 bits Very strong 2.6×10⁷ years 2.6×10¹⁶ years
16 103.4 bits Very strong 2.0×10¹¹ years 2.0×10²⁰ years
20 129.2 bits Very strong 1.2×10¹⁹ years 1.2×10²⁸ years
24 155 bits Very strong 7.4×10²⁶ years 7.4×10³⁵ years

The cliff is between 8 and 12. An 8-character password is a coffee break; a 12-character one is thousands of years; by 16 the numbers stop meaning anything human. That is the whole case for a password manager: you never type these, so there is no reason not to make them 20 characters of noise.

Length beats complexity

The instinct to reach for ! and $ is right, but weaker than the instinct to add characters. Turning on symbols multiplies the pool once. Adding a character multiplies the difficulty again at every position. The proof is blunt: a 11-character lowercase-only password already has more entropy (75.2 bits at 16 chars) than an 8-character password using all four types (51.7 bits). So if you have to choose, choose length — then add the other types on top, because there is no reason not to.

One caveat that the arithmetic depends on: this all assumes the password is randomly generated. A human-chosen "P@ssw0rd!" has nowhere near the entropy its length and character variety suggest, because attackers guess predictable substitutions first. The formula is only honest for passwords a machine picked at random — which is exactly what a generator is for.

Push length a little further and the gap becomes absurd: a 16-character lowercase-only password holds 75.2 bits — well past 60-bit "strong", from an alphabet of just 26 letters, and comfortably beyond any 8- or 10-character password no matter how many symbols it uses. Complexity is a nice bonus; length is the lever.

Reproduce this

Every number comes from scripts/gen-password-entropy-study.mjs, using the generator's own character sets. The core is two lines:

// entropy of a random password (pool = 88 with all four types)
const entropy = (length, pool) => length * Math.log2(pool)

// average crack time in seconds at a given guesses/second rate
const crackSeconds = (bits, rate) => 2 ** (bits - 1) / rate
// 8 chars, all types: entropy(8, 88) = 51.7 bits
//   -> crackSeconds(51.7, 1e12) ≈ 30 minutes

Pool sizes come straight from the four character-set strings the generator ships (26 + 26 + 10 + 26 = 88). Nothing else is needed.

Generate one

Use the password generator — it shows the live entropy and strength rating as you change the length and character types, using exactly the formula above. Set it to 16 or more with all four types and let it make the noise for you; everything runs in your browser, and nothing is sent anywhere.

More generators

  • UUID Generator — random v4 IDs with 122 bits of entropy, the reason collisions never happen in practice.
  • Hash Generator — the one-way functions that turn a password into what a site actually stores.
  • All the generators — passwords, UUIDs, hashes, QR codes and more, all in the browser.
Share this X Facebook Reddit

Common Questions

What is password entropy and how is it calculated?

Entropy measures how unpredictable a randomly generated password is, in bits. The formula is length × log2(pool size), where the pool is how many different characters could appear at each position. With all four character types the LK Forge generator uses an 88-character pool, so a 16-character password has 16 × log2(88) = 103.4 bits. Each extra bit doubles the number of guesses an attacker needs, so entropy is the single number that decides how hard a password is to crack.

How long does it take to crack an 8-character password?

A random 8-character password using uppercase, lowercase, digits and symbols has about 51.7 bits of entropy. Against a fast offline attack — a GPU rig guessing roughly a trillion times a second against an unsalted or fast hash — that falls in about 30 minutes. Eight characters is no longer enough, even with every character type switched on. A 12-character password of the same type has 77.5 bits and would take thousands of years.

Is a longer password or a more complex one better?

Length wins. Adding a character type multiplies the pool once; adding characters multiplies the difficulty again for every position. A 11-character password using only lowercase letters already has more entropy than an 8-character password that uses uppercase, lowercase, digits and symbols. The practical advice: prioritise length, then turn on as many character types as you can.

How many characters should a strong password be?

Using all four character types (an 88-character pool), you cross 40 bits at 7 characters, 60 bits at 10, and 80 bits — comfortably "very strong" — at 13. Aim for 16 or more for anything important; that is 103.4 bits, which no realistic offline attack can exhaust. And always use a password that was randomly generated, not one you invented — human-chosen passwords have far less entropy than the formula assumes.