Passwords

Secure password generator

There is already a password waiting below: it was generated when the page opened, in your browser, and it has been nowhere else. Adjust whatever you like and see how many bits it really holds.

Never sent · never stored

Your password never leaves this tab. It travels to no server, leaves nothing in history, and reloading the page wipes it.

The obvious objection: why trust an online generator?

It is the right question, and it should be put to any site that offers you a password. If the password is generated on their server, that site has seen your password, and you have no way of knowing what became of it. Here the password is generated in your browser with crypto.getRandomValues, the randomness the browser reserves for cryptography. No request carries it anywhere, nothing is stored, and reloading the page wipes it.

You don't have to take my word for it: load the page, turn off your wifi, and keep generating passwords. It works exactly the same, because there is nothing on the other end.

How it works

  1. It is already generated

    Opening the page hands you a 20-character password ready to copy. No clicks, no waiting, no sign-up.

  2. Adjust it if you need to

    Length, which character types are in, whether to drop the ones that get confused. The bit meter recalculates instantly.

  3. Copy it into your manager

    Or switch to the passphrase tab if this is a password you will be typing by hand every day.

Why length matters more than complexity

This is the most useful idea on the page, and it runs against what registration forms have been telling us for twenty years. Every character you add multiplies the possible combinations; adding odd symbols only changes the number you multiply by. Multiplying more times beats multiplying by a slightly larger number, every time.

Using this very tool's numbers:

  • 8 characters with uppercase, lowercase, numbers and symbols: 50.7 bits. Against an attacker with the database stolen and a fast hash, it falls in about 16 minutes.
  • 16 characters of lowercase only: 75.2 bits. The same attacker needs about 691 years.

The second is easier to type, easier to read out over the phone, and roughly twenty-four million times more expensive to break. That is why modern guidance — including the US NIST guidelines since 2017 — asks for length and has dropped the mandatory symbol soup: all it ever achieved was people writing “Password1!” and reusing it everywhere.

What the bits mean, and why requiring symbols lowers them

Entropy in bits is the base-two logarithm of how many different passwords could have come out of your settings. Each bit doubles that number and doubles the attack time. It is the only sensible way to compare two passwords — far better than a weak/medium/strong traffic light with no numbers behind it.

And here is a detail almost no site accounts for: ticking “at least one of every type” reduces the entropy. Requiring it discards every password that fails the condition, so fewer remain possible. It is not much — 1.06 bits on an 8-character password, 0.14 on a 20-character one — but it is real, and this tool computes the deduction exactly instead of ignoring it. That is why the number moves when you tick the box.

It also changes how generation works. The usual approach elsewhere is to force a digit and a symbol into place and then shuffle; it looks equivalent and is not, because it reserves slots for small sets and makes digits come up far more often than their share. Here a password is generated and, if a type is missing, the whole password is discarded and another is made. That way every valid password is equally likely, which is the condition for the bit figure to be real rather than decorative.

The crack time, with the assumption in plain sight

Any “it would take X years” figure depends entirely on how fast you assume the attacker guesses, and that assumption moves the answer by nine orders of magnitude. A site handing you a number without saying where it came from is handing you a made-up number.

Here you choose the scenario and each one shows its speed. The same 60-bit password:

  • From outside, against a service without real rate limiting (1,000 per second): about 18 million years.
  • With the database stolen and the site storing passwords properly with bcrypt (50,000 per second): about 365,000 years.
  • With the database stolen and a fast SHA-256 hash, eight graphics cards (a hundred billion per second): about 67 days.
  • With the database stolen and unsalted MD5, the realistic worst case (a trillion per second): about 7 days.

The sum is 2^(bits−1) ÷ guesses per second. One bit comes off because on average you hit it halfway through. You can redo it on a calculator, which is rather the point. And notice what that table says: your password can be excellent and still fall in a week if the site stores passwords badly. That part is not in your hands — which is exactly why you should not reuse them.

Passphrases: what is actually recommended

A passphrase is several words picked at random from a list and joined by a separator. Something like anchor-kettle-brisk-market. It is far easier to remember than a string of symbols and holds up just as well or better, because the strength comes from the number of words and the size of the list, not from how strange it looks.

The list here holds 7,772 English words, so each word contributes 12.92 bits: five words give about 65 bits and six clear 77. The condition is that the computer picks them. If you pick them yourself they are not random: people choose related words from the same field, and that sinks the real entropy far below what it looks like.

The list is filtered to 3–9 letter ASCII words so the phrase types cleanly on any keyboard and any form accepts it. The bits are computed from the real length of that filtered list, not from the original: inflating the figure there would be the same trick we criticise in crack-time estimates.

For setting up a lot of accounts

The third tab generates up to 500 passwords at once and downloads them as plain text or as CSV with a number column and a password column. It suits onboarding users, preparing credentials for a course, or filling a test environment. They are generated in your browser like all the others, and the file goes straight to your downloads folder.

Two pieces of advice worth more than the feature itself: delete that file as soon as the accounts exist, and make people change the password at first sign-in. A file of plaintext passwords should not outlive the day it was used.

And a warning about the other end: an ordinary hash is not good enough for storing those passwords in your database. A plain SHA-256 is computed billions of times per second on a graphics card; you need slow, salted algorithms such as bcrypt or Argon2. The hash generator explains it in detail, and doubles as an HMAC signer for requests.

Frequently asked questions

Is the password really never sent anywhere?

No, it is not. It is generated with crypto.getRandomValues inside your browser and no request carries it anywhere. It is not stored either: reload and the previous one is gone.

You don't have to take my word for it: load the page, turn off your wifi and keep generating. It works the same, because there is nothing on the other end.

Why does length matter more than adding odd symbols?

Because every character you add multiplies the combinations, whereas widening the alphabet only changes the number you multiply by.

8 characters with everything: 50.7 bits, about 16 minutes against a fast-hash attack. 16 characters of lowercase: 75.2 bits, about 691 years. And the second types better.

Where does the crack time come from?

From 2^(bits−1) ÷ guesses per second. One bit comes off because on average you hit it halfway through.

You choose the speed from four scenarios and each shows its figure. A site quoting “three billion years” without saying what speed it assumes is not telling you anything.

What is a passphrase and why do experts recommend them?

Several random words joined by a separator: anchor-kettle-brisk-market. Easier to remember than a string of symbols and just as strong or stronger.

With the 7,772-word list here, each word contributes 12.92 bits: five give about 65. The condition is that the computer picks them: if you pick them, they are not random.

Do I need a password manager?

If you have more than a handful of accounts, yes. A good password is long and random, and therefore impossible to memorise; across fifty accounts, no head can cope.

A manager keeps them encrypted and fills them in, so you remember one: the manager's. And that is exactly where a passphrase shines, since you type it daily. There are free and open-source ones; nothing is sold here.

Why can't I reuse the same password?

Because the day one of those sites is breached — and it happens constantly — attackers automatically try that password on every major service. It is called credential stuffing, and it pays because nothing has to be cracked: they already have it.

However strong it is, if it is reused the strength counts for nothing. A different one per site turns a breach into a single-account problem.

What does entropy in bits mean?

The base-two logarithm of how many passwords could have come out of those settings. Each bit doubles that number and doubles the attack time.

A detail almost nobody accounts for: requiring “at least one number and one symbol” discards combinations, so the real entropy drops slightly. Here that deduction is exact, which is why the number moves when you tick the box.

Can I generate many at once to set up user accounts?

Yes, up to 500, downloadable as text or CSV with a number column and a password column. Generated in your browser like the rest.

Delete the file as soon as the accounts exist and make people change the password at first sign-in.

What if my browser is very old?

If it lacks crypto.getRandomValues, the tool says so and generates nothing. We do not fall back to Math.random: it is predictable and a password out of it is worthless. Better to give you no password than a bad one dressed up as a good one.

Related guide

Related tools