Password Generator
Cryptographically secure password generator with optional Human Entropy Mode. Runs 100% in your browser using crypto.getRandomValues().
Password Generator
Advanced options
Password result
β Cryptographically secure password generator with optional Human Entropy Mode. Runs 100% in your browser using crypto.getRandomValues().
β Set the desired length with the slider or numeric input (4β128 characters).
Toggle the character classes: lowercase, uppercase, digits, symbols. Optionally enable 'Exclude ambiguous' or 'No consecutive repeating characters'.
Click Generate for a single password, or Generate Bulk for up to 100 at once.
Click Copy to put the password on your clipboard β it will auto-clear after 60 seconds.
For maximum paranoia, enable Human Entropy Mode and move the mouse, type, or tap to contribute additional randomness before generation.
Every random byte comes from the browser's cryptographic PRNG β never Math.random(). Verifiable in open-source code.
Collect additional entropy from mouse, keyboard, and touch events, XOR-mix with crypto randomness, and hash with SHA-256 before use.
Shannon entropy shown in bits alongside a Weak/Fair/Strong/Very Strong label following NIST SP 800-63B guidance.
Produce up to 100 passwords at once and download them as a newline-separated .txt file β all client-side.
Copied passwords are wiped from the clipboard automatically after 60 seconds to limit exposure to other applications.
Every password is generated in your browser. Nothing is transmitted, stored on a server, or logged. Close the tab and it is gone.
Uses crypto.getRandomValues() and SubtleCrypto.digest() β browser-native primitives that are open-source and widely audited.
Once the page loads, no further network is required. You can generate passwords on an air-gapped machine after the tool is cached.
The strength meter uses role='meter', the entropy bar uses role='progressbar', and every state change is announced via aria-live.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Exclusively crypto.getRandomValues() from WebCrypto. Math.random() is not used anywhere. You can inspect the open-source code in tools-core.
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).
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.
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.
Yes. Once the page is loaded, no network is required. The site is a static bundle and the generator is pure client-side JavaScript.
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.
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.
Not in this version β the generator emits character passwords. A passphrase generator from a curated word list is on the roadmap.
No logs, no analytics events for generation, no server calls. The tool is a static page and all logic runs in your browser tab.
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.
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.
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.
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.
Understand password entropy, why length beats complexity, and how crypto.getRandomValues delivers cryptographically secure passwords aligned with NIST SP 800-63B.
Read more →Practical password generation strategy for IT teams: bulk generation, service accounts, entropy policies, rotation triggers, and secrets-manager workflows.
Read more →Practical guide to Base64 in web development covering data URIs, JWT tokens, HTTP Basic Auth, browser APIs, file encoding for APIs, and common pitfalls.
Read more →Learn how Base64 encoding works, why it exists, its variants like URL-safe and MIME, common use cases, size overhead, and security misconceptions in this complete guide.
Read more →