A character pool is built from your selected types: uppercase, lowercase, numbers, and symbols.
For each position, a truly random index is picked from the pool using Math.random() — unpredictable by design.
Length matters: a 16-char password with 4 types has ~10²⁸ combinations — brute-forcing takes millennia!
Excluding similar characters (l/1/I/O/0) prevents confusion when reading or typing passwords manually.
Everything runs in your browser — no password is ever sent to a server. Your secrets stay yours!