The problem
Almost every password in the world is built from the same 94 printable ASCII characters. That alphabet is exactly what GPU cracking rigs, wordlists and keyboard loggers are optimised for. Length helps, but a long ASCII password is still something a person can see over your shoulder, a hardware keylogger can record, and a rule-based cracker can model.
I wanted to test a different question: what if the password couldn't be typed at all?
The idea
Untypeable generates passwords from several writing systems at once (Latin, Greek, Cyrillic, Arabic, Han, symbols and optionally emoji) so each character is drawn from a far larger pool. A 24-character default password comes out at roughly 225 bits of entropy, against about 157 bits for 24 random ASCII characters.
Entropy isn't the real point, though: beyond about 128 bits a password is already out of reach of brute force. The practical gains are elsewhere. The result appears in no wordlist, it is pasted rather than typed, so a hardware keylogger never sees it, and it is very hard for anyone watching to memorise.
How it's built
Generation happens entirely in the browser with the Web Crypto random generator, and the entropy figure is deliberately conservative: it doesn't credit the shuffle or the guarantee that every chosen script appears. The generator excludes confusable look-alike characters, filters bidirectional and control characters that could hide what a password really is, normalises to Unicode NFC so copy and paste behave, and offers an ASCII-safe fallback for the many sites that still reject anything else. Enter a target domain and it adapts to that site's known rules.
The vault is zero-knowledge. Your passphrase is stretched with PBKDF2-SHA256 over 600,000 iterations (the OWASP 2023 figure) with a random salt, and every entry is encrypted with AES-256-GCM before it leaves the browser. The server only ever stores ciphertext; account passwords are hashed with Argon2id, and passkeys (WebAuthn) are supported for sign-in.
The breach check never sends the password: the browser hashes it and sends only the first five characters of the SHA-1 hash, then matches the rest locally (k-anonymity, the same model Have I Been Pwned uses).

The AI engine
A small, CPU-only AI service runs next to the app: MiniLM embeddings, a language-identification model and a DistilBERT policy classifier, all exported to ONNX so they run in milliseconds without a GPU. It scores composition and flags weak patterns in the developer console. It is deliberately separate from the vault: the password inspector on the home page works on-device, and the AI console says clearly that what you type there is sent for analysis.

Where it doesn't fit
Honesty matters more than hype in security, so here are the limits. Plenty of websites still reject or mangle non-ASCII passwords, which is why the ASCII-safe mode exists. You can't type an Untypeable password on a new device from memory, so it only makes sense alongside a password manager, and account recovery needs thought. It does nothing against phishing (a page that tricks you into pasting it gets it, which is why passkeys are the better answer where a site supports them) or against malware that reads your clipboard. And a strong password on a reused or breached account is still a problem: uniqueness matters more than exotic characters.
What I took from it
The work that mattered most wasn't the unusual alphabet; it was the unglamorous engineering around it: Unicode normalisation, confusable filtering, conservative maths, and making sure nothing sensitive ever reaches the server. That's the same discipline I bring to identity work: design so that the system is safe even when the clever part doesn't apply.
