Password Generator

Cryptographically secure password generator with optional Human Entropy Mode. Runs 100% in your browser using crypto.getRandomValues().

100% Private & Secure

All processing happens locally in your browser. Your files never leave your device.

Client-Side Processing No Server Uploads No Registration Required

Password Generator

Character classes
Advanced options
Minimum per class:
Human Entropy Mode (optional)

Move your mouse, type, or tap to add randomness. Human entropy supplements crypto.getRandomValues() β€” never replaces it.

Password result

β€”
Strength:
β€” β€”

Session history

    Keywords

    password generator, secure password, random password, crypto.getRandomValues, NIST 800-63B, strong password, bulk password generator, entropy

    Need something else?

    How to use

    1

    Set the desired length with the slider or numeric input (4–128 characters).

    2

    Toggle the character classes: lowercase, uppercase, digits, symbols. Optionally enable 'Exclude ambiguous' or 'No consecutive repeating characters'.

    3

    Click Generate for a single password, or Generate Bulk for up to 100 at once.

    4

    Click Copy to put the password on your clipboard β€” it will auto-clear after 60 seconds.

    5

    For maximum paranoia, enable Human Entropy Mode and move the mouse, type, or tap to contribute additional randomness before generation.

    Features

    crypto.getRandomValues() Throughout

    Every random byte comes from the browser's cryptographic PRNG β€” never Math.random(). Verifiable in open-source code.

    Human Entropy Mode (Optional)

    Collect additional entropy from mouse, keyboard, and touch events, XOR-mix with crypto randomness, and hash with SHA-256 before use.

    NIST-Aligned Strength Meter

    Shannon entropy shown in bits alongside a Weak/Fair/Strong/Very Strong label following NIST SP 800-63B guidance.

    Bulk Generation & Export

    Produce up to 100 passwords at once and download them as a newline-separated .txt file β€” all client-side.

    Clipboard Auto-Clear

    Copied passwords are wiped from the clipboard automatically after 60 seconds to limit exposure to other applications.

    Why Choose This Tool?

    No Account, No Logs, No Upload

    Every password is generated in your browser. Nothing is transmitted, stored on a server, or logged. Close the tab and it is gone.

    Auditable Cryptographic Primitives

    Uses crypto.getRandomValues() and SubtleCrypto.digest() β€” browser-native primitives that are open-source and widely audited.

    Works Offline After First Load

    Once the page loads, no further network is required. You can generate passwords on an air-gapped machine after the tool is cached.

    Accessible to Screen Readers

    The strength meter uses role='meter', the entropy bar uses role='progressbar', and every state change is announced via aria-live.

    Choosing a Secure Password in the Age of Credential Stuffing

    Why Length Beats Complexity

    Modern guidance from NIST (SP 800-63B) makes clear what cryptographers have said for years: a password's strength is dominated by its length and the size of the character pool it was drawn from. An 8-character password with lowercase only has about 37 bits of entropy β€” crackable on a modern GPU in seconds. A 16-character password drawn from a 94-character pool (upper, lower, digits, symbols) has roughly 105 bits β€” computationally out of reach for any attacker not armed with nation-state resources.

    What Entropy Actually Means

    Entropy, measured in bits, is the logarithm base 2 of the number of possible passwords that could have been generated with the same rules. If a password has 60 bits of entropy, there are 2⁢⁰ β‰ˆ 10¹⁸ possibilities. At a trillion guesses per second, that is roughly 35 years of continuous cracking. At 128 bits, even hypothetical future hardware will struggle during the lifetime of any current secret.

    crypto.getRandomValues() vs Math.random()

    Every major browser exposes two random number sources. Math.random() is a non-cryptographic PRNG β€” fast, suitable for games, unsuitable for secrets. crypto.getRandomValues() is backed by the operating system's CSPRNG (typically /dev/urandom on Linux, CryptGenRandom on Windows, SecRandomCopyBytes on macOS) and is the only acceptable source for password material. This tool uses exclusively the cryptographic path.

    Human Entropy Mode

    Some threat models β€” particularly against state-level adversaries β€” benefit from belt-and-suspenders entropy. The optional Human Entropy Mode collects additional randomness from mouse movements, keystrokes, and touch events, XOR-mixes the collected pool with 256 bits of crypto.getRandomValues(), and SHA-256 hashes the result to produce a uniform seed. The human contribution cannot weaken the output below what crypto.getRandomValues() alone provides β€” XOR with a truly random mask preserves uniformity β€” but gives users who want it the psychological comfort of physical participation.

    Unbiased Sampling Matters

    A naive implementation would pick a character by taking a random byte modulo the pool size. This introduces modulo bias: if the pool has 94 characters and bytes range 0–255, the first 26 characters appear slightly more often than the last 68. This tool uses rejection sampling β€” bytes that fall outside the uniform range 256 βˆ’ (256 mod 94) = 188 are discarded and redrawn β€” to guarantee every character is equally likely.

    Ambiguous Characters

    Zero versus capital-O, one versus lowercase-L versus capital-I: visually indistinguishable in many fonts and a common source of password entry errors. The 'Exclude ambiguous' option removes 0OoIl1 from the pool. It shrinks entropy very slightly (less than a bit on a 94-char pool), which is overwhelmingly worth the ergonomic improvement when passwords must be manually transcribed.

    Rotation and Password Managers

    NIST no longer recommends arbitrary periodic password rotation β€” it leads users to weaker patterns. Rotation should be event-driven: after a breach, compromise, or suspected exposure. For day-to-day use, the strongest recommendation is to store each password in a reputable password manager (Bitwarden, 1Password, KeePassXC) so length can be maximized without memorization burden. Generate a 32-character random password per account, store it in the manager, and only memorize the master password protecting the vault.

    Clipboard Hygiene

    When copied to the clipboard, passwords can be read by other applications on the same system β€” particularly on mobile where cross-app clipboard access is permissive. This tool auto-clears the clipboard 60 seconds after a copy. Paste the password into its destination promptly, and avoid keeping it on the clipboard indefinitely.

    Generating Passwords for Different Contexts

    Not every account warrants the same strategy. Service accounts and API secrets β€” consumed programmatically and stored in secret managers β€” benefit from the maximum reasonable length (64–128 chars, full symbol set) because no human ever types them. Wi-Fi passwords that guests occasionally read from a card do better with 20 characters excluding ambiguous glyphs, so they transcribe cleanly. Root and administrative passwords on infrastructure deserve 32+ characters from the full pool, and should be rotated immediately after any team member with access leaves. Encryption passphrases protecting disk volumes or password vaults should target 128 bits of entropy but can skip symbols in favor of longer diceware-style word sequences for typing ergonomics β€” a 7-word passphrase from a 7,776-word list yields ~90 bits without any symbols.

    Password Managers: The Essential Pair

    This generator solves creation, but creation is only half the problem. Without a password manager, users default to memorable (weak) passwords or reuse. Modern password managers β€” Bitwarden (open source, free tier), 1Password (commercial), KeePassXC (local-only), or the built-in managers in Chrome, Firefox and Safari β€” handle generation, storage, autofill, and cross-device sync. They also surface breach alerts (checking your stored credentials against the Have I Been Pwned database) and password-age reports so you can prioritize rotations. The master password protecting the vault becomes the single secret you truly memorize; it should be generated at 128+ bits or constructed as a 6–7 word diceware passphrase, and paired with 2FA on the vault itself.

    Two-Factor Authentication: Beyond the Password

    Even a cryptographically perfect password can be phished. Adding a second factor β€” a time-based one-time password (TOTP) from an authenticator app, a hardware security key (YubiKey, SoloKey), or a platform passkey β€” raises the bar dramatically. TOTP apps like Aegis, 2FAS, and Google Authenticator generate 6-digit codes that rotate every 30 seconds; they require attackers to compromise a second device, not just phish a credential. Hardware keys using FIDO2/WebAuthn are the gold standard: they are physically required for authentication and cannot be phished because they cryptographically verify the site origin. Wherever possible, prefer passkeys (the consumer-facing FIDO2 implementation) over password+TOTP β€” passkeys eliminate the password entirely and cannot be replayed.

    When Passwords Fail: Incident Response

    Assume that any of your passwords may eventually appear in a breach. The standard response sequence: (1) identify which specific credential leaked via haveibeenpwned.com, (2) rotate that credential immediately using a freshly generated password, (3) rotate any credential that used the same or similar password on other sites (this is why reuse is toxic β€” one breach cascades), (4) review account activity for unauthorized access, (5) enable 2FA if not already present. If the breached account controls others (email, password manager, SSO provider), treat it as a critical incident: rotate all dependent credentials in order of value. A password manager makes this tractable; doing it for hundreds of accounts without one is impractical.

    When Site Rules Make Security Worse

    Many websites still enforce outdated password rules: mandatory rotation every 90 days, maximum lengths of 16 characters, rejection of pasted passwords, or bans on certain symbols. These policies do not make users safer; they usually force people toward predictable patterns like Spring2026!, sequential increments, or reused variants. A strong generator helps, but bad site policy can still drag the effective security down.

    When a site imposes strict composition rules, the practical strategy is to maximize length within the allowed limit, keep every enabled class genuinely random, and store the result in a password manager so you never need to memorize an unnatural pattern. If a service supports passkeys or WebAuthn, prefer that route immediately. Good authentication design reduces the number of compromises users must make just to satisfy legacy validators.

    Frequently Asked Questions

    What source of randomness does the generator use?

    Exclusively crypto.getRandomValues() from WebCrypto. Math.random() is not used anywhere. You can inspect the open-source code in tools-core.

    How strong should my password be?

    For general use, aim for at least 80 bits of entropy (16 chars from a 62-char pool). For high-value accounts, aim for 128+ bits (20 chars from a 94-char pool).

    Does the Human Entropy Mode improve security?

    It cannot weaken the output. The human pool is XORed with 256 bits of crypto randomness and SHA-256-hashed, so the result is at least as strong as crypto.getRandomValues() alone.

    Is my session history saved anywhere?

    No. The last 10 passwords live in memory only and are cleared on page reload or when you click 'Clear history'. Nothing is written to localStorage.

    Can I generate passwords offline?

    Yes. Once the page is loaded, no network is required. The site is a static bundle and the generator is pure client-side JavaScript.

    What is modulo bias and does this tool have it?

    Modulo bias skews the frequency of characters when a random byte is reduced modulo a pool size. This tool uses rejection sampling to eliminate it, giving every character an equal probability.

    Why does the clipboard auto-clear?

    Clipboard contents can be read by other applications on many platforms. Auto-clearing after 60 seconds reduces the window of exposure while still giving you time to paste the password.

    Can I generate passphrases (diceware-style)?

    Not in this version β€” the generator emits character passwords. A passphrase generator from a curated word list is on the roadmap.

    Are the generated passwords recorded anywhere?

    No logs, no analytics events for generation, no server calls. The tool is a static page and all logic runs in your browser tab.

    What is NIST SP 800-63B?

    The National Institute of Standards and Technology's guidelines for digital identity. Relevant sections set password length, composition, and entropy recommendations that this tool's strength labels follow.

    Should every password include symbols?

    Not always. Symbols expand the character pool and therefore increase entropy per character, but the best password is the strongest one that the target system actually accepts and that you can store safely in a manager. For some legacy systems with awkward validators, extra length may matter more than exotic symbols.

    What length should I use for Wi-Fi, admin accounts, or API keys?

    A guest Wi-Fi password that humans occasionally type benefits from around 20 random characters with ambiguous glyphs removed. Admin and root accounts should generally use 24–32+ random characters from the full pool. Machine-consumed secrets such as API keys or service credentials can comfortably go much longer because no one has to type them manually.

    Can website password rules weaken a generated password?

    Yes. Maximum-length caps, forced periodic rotation, bans on paste, and odd restrictions on symbols all push users toward weaker behavior. When faced with those rules, generate the strongest random password the site allows and store it in a password manager rather than adapting it into something memorable.

    Learn more