🔐 HIBP · k-Anonymity · No Signup

Password Breach Checker

Check if a password appeared in any known data breach. Your password is hashed locally in your browser. Only the first five characters of the SHA-1 hash ever leave your device — the plaintext never does.

Updated: October 24, 2026 Built by Khalil Rahman Password never transmitted Free forever

Enter a password. It is hashed in your browser with SHA-1, and only the five-character prefix of the hash is sent to the HIBP Pwned Passwords API. The API returns all matching prefixes, and your browser checks locally which one matches.

Strength
Strength: — Entropy: 0 bits · Crack time: —
🔒 How the check stays private. The SHA-1 hash of your password is computed entirely inside your browser using the native Web Crypto API. Only the first 5 characters (of 40) are sent over the network. The API returns around 800 candidate hashes that share those 5 characters. Your browser then checks locally whether your full hash is among them. The server never learns which hash you actually hold — and it never sees your password.
10B+Passwords indexed by HIBP
5 / 40Hash characters sent
~800Hash candidates returned
0Passwords stored

Check multiple passwords at once. One per line. Maximum 20 passwords per run, with a small delay between requests so we do not hammer the HIBP API.

0 / 20 Each line is treated as a separate password
0%
Password Breach status Strength Entropy

Generate a strong, cryptographically random password using crypto.getRandomValues — the same source of randomness browsers use for secure tokens. Nothing is sent anywhere.

Range: 8–64 characters. Longer is stronger — aim for 20 or more.
Character sets
⚠️ Where to store the generated password. Do not write it down in a text file, do not paste it into a Notes app, and do not email it to yourself. Put it directly into a password manager. Bitwarden is free and open source; 1Password and Dashlane are paid alternatives. If you must write it down, use a paper notebook stored somewhere physical.

Your last 30 checks, stored on your own device. We only store the first 5 characters of the SHA-1 hash plus the result — never the full hash, never the password. Click any entry to re-check the password if you still have it.

No checks yet.

🔐 What a breach checker actually does

A breach checker answers one question: has this exact password appeared in a public data breach? It does not tell you whether your account is currently at risk, whether your email appears in a leak, or whether someone is trying to log in. It only compares your password against a database of passwords that have been exposed in past breaches.

That distinction matters, because people often confuse two different tools. Have I Been Pwned has both a password checker (what this page uses) and an email checker. The email checker tells you which breaches have included your address. The password checker tells you whether a specific password is on a public list. They solve different problems, and both are useful.

This tool focuses on the password side. If a password you use is on any public breach list, attackers will try it against your accounts. The check takes under a second, and the result is definitive — either the password is in the list, or it is not.

🛡️ The k-anonymity model, explained simply

The obvious way to check a password against a database is to send the password to the server and ask "is this one in your list?" But that would mean handing your password to a stranger, which defeats the point.

The clever way is k-anonymity. Here is how it works in five steps:

  1. Hash the password. Your browser computes the SHA-1 hash of the password. For "password123", that hash is CBFDAC6008F9CAB4083784CBD1874F76618D2A97.
  2. Split the hash in two. Take the first 5 characters (CBFDA) and call it the prefix. The remaining 35 characters (C6008F9CAB4083784CBD1874F76618D2A97) are the suffix.
  3. Send only the prefix. Your browser sends CBFDA to the HIBP API. This is the only piece of information that leaves your device.
  4. Receive all matching hashes. The API returns every hash in its database that begins with CBFDA. This is roughly 800 hashes — every password that happens to share those 5 leading characters.
  5. Match locally. Your browser checks whether your full hash (prefix + suffix) is in that list. If it is, the password has been breached. The server never learned which of the 800 hashes was yours.

Because roughly 800 passwords share any given 5-character prefix, the server cannot tell which password you were checking. Your privacy is mathematically protected, not just promised.

💡 Why this is a big deal. Before k-anonymity, checking a password against a breach list required either downloading the full database (over 40 GB) or sending the password to a server. The k-anonymity trick makes the check both instant and private. It was a genuine innovation when Troy Hunt introduced it for HIBP in 2018, and it is now used by Firefox, Chrome, Safari, 1Password, Bitwarden, and every reputable security product.

🧪 Reading the strength meter

The breach check tells you whether a password is on a public list. The strength meter tells you how hard that password would be to crack even if it is not on any list yet. Both matter.

Entropy, measured in bits

Entropy is the number of bits of randomness in a password. It is calculated from two things: the size of the character set you used, and the length of the password. A password made from lowercase letters and digits (36 possible characters) that is 8 characters long has roughly 8 × log₂(36) ≈ 41 bits of entropy. Add uppercase and symbols and the character set grows to 95, pushing the same 8 characters to 8 × log₂(95) ≈ 52 bits.

The doubling rule applies: every additional bit of entropy doubles the number of guesses an attacker needs. Going from 40 bits to 80 bits does not double the effort — it multiplies it by roughly a trillion.

Rough crack-time estimates

The meter also estimates how long a modern cracking rig would take to guess the password. This assumes a rig that can try 10 billion guesses per second, which is realistic for a GPU cluster against fast hashes like MD5 or SHA-1. Against properly hashed passwords (bcrypt, Argon2), the real-world speed is thousands of times slower.

EntropyStrengthRealistic crack time
Under 28 bitsVery weakSeconds to a few minutes
28–40 bitsWeakHours to a few days
40–60 bitsFairMonths to a few years
60–80 bitsStrongCenturies
80+ bitsVery strongLonger than the age of the universe

The estimates are order-of-magnitude, not precise. They assume the attacker is not targeting you specifically, uses an efficient guessing strategy, and has hardware you can rent for a few hundred dollars an hour. For most purposes, they are good enough to tell the difference between "this is fine" and "this is not fine".

⚡ What to do when a password shows as breached

Finding out a password has been breached is stressful, but the fix is straightforward:

1. Change it everywhere you used it

Attackers compile breach lists and try the same password against other services. This is called credential stuffing, and it succeeds because people reuse passwords. If your breached password is used on more than one site, change it on all of them. Start with email accounts and anything financial.

2. Change it to something unique and strong

Do not change "Password123" to "Password456". Do not change "Summer2025" to "Summer2026". Use a completely new password, generated with a password manager or the generator on this page. Aim for at least 16 characters and include a mix of character types.

3. Enable two-factor authentication

Even if your new password leaks tomorrow, a second factor stops most attacks. Turn on 2FA for email, banking, social media, and anything with your payment details. Authenticator apps are more secure than SMS codes, but SMS is still far better than nothing.

4. Check your email addresses too

Visit haveibeenpwned.com and check every email address you own. It tells you which breaches have included that address, along with the dates and the types of data exposed. If a breach involved more than just passwords (payment cards, addresses, ID numbers), you may need to take additional action.

5. Watch for account recovery changes

After a breach is public, attackers sometimes try to reset passwords or change recovery emails on high-value accounts. If you get a password reset email you did not request, treat it as a warning sign. Log in directly and check that the recovery email and phone number are still yours.

🚩 Never reuse passwords across sites. Reusing one password across ten accounts means a single breach compromises all ten. This is the number one cause of account takeover. Use a password manager and let it generate a unique password for every site.

📚 Password managers worth using

The only realistic way to have a different password on every site is to let software remember them for you. Here are the mainstream options and who each is best for.

ManagerBest forCost
BitwardenFree open-source option. Excellent on every platform. Self-hosting available.Free; $10/yr premium
1PasswordBest-designed interface. Strong sharing and family features.~$36/yr
DashlaneBuilt-in VPN. Good for people who want an all-in-one product.~$60/yr
KeePassXCCompletely offline. Local file-based. Maximum control.Free
Browser built-inBetter than nothing, but do not trust it as your only store.Free

Bitwarden is what most security professionals recommend to friends and family. It is free, open source, audited, and available on every platform. The paid tier is $10 per year and adds encrypted file storage and a hardware security key option.

🔒 Your privacy and how we handle data

Your password never leaves your browser. When you click Check, your password is hashed with SHA-1 using the Web Crypto API. Only the first five characters of the resulting 40-character hash are sent to the HIBP Pwned Passwords API over HTTPS. The API returns around 800 candidate hashes that share that prefix; your browser checks locally which one matches. The plaintext and the full hash are never transmitted.

History is local only. The History tab stores your last 30 checks in your browser's localStorage. Each entry holds only the 5-character prefix, the breach count, and a timestamp — never the full hash, never the password. You can clear the entire history at any time with the "Clear all history" button.

No servers of ours are involved. The check is a direct browser-to-HIBP request. We do not proxy it, log it, or see it. If HIBP is unreachable, the tool shows an error and does nothing else.

Cookies and advertising. Advertising and analytics cookies are switched off by default. They only turn on if you press Accept all, or select them individually under Manage preferences. You can change your choice at any time from the Cookie Policy page. Full details are in our Privacy Policy.

About the author

Khalil Rahman — Front-end developer and tool builder

Khalil has spent the last eight years building browser-based tools for security-conscious users. He built this checker after noticing that most online breach tools either log the passwords you submit, require an account, or bury the k-anonymity explanation so deep that users cannot verify the privacy claim. This version shows exactly what is sent, keeps everything else local, and includes a strength meter so a "not breached" result does not lull anyone into using a weak password. He maintains the SkillsInsider security toolset.

More about SkillsInsider · Editorial policy · Report an issue

❓ Frequently asked questions

Is my password sent to any server?

No. Your password is hashed with SHA-1 inside your browser using the Web Crypto API. Only the first five characters of the resulting hash are sent to the HIBP API. The plaintext password and the full 40-character hash never leave your device. The HIBP server returns roughly 800 candidate hashes, and your browser checks locally which one matches.

What does it mean if a password shows as breached?

It means that exact password has appeared in at least one known public data breach that HIBP has indexed. Attackers compile these lists and use them for credential stuffing — trying the password on other services in the hope that you reused it. Treat the password as fully compromised and change it everywhere it is used, starting with email and banking.

What is k-anonymity and why does it matter?

k-anonymity is a privacy technique where you send only a partial identifier instead of the full value. With HIBP, that partial identifier is the first five characters of a SHA-1 hash. Roughly 800 other hashes share those five characters, so the server cannot tell which specific password you are checking. Your privacy is mathematically protected by the number of collisions, not just promised by a policy.

Why SHA-1 if it's considered broken?

SHA-1 is broken for cryptographic signatures — an attacker can construct two different inputs with the same hash. But HIBP uses SHA-1 purely as an index key against a pre-computed database. Collision resistance does not matter for a lookup. Never store passwords with SHA-1. For storage, always use bcrypt, scrypt, or Argon2.

Does "not breached" mean my password is strong?

No. A password like "abc123" might not be in HIBP yet, but it is still trivially guessable. The strength meter on this page estimates entropy and crack time, which is a much better signal of quality than the breach result alone. Aim for at least 60 bits of entropy — about a 16-character password with mixed character types.

What is the HIBP Pwned Passwords API?

It is a free service run by security researcher Troy Hunt. It indexes over ten billion passwords collected from public data breaches. Anyone can query it by sending a hash prefix — no API key, no account, no rate limit for reasonable use. It is the same database behind Firefox's and Chrome's built-in password leak warnings.

Can I check my email address on this page?

No — this tool checks passwords only. To check whether your email address appears in a breach, visit haveibeenpwned.com directly. It lists which breaches included that address along with the types of data exposed.

Is there a limit to how many passwords I can check?

No. The single check tab has no limit, and the bulk tab allows up to 20 passwords per run with a small delay between requests. HIBP does not have a rate limit for the Pwned Passwords API, but being polite is good practice.

Related tools

✓ Copied