Generates passwords, JWT signing secrets and AES keys with crypto.getRandomValues. CSS, JS and translations are inlined at build time, so once the page loads it makes no network requests at all. Open the Network tab and watch it stay empty. 7 languages.
Fin Startups get Fin free for a year + 93% off Intercom
Promoted
Maker
📌
Every few weeks I need a signing secret for something, and every few weeks I end up on a page that either generates it server-side or loads eleven third-party scripts before it will show me 32 random bytes. For a page whose whole job is handing you a secret, both of those are the wrong answer.
This is the version I wanted to exist.
The page makes no network requests. CSS, JavaScript, translations and the favicon are all inlined into the HTML at build time, so once it loads, nothing else is fetched — no font, no beacon, no image. Open DevTools before you click generate and watch the Network tab stay empty. Everything else here depends on that being true, so please check it instead of believing me.
The randomness is done the boring correct way. crypto.getRandomValues, never Math.random.Characters come out by rejection sampling rather than modulo, because taking a random byte mod the alphabet size quietly biases the first few characters and nothing in your tests will ever catch it. Ask for a guaranteed digit or symbol and it gets placed first, then the whole string is shuffled, so the guarantee doesn't sit in a predictable slot.
The strength readout is entropy in bits, and the crack time next to it assumes the pessimistic case: someone already has the password database and is grinding it offline at 100 billion guesses per second against a fast hash. It reports the average, half the keyspace.
Three generators for now — passwords, JWT secrets in HS256/384/512, AES keys in 128/192/256, each with hex and Base64 output. Seven languages, and each language is a real page at its own URL rather than a switcher that swaps strings in place. It is not a password manager and not a vault. Nothing is stored, nothing syncs, and closing the tab destroys the value. That is the design rather than a gap in it. Ask me anything about how it works. And if you catch it making a request I missed, I want to know about that more than I want the upvote.
Gallery captions