Strong Password Generator

Cryptographically random passwords and passphrases, generated in your browser and never transmitted anywhere.

Length — 16 characters

Runs entirely in your browser. Nothing you type here is uploaded, stored or logged.

What actually makes a password strong

Two things: how many characters it could have been, and how many it is. Everything else — the exclamation mark on the end, the “o” replaced with a zero — adds far less than people assume, because attackers' cracking rules account for those substitutions.

A 16-character random password from the full 94-character printable set has about 10³¹ possibilities. At 100 billion guesses per second, exhausting that takes longer than the universe has existed. An eight-character one from the same set falls in hours.

The rules that made passwords worse

The advice to force uppercase, a digit and a symbol, and to change passwords every 90 days, came from a 2003 US government document whose author has since publicly apologised for it. In practice it produced Password1! followed by Password2! — predictable to any attacker and irritating to everyone else.

Current NIST guidance says the opposite: favour length, allow all characters including spaces, check new passwords against known breach lists, and stop forcing periodic changes unless there is evidence of compromise.

Random string or passphrase?

Use a random string for anything your password manager will fill in. You will never type it, so there is no cost to it being unmemorable.

Use a passphrase for the handful you must type by hand: your password manager's master password, your device login, your Wi-Fi key, anything you'll enter on a games console or TV. Four random words are strong and can be typed without swearing.

Reuse is the real vulnerability

Most account compromises do not involve cracking anything. An attacker takes a username and password from one breached site and tries the pair everywhere else. This is called credential stuffing, and it works because most people reuse passwords.

A unique password per site contains the damage to one account. That is impossible to do from memory, which is precisely what password managers are for — generate long random strings for every site and remember only the master passphrase.

Do these things in order

  1. Turn on two-factor authentication for email, banking and your password manager. An app-based code or a hardware key beats SMS.
  2. Secure your email first. It can reset everything else, so it is the master key whether you think of it that way or not.
  3. Use a password manager. Any reputable one. The one you actually use beats the theoretically superior one you don't.
  4. Check your addresses against a breach-notification service and change anything that appears.
  5. Stop rotating passwords on a schedule. Change them when there is a reason to.

Frequently asked questions

Are these passwords actually random?

Yes. They use crypto.getRandomValues(), the browser's cryptographically secure random number generator — the same source used for encryption keys. Characters are selected with rejection sampling so that no character is more likely than any other, which naive modulo approaches get subtly wrong.

Does the password leave my device?

No. Generation happens entirely in your browser. Nothing is transmitted, stored, or written to disk. You can confirm this by opening the page, disconnecting from the internet, and generating — it still works.

How long should a password be?

Sixteen characters of mixed random characters is comfortably beyond brute-force reach with current and foreseeable hardware. Twelve is the practical minimum. Below ten, length is no longer the thing protecting you.

Is a passphrase better than a random string?

For anything you have to type from memory or read aloud, yes. Four random words from a large list carry similar strength to a twelve-character random string and are far easier to remember and type on a TV remote. For passwords stored in a manager, the random string is fine — you will never type it.

What does the crack-time estimate assume?

An offline attack at 100 billion guesses per second against a fast hash, which reflects a well-funded attacker with GPUs. It also assumes the attacker knows your character set and length. Real services that hash properly with bcrypt or Argon2 are far slower to attack, so the estimate is deliberately pessimistic.