Random Password Generator
Generate secure random passwords instantly in your browser. Customize length and character types — free, private, and no data sent to any server.
Generate secure random passwords instantly in your browser. Customize length and character types — free, private, and no data sent to any server.
A random password generator produces strings designed to resist guessing and brute-force attacks. The strength of a generated password depends on its length and the alphabet (set of possible characters) used: 12 characters from a 94-character alphabet (uppercase + lowercase + digits + symbols) yields about 79 bits of entropy, considered comfortably strong for general use. Shorter or simpler passwords yield less entropy and are weaker against modern attack hardware.
Critically, this generator uses cryptographically secure random sources (window.crypto.getRandomValues), not the simpler Math.random which is unsuitable for security purposes. The output is suitable for actual use as account passwords, encryption keys for personal use, and any other context where unpredictability matters.
All generation happens in your browser. The password never travels to a server, is not logged, and is not retained anywhere we can access. To use the generated password, copy it directly into the destination — a password manager, account creation form, or wherever it is needed.
Humans pick predictable passwords. Studies of breached password databases consistently show that the same simple patterns appear millions of times: '123456', 'password', dictionary words with a number appended, names of pets and family members. Generated random passwords avoid these patterns entirely.
Reusing passwords across accounts is also a major risk. When one site's database leaks, every other account using the same password is compromised. Unique random passwords for each account, stored in a password manager, eliminate this attack vector. The generator produces one new unique password at a time.
Set length and character set, generate.
window.crypto.getRandomValues fills a typed array with cryptographically secure random bytes drawn from the browser's secure random source. Each character of the password is selected by mapping random bytes to the chosen alphabet, with rejection sampling to avoid modulo bias.
Entropy: log2(alphabet_size^length). 12 characters from 94-character alphabet = 12 × log2(94) ≈ 78.7 bits. 16 characters from 62-character alphabet (alphanumeric only) ≈ 95.3 bits. Higher entropy is exponentially harder to brute-force.
Practical attack rates: modern GPUs hash about 100 billion bcrypt-cost-12 attempts per second across a cluster. 78 bits of entropy = 2^78 ≈ 3 × 10^23 candidates. Brute force at the GPU rate would take roughly 10^14 years — infeasible. Lower-entropy passwords drop into reachable attack ranges quickly.