What is here
A set of tools built around randomness: a password generator with five modes, Diceware passphrases, PIN codes, pattern-based generation, a dedicated page for Wi-Fi keys, bulk generation of up to a thousand passwords and an analyser for a password you already use. Plus a random number generator, included as a template showing how new tools are added.
How generation works
Randomness comes from crypto.getRandomValues, the operating system cryptographic generator exposed to the browser. Plain Math.random() is used nowhere: it is fast but predictable.
A random 32-bit number has to be mapped onto the alphabet. A naive modulo introduces bias: if the alphabet does not divide the range evenly, the first characters come up more often. We use rejection sampling — values in the incomplete tail are discarded and new ones drawn — so the characters end up equally likely.
What happens to your data
Passwords never reach the server: all the work is JavaScript in your tab. The list of recent passwords lives in tab memory and disappears with it. The site stores one value in browser storage — your chosen colour theme. What is collected on the server side and which analytics are used is described in the privacy policy.
The only outbound request the page makes is the word list used by passphrases and by the checker. It is identical for everyone and does not depend on what you typed. Once the page has loaded you can disconnect from the internet and keep generating.
What is deliberately missing
- Sign-up, accounts and sync — secrets do not belong on someone else’s server.
- Breach lookups: they require an outbound request, however safely it is designed.
- Ad networks and trackers on pages with input fields.
How to verify the claims
Open developer tools, switch to the Network tab and press generate: no new requests appear. Disconnect from the internet and generate again — everything keeps working. That is the check: a page that sent your passwords somewhere could not work offline.
Technical notes
The site is plain PHP with no framework, assembled from a registry of pages: menus, the showcase, breadcrumbs, structured data, hreflang links and the sitemap are all generated from it. The front end uses no external libraries, only its own modules. Pages weigh tens of kilobytes and open instantly even on a slow connection.