How to Choose a Password Generator You Can Actually Trust
Not all password generators are secure. Some use predictable randomness. Others send your passwords to a server. Here is how to evaluate one.
Randomness quality
A password generator is one of the simplest tools on the surface. You click a button, and you get a random string. But underneath, the differences between a trustworthy generator and a dangerous one are massive. The two critical factors are randomness quality and data privacy.
Randomness quality determines whether an attacker can predict future passwords by observing past ones. Most programming language random functions, including Math.random() in JavaScript, are pseudo-random number generators. They produce sequences that look random but are entirely deterministic given the initial seed. If an attacker knows or can guess the seed, they can reproduce every password your generator ever created.
A trustworthy password generator uses a cryptographically secure random number generator. In the browser, the correct API is crypto.getRandomValues(). This function produces random bytes from the operating system's entropy pool, which is fed by hardware noise, timing jitter, and other unpredictable physical processes. The sequence is not deterministic and cannot be reproduced by an attacker.
Privacy: where your password goes
Many online password generators are server-side applications. When you click Generate, the password is created on a remote server and sent back to you over HTTPS. The problem is that the server has already seen your password. It may not store it, but you have no way to verify that.
A truly private generator creates the password locally in your browser and never transmits it anywhere.
Features that matter
Look for these capabilities in a good password generator:
- Customizable length: at least 12 characters, ideally 20+
- Character set selection: uppercase, lowercase, numbers, symbols
- Entropy estimate: shows how strong the generated password is
- Client-side operation: no network requests when generating
Red flags to avoid
- Requires an account to use the tool
- Displays ads alongside password generation
- Limits the number of passwords you can generate
- Stores password history
- Uses Math.random() instead of crypto.getRandomValues()
The complete workflow
The DevUtils Password Generator uses crypto.getRandomValues, generates passwords entirely in your browser, and shows a strength estimate for every generated password. It does not send data to any server. It does not store history. It does not require an account.
If you want to verify that a password is actually strong, paste it into the DevUtils Password Strength Checker. It gives you a scientific zxcvbn score, an estimated crack time, and suggestions for improvement. Together, these two tools cover the full lifecycle: generate a strong password, then verify that it is actually strong.