Q: Why is Math.random() not safe for passwords?
Math.random()uses a PRNG (typically xorshift128+ in V8) designed for speed, not unpredictability. The output is statistically uniform but its internal state can be recovered by observing a few outputs, after which all future and past outputs are deterministic. The Web Crypto API's crypto.getRandomValues() sources from the OS entropy pool (/dev/urandom, BCryptGenRandom), which is designed to be unpredictable even to a determined attacker.
Q: How long does a 16-character password actually last against brute force?
Against a modern offline GPU rig hashing SHA-256 at ~100 GH/s, a 16-char password from a 94-symbol pool (104 bits) takes longer than the heat death of the sun. Against bcrypt with cost 12 (~100 hashes/sec), the same password is unbreakable in any realistic timeframe. The variable is the hashing algorithm on the server side, not the password — which is why reused passwords are far more dangerous than "weak" ones.
Q: Should I rotate passwords every 90 days?
No. NIST SP 800-63B explicitly recommends against scheduled rotation because it leads users to pick weaker passwords with predictable increments (Password1 → Password2). Rotate only when you have evidence of compromise: a breach notification, a haveibeenpwned hit, or a suspicious login. Otherwise, use a long unique password per service and a password manager and leave them alone.
Q: My bank requires exactly 8-12 characters and no symbols — what do I do?
Use the maximum length allowed and the largest character set permitted, enable 2FA (preferably hardware key or TOTP, not SMS), and pressure the bank to fix their policy — it's 2026 and that requirement suggests they truncate or insecurely store passwords. In the meantime, store the password in a manager so a leak there doesn't cascade, and watch for unusual activity.
Q: Is "Exclude similar characters" weakening my password?
Slightly — you're shrinking the character pool from 94 to ~88, which costs about 0.1 bit of entropy per character. For a 16-char password, that's ~1.5 bits less, which is irrelevant in practice. Enable it whenever a human has to read the password aloud or type it on an unfamiliar keyboard.
Q: Are passkeys going to replace passwords?
For most consumer accounts, yes. Passkeys (WebAuthn) are tied to a device-stored key pair, sync via Apple/Google/Microsoft, and resist phishing because the browser only signs for the legitimate domain. Use passkeys wherever offered, but keep generating strong passwords for the long tail of services that don't support WebAuthn yet — and for recovery flows when you lose your devices.