Password generator

SecurityGenerate strong random passwords in your browser using your device's own cryptographic randomness. Nothing is sent, stored or logged; there is no server involved.

Your passwords are created on this device and never leave it. Nothing you open is ever uploaded. There is no server to upload it to.

What this does

Every click produces a fresh random password, built on your own device from your browser’s cryptographic random number generator. Choose the length and which character types to draw from, and the tool shows the exact strength of what it made, measured in bits of entropy rather than a coloured bar.

Nothing you generate here is sent, stored or logged. There is no server-side generation, no history, and no way for anyone, including this site, to see what was made. The FAQ below explains how to verify that claim in your own browser rather than take it on trust.

How to use it

  1. Set the length. The default of 20 is right for anything a password manager will remember for you.
  2. Tick the character types the account accepts. All four stay on unless a site refuses symbols.
  3. Generate until you see one you are happy with, then copy it. Each press is a completely independent draw.
  4. Paste it into your password manager first, then into the sign-up form.

Where the randomness comes from

The difference between a password generator worth using and one that is theatre is a single decision: where the randomness comes from.

This tool draws every character from crypto.getRandomValues, the browser’s cryptographically secure generator, which is seeded by the operating system from hardware noise. It never touches Math.random, which exists for shuffling animations, not secrets: its internal state can be reconstructed from a handful of outputs, at which point every “random” password it ever produced becomes predictable.

There is a second, subtler mistake this tool avoids. The natural way to turn a random number into a character is value % alphabet_size, and it is quietly biased: 2³² raw values cannot divide evenly into 94 characters, so the first few characters of the alphabet come up fractionally more often than the rest. The fix costs one line: values landing in the uneven remainder are thrown away and redrawn. This is called rejection sampling, it is what operating systems do internally for the same reason, and it is what makes every character here an exactly even draw.

The same principle applies to the “at least one of every type” option. The common shortcut is to generate freely and then swap a random position for a digit, which stamps detectable structure into the result. This tool instead regenerates the whole password until one naturally contains every required type, which keeps every acceptable password exactly equally likely.

What the entropy number means

Entropy measures how many guesses an attacker needs, expressed as a power of two: 131 bits means 2¹³¹ possibilities, and on average an attacker must try half of them before hitting yours. Each additional bit doubles the work.

The readout is computed honestly. Requiring one of every character type slightly shrinks the space of possible passwords, so the number shown is calculated over the passwords this tool can actually produce, not from the textbook formula that ignores the constraint. The difference is a fraction of a bit, and a security page that rounds in its own favour has told you something about itself.

The crack-time line beneath it assumes an attacker who has stolen a password database stored with a fast hash and guesses at a trillion per second. That is not a nation state: a single consumer graphics card benchmarks at around three hundred billion guesses per second against Windows NTLM hashes, so a trillion is four cards in one machine. The assumption errs on the attacker’s side deliberately. In the other direction, a site that stores passwords with a properly slow hash such as bcrypt cuts that rate by a factor of around a million, and an online login form, which allows a few attempts per second at best, makes every time shown a wild underestimate of your safety margin.

Limitations

A perfect password does not survive reuse. The overwhelmingly common way passwords are broken is not guessing but leakage: one site is breached and the password is tried everywhere else. Generate a different one per account and let a password manager do the remembering.

Your clipboard is out of scope. Copying puts the password wherever your clipboard goes, which on some systems includes sync to other devices and clipboard history. Paste it where it is needed, then copy something harmless over it if that concerns you.

Randomness cannot fix a weak recovery path. If the account can be reset through a guessable security question or an email address with a poor password, the strong password guards a side door. Secure the recovery route to the same standard.

Frequently asked questions

Is it safe to generate a password in a browser?

In this tool, yes, and you can check rather than trust. The password is produced by your browser's built-in cryptographic generator and never transmitted. Open your browser's network panel (F12) while generating and you will see that no request carries it anywhere. It exists in this tab and on your clipboard if you copy it, and nowhere else.

Can you see the passwords I generate?

No. Generation happens on your device, this site has no analytics, and the page makes no network request containing the password. There is nothing on our side to see, store or leak.

Why not use a memorable word with numbers swapped in?

Because attackers guess the way people think. Cracking software tries dictionary words with common substitutions first, so Pa55w0rd! falls in seconds despite ticking every complexity box. Random characters have no pattern to exploit; the only attack left is trying everything.

How long should a password be?

For anything protected by a password manager, 20 characters or more, since you never type it. For one you must type regularly, 16 random characters is still far beyond practical cracking. Length beats cleverness: each added character multiplies the search space by the whole alphabet.

Why do online strength checkers give different answers for these?

Because a string does not have a strength; the process that made it does. A checker only sees the string, so it guesses how it might have been made, pattern-matching against dictionaries, dates and keyboard walks, and every product ships different patterns, scoring scales and caps. Most then convert to a crack time using an assumed attacker speed nobody standardises, from throttled login forms to GPU rigs, so identical maths can print anything from days to centuries. The number on this page is exact because the page is the process: every password is drawn uniformly from a space of known size. The one thing a good checker can do that this arithmetic cannot is spot a human-invented password that only looks random.

Should I exclude the look-alike characters?

Only if you will read the password off one screen and type it into another, where confusing 0 with O costs real time. It slightly reduces strength, since six characters leave the alphabet, and the entropy readout updates honestly when you tick it.