Generate a strong password

A new password is made the moment this page loads, by your own browser. Change any setting and another appears immediately, as a string of characters or as a phrase of real words.

How to use it#

  1. Choose characters for something a password manager will hold, or words for something you have to type.
  2. Set the length, or the number of words. Longer buys far more than any other choice here.
  3. Pick which kinds of character to draw from, or how the words should be joined.
  4. Copy it, or press Generate another for a different one.

Length beats complexity, and it is not close#

The instinct is to reach for symbols, but every character you add multiplies the number of possibilities by the size of the pool. Going from twelve characters to sixteen with lowercase and digits alone adds about twenty bits of strength. Adding symbols to a twelve-character password adds about four.

That is why the strength figure on this page is in bits rather than a word like strong. A bit is a doubling: sixty bits means roughly a billion billion possibilities, and each extra bit doubles it again. Watch the number as you drag the length slider and the trade becomes obvious.

The rule that a password must contain an uppercase, a number and a symbol comes from an era of eight-character limits, and it mostly produced Password1! on repeat. If a site lets you use thirty characters, use them.

Where the randomness comes from#

The characters are chosen with getRandomValues, the browser interface backed by your operating system entropy pool. It is the same source a password manager draws on, and it is designed so that seeing some output tells an attacker nothing about the rest.

There is no fallback to the ordinary random number generator built into JavaScript. That one is fast and predictable, and a password built from it can be reconstructed by someone who knows the trick. This page promises cryptographic randomness, so a browser that cannot supply it gets an error rather than something quietly weaker.

The selection is also unbiased. Picking a character by taking a random number modulo the pool size very slightly favours the earliest characters, because the range does not divide evenly. This draws again when a number falls in that uneven tail, which costs nothing and removes the skew.

A phrase of words, when a person has to type it#

A random string is the right answer when a password manager holds it and nothing human ever reads it. The moment somebody has to type it into a television, read it down a phone or remember it for a fortnight, it is the wrong shape, and what people do instead is pick something weak they can hold in their head.

Words fix that without giving up much. Each word here is drawn from a list of 918, which is a little under ten bits, so five words is around 49 bits and seven is about 69. That is weaker per character than a random string, and it is far stronger than anything a person invents unaided, because the choosing is done by the machine rather than by a mind that likes birthdays.

Capitalising the words and joining them with hyphens makes a phrase easier to read back, and adds nothing to its strength, so the figure on this page ignores both. An attacker is assumed to know the shape; only the choice of words is secret.

Nothing here is stored or sent#

The password is generated in the page and exists only in this tab. There is no request, no log and no history, which you can confirm by disconnecting from the network and pressing Generate another. Closing the tab is the end of it, so copy what you need first.

That matters more for this tool than for anything else on the site. A password generated on a page you do not control is a password that has, at minimum, existed on somebody else machine.

Frequently asked questions#

Is the password sent anywhere?

#

No. It is generated by your own browser and never transmitted. Disconnect from the network and the tool keeps producing passwords, which is the simplest way to check.

What do the bits mean?

#

Bits of entropy are how many times the possibilities double. Sixty bits is roughly a billion billion options. Under 40 is guessable offline by anyone motivated, 60 to 80 is strong, and past 80 brute force is not the way anyone gets in.

How long should a password be?

#

Twenty characters is a good default and costs you nothing when a password manager is doing the typing. Length is worth far more than symbols: four extra characters buys more strength than adding punctuation to a short one.

What does skipping lookalikes do?

#

It removes the characters people misread or mistype: capital I, lowercase l, the digit 1, capital O, lowercase o, the digit 0 and the pipe. Worth it when you will read the password off a screen or a printout, or dictate it. Unnecessary when you are copying and pasting, since it slightly shrinks the pool and so the strength.

Should I use words instead of characters?

#

Use words when a person has to type or remember the password, and characters when a password manager will do it. Five words from this list is about as strong as a ten-character random password, and far easier to read off a screen. The trade is length: a phrase strong enough to matter runs to about thirty characters, which some sites will not accept.

Is it really random, or is it seeded from the time?

#

It comes from getRandomValues, which draws on the operating system entropy pool rather than the clock. Nothing on this page seeds from the time, and no password is derived from another.