Free tool · runs in your browser

Password Generator

Generate a strong random password, a memorable passphrase, a PIN or a developer secret (hex, Base64, UUID, API key, JWT secret) in one click. Everything is made on your device with the Web Crypto API; nothing is sent, stored or logged, and you can copy the matching openssl, Python or Node command for the same value on the command line.

Generating…
Very strong · 129 bits of entropyTime to crack at 10 billion guesses/s: 1,394,416,756 trillion years
20 characters
Characters

Nothing leaves your device. Values come from crypto.getRandomValues with rejection sampling; no account, no cookies needed, no value in the URL or in analytics. Share a preset by copying the page URL after changing the options.

How to use it

  1. Pick a tab: Password (default), Passphrase, PIN or Developer. A value is already generated when the page opens.
  2. Set the options: length or word count, character sets, exclusions, separator, format. The value, the entropy in bits and the time to crack update at once; Regenerate makes a new one and Generate 10 makes a list.
  3. Click Copy, or copy the openssl / Python / Node command shown under the Developer tab to make the same kind of value on a server.

How strong should a password be?

A password should have at least 70 bits of entropy for anything that matters, and a random 16-character mix of letters, digits and symbols or a 5-word passphrase gets you past 100 bits. Entropy counts how many equally likely passwords the generator could have produced; each extra bit doubles that number and so doubles the work of an attacker who has to try them all.

Length beats variety. Adding one character to a lowercase-only password multiplies the search space by 26; switching from letters to the full keyboard multiplies it by less than 4. A 12-character all-lowercase password (56 bits) is weaker than a 14-character one (66 bits), whatever symbols the shorter one uses.

The time-to-crack shown by this tool assumes an offline attack at 10 billion guesses per second, the speed of a few modern GPUs against a fast hash. Online logins are rate-limited and far slower, so a 50-bit PIN-protected account is fine, while a password that protects a backup file or a password-manager vault should be 100 bits or more.

Entropy in bits by password length and character set
Character set8 chars12 chars16 chars20 chars
Digits only (0–9), 10 symbols27 bits40 bits53 bits66 bits
Lowercase letters (a–z), 26 symbols38 bits56 bits75 bits94 bits
Letters, both cases (a–z, A–Z), 52 symbols46 bits68 bits91 bits114 bits
Letters and digits, 62 symbols48 bits71 bits95 bits119 bits
Letters, digits and symbols, 95 symbols53 bits79 bits105 bits131 bits

Bits = length × log2(character set size). Weak under 50 bits, fair 50–70, strong 70–100, very strong above 100.

a random password, a four-word passphrase, a PIN and a hex secret with their strength bars, made with the free password generator of Qrdy Frames
Four kinds of value the generator makes, each with its strength bar.

Password vs passphrase: which should you use?

Use a random password when a password manager types it for you, and a passphrase when you have to remember or read it out. A 20-character random password like Vq7#xLm2!pRz9&kTw4Fs has about 130 bits and is impossible to memorise; a 5-word passphrase like coral-mantis-river-orbit-velvet has 65 bits, is easy to type on a phone and easy to say over the phone.

Passphrases get their strength from the wordlist, not from clever spelling. This tool draws from the EFF large wordlist of 7,776 common words, so every word adds 12.9 bits: 4 words give 52 bits, 6 words give 78 bits, 8 words give 103 bits. Capitalising words or adding one digit adds only a few bits; adding a word adds 12.9.

Good uses for a passphrase: the master password of your password manager, a laptop or disk-encryption password, a Wi-Fi password you share with guests. Good uses for a random password: every website login, because the manager fills it and you never see it.

Passphrases use the EFF large wordlist (7,776 words) by the Electronic Frontier Foundation, licensed CC BY 3.0. About the list.

Generate random strings and secrets on the command line

On any Mac or Linux machine, openssl rand, Python's secrets module, Node's crypto module and /dev/urandom all give cryptographically secure random strings; the lines below print the same kinds of value as the Developer tab above. Each reads the operating system's random source, so the output is as strong as the number of bytes you ask for: 32 bytes is 256 bits, enough for any API key, session secret or JWT signing key.

  • 32 random bytes as 64 hex characters (a typical secret key or JWT secret)

    openssl rand -hex 32

    Prints: e.g. 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

  • 32 random bytes as Base64 (44 characters, may end in =)

    openssl rand -base64 32

    Prints: e.g. n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=

  • Base64url: safe in URLs, headers and .env files, no padding

    openssl rand -base64 32 | tr '+/' '-_' | tr -d '='

    Prints: e.g. n4bQgYhMfWWaL-qgxVrQFaO_TxsrC4Is0V1sFbDwCgg

  • Python: a 43-character URL-safe token from 32 bytes

    python3 -c "import secrets; print(secrets.token_urlsafe(32))"

    Prints: e.g. Drmhze6EPcv0fN_81Bj-nA-Dq6-Z1vK9zd0oZ3yxW8M

  • Python: 32 bytes as hex

    python3 -c "import secrets; print(secrets.token_hex(32))"

    Prints: e.g. 2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da56a784d9045190cfe

  • Node.js: 32 random bytes as hex

    node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

    Prints: e.g. 7d793037a0760186574b0282f2f435e7dd8b4f3c1a2b0c9e8f7a6b5c4d3e2f10

  • Node.js: a 64-byte JWT secret in Base64url

    node -e "console.log(require('crypto').randomBytes(64).toString('base64url'))"

    Prints: 86 characters of A–Z a–z 0–9 - _

  • A 32-character random string of letters and digits straight from the kernel

    LC_ALL=C tr -dc 'A-Za-z0-9' </dev/urandom | head -c 32; echo

    Prints: e.g. Xk3mP9qLw2RtY7vB4nZc8HjF1dGsA6eU

  • An API key with a prefix, 32 random characters after it

    echo "sk_live_$(LC_ALL=C tr -dc 'A-Za-z0-9' </dev/urandom | head -c 32)"

    Prints: e.g. sk_live_Xk3mP9qLw2RtY7vB4nZc8HjF1dGsA6eU

  • A version 4 UUID (122 random bits)

    uuidgen

    Prints: e.g. 3f2504e0-4f89-41d3-9a0c-0305e82c3301 (Linux without uuidgen: cat /proc/sys/kernel/random/uuid)

Pick the encoding by where the value goes: hex for config files and anything that must survive copy-paste, Base64url for HTTP headers, URLs and .env files, a prefixed alphanumeric key when people need to recognise it in logs (the sk_live_ style), and a UUID when a system expects that exact shape. For a JWT secret, HS256 needs at least 32 bytes and 64 bytes is the common choice.

Want the value right now without a terminal? Open the Developer tab with hex, 32 bytes or a 64-byte JWT secret.

Is this password generator safe?

Yes: every value is generated on your own device by the browser's Web Crypto API (crypto.getRandomValues), and nothing is sent to a server, stored, or logged. The page is static HTML and JavaScript; the only network requests are for the page itself and, when you open the Passphrase tab, the public EFF wordlist. The analytics on this site record which tab and length were used, never the value.

The generator never uses Math.random, which is not designed for secrets. Every character, word and digit is picked by rejection sampling, so no symbol is more likely than another (the usual modulo bias of random-number % alphabet-size is avoided). You can read the source in your browser's developer tools: there is no request on Copy or Generate.

Still, treat anything shown on a screen as something to protect: close the tab when you are done, do not paste passwords into chat, and keep them in a password manager rather than a note.

Password generator FAQ

Is this password generator free?

Yes. There is no account, no limit and no premium tier. Generate as many passwords, passphrases, PINs and secrets as you like.

Is it safe to use an online password generator?

This one runs entirely in your browser with the Web Crypto API; the values are never sent to a server, stored or logged, and there is no network request when you generate or copy. You can check this in your browser's network tab. Avoid generators that send the value to a server or that use Math.random.

How long should a password be?

At least 16 random characters from letters, digits and symbols, which is about 105 bits of entropy. The default here is 20 characters (about 130 bits). For a PIN or anything you must type by hand, use a passphrase instead of a short password.

What is a good passphrase length?

Five words from the EFF large wordlist give about 65 bits, which is good for an everyday login that is also rate-limited; six words (78 bits) suit a laptop or Wi-Fi password; eight words (103 bits) are right for a password-manager master password or disk encryption.

How do I generate a JWT secret?

Pick JWT secret in the Developer tab, which gives 64 random bytes as Base64url (86 characters), or run openssl rand -base64 64 | tr '+/' '-_' | tr -d '=' or node -e "console.log(require('crypto').randomBytes(64).toString('base64url'))". HS256 needs at least 32 bytes; 64 is the usual choice. Store it in an environment variable, not in the code.

What does openssl rand -hex 32 do?

It asks OpenSSL for 32 cryptographically secure random bytes and prints them as 64 hexadecimal characters (0–9, a–f). That is 256 bits of entropy, a common size for API keys, session secrets and encryption keys. Change 32 to get more or fewer bytes; use -base64 instead of -hex for a shorter Base64 string.

What is the difference between Base64 and Base64url?

Both encode bytes as text, but Base64 uses + and / and pads with =, which break in URLs, file names and some headers. Base64url swaps them for - and _ and drops the padding, so it is the safer default for tokens and .env files. The two decode to the same bytes.

Should I use a password manager?

Yes. A password manager lets you use a different random password for every site, fills it for you and warns you about reused or leaked ones. Use this generator for the few passwords you must remember or type, such as the manager's master passphrase, and let the manager generate the rest.

More free tools

The other free tools on this site put a photo inside a shape and download a transparent PNG, in the browser like this one.

About this site

Qrdy Frames previews custom photo frames for Canva designs; the free tools are a side project of the same team. Not affiliated with Canva.