Generate strong passwords with a real entropy-based strength meter.
Generate passwords using crypto.getRandomValues (never Math.random), with controls for length, character sets, and ambiguous-character exclusion. The strength meter computes actual bits of entropy from your chosen character pool and length rather than showing a cosmetic bar.
Every character in a generated password comes from crypto.getRandomValues, the Web Crypto API's cryptographically secure random number source — never Math.random, which is fast but explicitly not designed to be unpredictable and should never back anything security-related.
Character selection also avoids modulo bias: naively mapping a random 32-bit integer onto a character pool with `% poolSize` slightly favors some characters over others whenever the pool size doesn't divide evenly into 2^32. This tool uses rejection sampling instead, discarding the rare out-of-range values so every character in the pool has an exactly equal chance of being picked.
The strength meter is a real calculation, not a cosmetic bar: entropy in bits is log2(pool size) × length, the standard formula for the information content of a string drawn uniformly at random from a fixed alphabet. A 20-character password from a 94-character pool (lower + upper + numbers + symbols) works out to about 131 bits — astronomically harder to brute-force than the same length using digits alone (roughly 66 bits).