Work · Product ยท Password security

Untypeable

A multi-script password generator and zero-knowledge vault: passwords drawn from world scripts instead of the 94 characters on a keyboard.

Role Founder, architect and builder (Agile Tech Solutions)When 2025โ€“2026
Untypeable
~225 bitsestimated entropy of a 24-character default password (conservative)
600,000PBKDF2-SHA256 iterations before a vault key exists
5 charsof a SHA-1 hash: all that leaves the device for a breach check
0passwords or vault keys ever sent to the server

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 generator: entropy, script mix, and the safety switches (confusables, bidi filtering, NFC, ASCII fallback).

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.

The CPU-only AI engine: embeddings, language ID and a policy classifier, served from ONNX.

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.

The research page and paper behind the design.
Building something that has to be secure by design?
I help teams get identity, secrets and AI access right from day one.
How I work with teams →