Inspired by LastPass options: easy-to-read, easy-to-say, character sets, exclude similar/ambiguous, and “require all types”.
!@#$%^&*_-+=?~
O0 o0 l1 I S5 B8 z2
{ } [ ] ( ) / \ ' " ` ~ , ; : . < >
This page runs fully in your browser—no data leaves your device.
Dev note: You can embed this as a standalone HTML file or drop the core generatePassword() function into your own codebase.