By Seth Black Updated April 30, 2025
...
Quickstart: Click "regen" multiple times, then click "copy" to copy the password to your clipboard. If you understand pseudo-random number generators feel free to modify the parameters below to your heart's content.
This strong random password generator creates strong, secure, random plain text passwords using the PCG32 random number generator without sending the password over the internet or storing the generated password on a server. If you are still uncomfortable using this utility you can generate multiple passwords, save them to your device and use different parts from each to create a unique password, otherwise you may want to try something like using the Python REPL to generate a strong password.
I developed this password generator because I don't trust the security and randomness of passwords generated by other password generators; plus, I like a challenge. I also wanted to test out Melissa E. O'Neill's implementation of the PCG32 pseudo-random number generator with an environment-based seed. By generating multiple passwords using this strong password generator, saving them to my local computer then mixing them I can confidently trust in the uniqueness and security of my passwords. The number of password breaches each year is staggering. By using a unique, random password for every account I can rest assured that even if one system is hacked all of my other accounts' passwords are safe.
I've also made a genuine effort to keep this page as simple as possible in order to reduce the attack surface. Feel free to inspect the page source and you'll find there are no javascript tracking scripts, no pixels, no third-party resources, no ads, and no embedded social media. All variables are generated in-browser and not on the server-side and no requests are made when you click "generate", "copy" or when you modify the algroithm's parameters.
No. Always use a unique password for every single account. If one account is compromised, using unique passwords prevents attackers from accessing your other accounts.
A strong password has several characteristics:
Ensure passwords are at a minimum sixteen (16) characters long. Generally, the longer the password, the more secure it is against brute-force attacks.
Never use easily guessable information. This includes:
No, this is a bad practice. If one password using this pattern is compromised, attackers can easily guess the passwords for your other accounts. Each password should be completely unique.
Yes, this generator is designed with security in mind. It runs entirely in your browser (client-side) using JavaScript. No passwords or parameters are sent over the internet, and nothing is stored on our servers. You can verify this by inspecting the page source code and network activity.
This tool uses the PCG32 (Permuted Congruential Generator), a well-regarded pseudo-random number generator known for its statistical randomness and unpredictability, seeded with values from your browser's secure crypto.getRandomValues
function and the current timestamp to enhance uniqueness for each session.
Immediately copy the generated password and save it securely, ideally in a trusted password manager. Then, use it to update your password on the specific website or service you need it for. Avoid saving it in plain text files or insecure notes.
These are parameters for the underlying PCG32 random number generator. For most users, leaving these fields blank or using the auto-generated values is recommended, as the generator automatically uses secure random values. Advanced users can input specific numbers to generate deterministic (repeatable) sequences if needed for specific technical purposes, but this is generally not advised for creating secure account passwords.
You're not! Trying to memorize dozens of unique, complex passwords is practically impossible. The most secure and practical solution is to use a reputable password manager.
A password manager is a secure, encrypted application designed to store all your different passwords (and other sensitive information). You only need to remember one strong master password to unlock the manager. It can generate, save, and autofill passwords for you. Yes, using a trusted password manager is highly recommended for good security hygiene.
Reputable password managers use strong encryption (like AES-256) to protect your stored data, making them very secure. Ensure you choose a well-known, trusted provider, use a very strong master password for the manager itself, and enable 2FA on your password manager account.
While convenient, browser password managers are generally considered less secure than dedicated password manager applications. They can be more vulnerable if someone gains access to your unlocked computer user account. Using a dedicated, encrypted password manager is recommended.
Avoid writing passwords down, especially on sticky notes attached to your computer or anywhere easily visible. If you must write them down, store them securely and offline, locked away where others cannot find them. Using a reputable password manager is a much safer alternative.
Storing passwords unencrypted in cloud storage (like Google Drive notes, Dropbox text files) is very risky. Reputable password managers often use cloud syncing, but they encrypt your password database securely *before* it's synced, making it a much safer approach.
A traditional password is often a shorter string of mixed characters (like Tr0ub4dor&3
). A passphrase is typically longer, consisting of multiple random words (like correct-horse-battery-staple
). Both can be secure if generated properly (long and random). Passphrases generated by tools like our Passphrase Generator can be easier for humans to remember or type while still being very secure due to their length.
If you need to memorize a password, consider using a passphrase approach (see above). Think of a sentence or phrase meaningful only to you, and use the first letter (or first few letters) of each word, potentially substituting some letters with numbers or symbols. For example, "My favorite pizza place is Luigi's on 5th street!" could become "Mfp!iLo5s!". Make sure it's still long and complex. However, using a password manager is strongly preferred.
Phishing is when attackers try to trick you into revealing sensitive information (like passwords or credit card numbers) by pretending to be a legitimate entity (like your bank or a popular website) via email, messages, or fake websites. Avoid clicking suspicious links, always verify the sender's address, check website URLs carefully, and never enter sensitive data on a site you reached via an unexpected link.
Act quickly! 1. Immediately change the password for that account to a new, strong, unique one. 2. Change the password for any *other* accounts where you might have reused the old password. 3. Enable 2FA/MFA if you haven't already. 4. Check the account for any unauthorized activity (e.g., emails sent, purchases made). 5. Report the compromise to the service provider if necessary.
While older advice recommended changing passwords frequently (e.g., every 2-3 months), current best practice emphasizes using very strong, unique passwords (via a password manager) and only changing them if you suspect a compromise. However, some compliance rules may still require periodic changes. The most critical thing is uniqueness and strength.
Two-Factor Authentication (2FA) or Multi-Factor Authentication (MFA) adds an extra layer of security beyond just your password (e.g., a code sent to your phone, an authenticator app). Yes, absolutely use it whenever it's offered! It significantly increases your account security.
Treat your security questions and answers like passwords - they should also be unique for every account. Avoid answers that can be easily found online or guessed. Consider using random strings generated by a password manager as answers if the site allows.
Never share your password via insecure methods like text message, instant messenger (Slack, Discord, etc.), social media messages, or unencrypted email. Ideally, don't share passwords at all. If absolutely necessary, use a secure method like a trusted password manager's sharing feature.
No one. Legitimate organizations (banks, reputable websites, your company's IT support) will *never* ask for your password directly. Never give it out, ever.
Avoid logging into sensitive accounts (like banking, email) using public WiFi networks or on devices you don't own/trust (like a friend's computer or a public library terminal). These environments pose higher security risks. Use a VPN if you must use public WiFi.
Using a Virtual Private Network (VPN) is generally a good idea, especially when using public WiFi. It encrypts your internet traffic, adding a layer of privacy and security. If you travel often, consider using a trusted VPN service or even setting up your own private VPN server.
Updates often include patches for security vulnerabilities that hackers exploit. Keeping your operating system (Windows, macOS), web browser, router firmware, and other applications up-to-date is critical for protection.
Yes. Quality AntiVirus/Anti-Malware software provides essential protection against viruses, ransomware, and other malicious software. Keep it installed and updated. Modern operating systems have built-in protection (like Windows Defender), which is good, but dedicated solutions often offer broader protection.
Encrypting your hard drives (using tools like BitLocker for Windows or FileVault for macOS) is highly recommended. It protects your data if your computer is lost or stolen, as the drive contents will be unreadable without the password or recovery key.
Be cautious. Some tools might automatically upload clipboard content or screenshots to the cloud. Avoid pasting sensitive information (like passwords) into online tools, and be mindful of what your screen capture software does with images.
Absolutely. Always lock your computer (e.g., Windows Key + L, Ctrl+Cmd+Q on Mac) and mobile phone whenever you leave them unattended, even for a short time. This prevents unauthorized physical access.
As developers, we have a responsibility to protect user data. Building systems with poor password management practices not only puts users at significant risk but can also lead to devastating data breaches, loss of user trust, legal liability, and reputational damage for your application or company. The internet is inherently risky; don't make it worse.
Never, ever store user passwords (or security questions/answers) as plain text in your database or logs. This is extremely negligent and makes users incredibly vulnerable if your system is breached.
Always hash user passwords using a strong, modern, adaptive hashing algorithm (like Argon2, scrypt, or bcrypt). Crucially, you must use a unique, randomly generated salt for *each user's password* before hashing. Store the hash and the unique salt together for verification.
Prioritize modern, adaptive hashing algorithms designed for password storage. Recommended: Argon2 (often considered the strongest, OWASP #1 recommendation), scrypt, or bcrypt. Avoid at all costs: MD5, SHA1, or any unsalted hashing algorithm, as these are easily crackable with modern hardware.
Avoid generating passwords for users and sending them via insecure channels like email. It's better to implement a secure account activation or password reset flow where the user sets their own password directly.
Yes, enforcing minimum password complexity and length requirements during signup or password change is a good practice. While client-side checks provide immediate feedback, server-side validation is essential for security. Check current recommendations (like NIST guidelines) which sometimes favor length over strict complexity mandates if entropy is high. However, blocking known breached passwords is also highly effective.
Implement rate limiting and account lockout mechanisms. Log invalid login attempts (securely, avoiding logging sensitive data) and consider alerting users to suspicious activity on their accounts (like multiple failed logins). After a certain number of incorrect attempts from an IP address or on an account, temporarily lock the account or require additional verification (like CAPTCHA or email confirmation) to mitigate brute-force attacks.
Credential stuffing is an automated attack where bots use lists of stolen usernames and passwords (from other breaches) to try logging into your application. Mitigation includes: implementing Multi-Factor Authentication (MFA), using robust account lockout and rate limiting policies, monitoring for high volumes of failed logins from specific IPs, and potentially using services that check submitted passwords against known breach lists (like Have I Been Pwned's Pwned Passwords API).
Proper input validation on login forms, password reset forms, and user profile fields is crucial. It helps prevent injection attacks like SQL Injection (if credentials or user data are improperly handled in database queries) and Cross-Site Scripting (XSS), which could potentially steal session cookies or compromise user interactions. Always validate and sanitize user input on the server-side.
Use secure, time-limited, single-use tokens sent via a secure channel (usually email) to the user's registered address. Do not send old passwords or new passwords directly. Invalidate the token after use or expiration. Ensure the reset process requires re-authentication if the user is already logged in. Log reset attempts and notify the user.
Use randomly generated, high-entropy session identifiers stored securely (e.g., in HttpOnly, Secure cookies). Implement session timeouts (both inactivity and absolute). Provide a clear logout function that properly invalidates the session on both client and server. Consider regenerating the session ID upon login or privilege level change (session fixation prevention). For APIs, use secure token-based authentication (e.g., OAuth 2.0, JWTs implemented correctly).
Yes, absolutely critical. Always use TLS (HTTPS) with a valid, up-to-date certificate for all communication between the user's browser and your server. This encrypts the data in transit, protecting login credentials and other sensitive information. Tools like Let's Encrypt (often used with certbot
) provide free certificates.
Beyond application-level protections (like rate limiting), consider installing server-level intrusion detection and prevention software (IDPS) or web application firewalls (WAFs). Tools like Fail2ban or commercial solutions (e.g., from Palo Alto Networks, Cloudflare, Alert Logic) can help block malicious IPs automatically.
Very important. Use firewalls (network firewalls and/or host-based firewalls) to restrict access to internal servers and services. Only allow connections from trusted sources and necessary ports (principle of least privilege).
Require administrators to connect via a secure Virtual Private Network (VPN) before accessing internal servers, management consoles, or sensitive data. Avoid exposing administrative interfaces directly to the public internet.
Yes. Use your own dedicated domain for all user-facing interactions (website, API endpoints, email). Avoid hosting critical functions on shared or less reputable domains. This helps build user trust and gives you more control over security configurations like DNSSEC and email authentication (SPF, DKIM, DMARC).
If you distribute software or updates, sign them using a private key (e.g., with GnuPG/PGP). Publish your public key securely so users can verify the signature, ensuring the package hasn't been tampered with.
Regularly scan your project's dependencies for known vulnerabilities using tools like OWASP Dependency-Check, npm audit, GitHub Dependabot, Snyk, etc. Keep dependencies updated, but test updates carefully. Remove unused dependencies to reduce the attack surface. Be cautious about the permissions granted to third-party code.
The frequency depends on your application's risk profile and development cycle. Ideally, security reviews should be part of your regular code review process. Formal penetration testing by external experts is recommended periodically (e.g., annually or after major changes) for critical applications to identify vulnerabilities that automated tools or internal reviews might miss.
1. Contain the breach (isolate affected systems, close vulnerabilities). 2. Investigate the scope (what data was accessed, how?). 3. Force a password reset for all affected users (or potentially all users). 4. Invalidate active sessions/tokens. 5. Enhance monitoring and logging. 6. Review and improve security controls that failed. 7. Preserve evidence for forensic analysis. (Note: Legal/regulatory notification steps are also crucial but outside the purely technical scope).
Security is complex and constantly evolving. If any of this is confusing or you're unsure about the best implementation, ask questions. Consult security documentation, reputable online resources (like OWASP), or seek guidance from experienced senior developers or security professionals. Don't guess when it comes to security.
Also check out the Random Passphrase Generator, Unicode Random Password Generator, and How to Generate a Strong Random Password in Python.
-Sethers