Strong passwords, made on your device

Random passwords and passphrases from your browser's own secure random generator. They're never saved and never sent anywhere. No signup.

Make a password

0 bits

Time to guess:

Assumes an offline attack trying 100 billion guesses a second, by someone who knows exactly how this page makes passwords. On average they'd find it after trying half of all the possibilities.

8 to 128 characters. 16 or more is a good habit, 20 is our default.

Characters to use

Check a password you already have

This is a rough estimate. It runs only in this tab: what you type here is never sent anywhere and never saved. Even so, a good habit is to test a similar made-up password rather than one you really use.

How your passwords stay private

  • Made in this tabYour browser's secure random generator (crypto.getRandomValues) picks every character and word. No server is involved, so we have nothing to log.
  • Never savedPasswords aren't written to storage, cookies or the address bar. Close the tab and they're gone. Only your settings, like length, are remembered on this device.
  • Sending is blockedThe page's security policy sets connect-src 'none', so your browser won't let this page send anything anywhere, even if we wanted it to.
  • No analytics or cookiesNo tracking scripts, no ads, no account. Cloudflare, our host, keeps standard access logs like any web host. Your passwords can't be in them, because they never leave the tab.

Read every line on GitHub. Passphrase words come from the EFF's long wordlist (CC BY 3.0), served from this domain.

Questions

What do the "bits" mean?

They count how many different passwords your settings could have made, all equally likely. Each extra bit doubles that number. 20 characters picked from all 94 letters, digits and symbols is 131.1 bits. Each passphrase word adds about 12.9 bits, so 5 words is 64.6. We work it out from your settings, not from the password you got, so it already assumes the attacker knows exactly how this page works. "At least one of each kind" rules out a few passwords, so it scores slightly lower, and we count that exactly.

Where does the "time to guess" come from?

It's half the possibilities divided by 100 billion guesses a second. That's roughly a rig of high-end graphics cards attacking a stolen database that used a fast hash. Sites that store passwords properly (bcrypt, Argon2) slow attackers down by thousands of times or more, and a login page that limits tries is far slower still. Treat the number as a ballpark, not a promise.

Should I use a password or a passphrase?

If a password manager fills it in for you, use a random password: it packs the most strength into the fewest characters. For things you type yourself, like your computer login or your password manager's main password, a passphrase of 6 or more words is easier to remember and type, and just as hard to guess.

Is it really random?

Yes. Every pick comes from crypto.getRandomValues, the same source browsers use for encryption keys. We also avoid a common mistake that makes some characters a tiny bit more likely than others ("modulo bias"). The page never uses Math.random, and the test in our repo makes thousands of passwords and checks every character shows up as often as chance predicts.

A site won't accept my password. What now?

Some sites limit length or refuse certain symbols. Lower the length or turn off symbols and make a new one. The strength number updates as you change settings, so you can see what each change costs. "Avoid look-alikes" helps if you ever have to read a password out or type it from paper.

Does the checker send my password anywhere?

No. It runs in this tab, nothing you type is saved, and the page's security policy blocks it from sending anything. It's a rough check built from simple rules, not the huge lists real attackers use, so it can rate a weak password too kindly. It can't know whether a password has already leaked in a breach.

More free tools, same rules