induwara.lk
induwara.lkSecurity · Generator

Password Generator — strong, random, with a live entropy meter

Generate a strong random password — or a memorable passphrase — and see exactly how much entropy it has. Crypto-secure (Web Crypto API), zero uploads, no signup, no ads. The strength meter follows NIST SP 800-63B so the bit counts match what a security audit would compute.

By Induwara AshinsanaUpdated May 11, 2026
Generate a passwordCrypto-secure, runs in your browser
Web Crypto · 2026
16
Quick set
Character sets
Your password
MK3k#HDT;*fsID11
Strength
Strong · 102.8 bits
Offline attack (10¹⁰ guesses/s)
28.4T years
Online attack (100 guesses/s)
longer than the age of the universe

Pool size: 86 unique characters across 16 positions = 102.82 bits (cross-checked: 102.8 bits).

Randomness from the browser's Web Crypto API (rejection sampling, no modulo bias). Strength bands follow NIST SP 800-63B. Crack-time assumes a fast-hash offline attack at ~10¹⁰ guesses/sec (current GPU benchmarks). Nothing leaves your browser.

How it works

A truly random password's strength is fully captured by one number: its Shannon entropy, in bits. For a password of length L drawn uniformly from a pool of N symbols, the entropy is H = L × log2(N). Each bit doubles the number of guesses an attacker must try, so a 60-bit password takes 2⁶⁰ ≈ 1.15 quintillion guesses in the worst case.

The generator builds the pool from the character sets you enable: 26 lowercase + 26 uppercase + 10 digits + 24 printable symbols = 86 distinct characters at its maximum. Toggling “Exclude ambiguous characters” removes the ten glyphs that look identical in many fonts (0/O/o, 1/l/I, 5/S, 2/Z). With every set on and ambiguous characters left in, a 16-character password reaches roughly 102 bits of entropy — well past the 60-bit threshold security audits treat as “strong.”

Selection uses the browser's Web Crypto API (crypto.getRandomValues) — the same primitive that seeds TLS keys. Indexing into the pool uses rejection sampling: random bytes that fall outside an evenly-divisible cutoff are discarded so the modulo result is exactly uniform. Without that step you get modulo bias — some characters become slightly more likely than others, which an attacker can exploit to prune the search space.

When “Include at least one of each set” is on, the generator pre-places one character from every enabled class, then fills the remaining positions from the full pool and shuffles. This satisfies sites with policies like “must contain a digit and a symbol” without measurably reducing entropy at typical lengths.

Passphrase mode picks 256 words at a time from a hand-curated list of 256 short English words. Each pick contributes exactly 8 bits, so a 6-word phrase carries 48 bits of entropy and a 10-word phrase carries 80 bits. The appended digit option adds a further log₂(10) ≈ 3.32 bits. The list is a reduced derivative of the EFF Diceware short wordlist (CC-BY 3.0), trimmed to a power of two so per-word entropy is an integer.

The crack-time figures use two industry-standard reference rates: 10¹⁰ guesses per second for an offline fast-hash attack (a single modern consumer GPU against MD5- or NTLM-class hashes) and 100 guesses per second for a rate-limited online attack against a well-configured server. For slow-hash schemes like bcrypt or Argon2, the real-world offline rate is millions of times lower than 10¹⁰, so the displayed offline time is a conservative ceiling.

Worked examples

Default settings (length 16, every character set enabled)

  1. Pool size N = 26 (lower) + 26 (upper) + 10 (digits) + 24 (symbols) = 86
  2. Length L = 16
  3. Entropy H = 16 × log₂(86) ≈ 16 × 6.426 ≈ 102.8 bits
  4. Offline (10¹⁰ g/s): 2¹⁰²·⁸ ≈ 9.6 × 10³⁰ guesses ≈ 2.8 × 10¹³ years
  5. Verdict: Strong (≥ 60 bits) — and well past the 80-bit master-password bar

Length 8, lowercase + digits (legacy short PIN-style)

  1. Pool size N = 26 + 10 = 36
  2. Length L = 8
  3. Entropy H = 8 × log₂(36) ≈ 8 × 5.170 ≈ 41.4 bits
  4. Offline (10¹⁰ g/s): 2⁴¹·⁴ ≈ 2.9 × 10¹² guesses ≈ 5 minutes
  5. Verdict: Fair — fine against online attack, weak against offline cracking

Passphrase: 6 words, capitalised, with separator and digit

  1. Wordlist size N = 256, bits-per-word = log₂(256) = 8
  2. Words = 6 → 6 × 8 = 48 bits
  3. Appended digit adds log₂(10) ≈ 3.32 bits → total ≈ 51.3 bits
  4. Offline (10¹⁰ g/s): 2⁵¹·³ ≈ 2.8 × 10¹⁵ guesses ≈ 3.2 days
  5. Bump to 10 words for 80+ bits if you need master-password strength

Frequently asked questions

Sources & references

The character sets, entropy formula, and crack-time references on this page were last cross-checked against the cited sources on 2026-05-11. The page is reviewed when NIST SP 800-63 or the Web Crypto API specification publishes a material change.

Related tools

Rate this tool
Be the first to rate

Comments & feedback

Spotted a bug or want an improvement? Tell us — our team reviews every comment, and good ideas get built. Comments are public and anonymous.

Found a bug, edge case, or want to suggest an improvement?

Email me at [email protected] — most fixes ship within 24 hours.