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 / 20Each 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
—
—Entropy (bits)
—Crack time estimate
—Strength rating
⚠️ 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.
Advertisement
🔐 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:
Hash the password. Your browser computes the SHA-1 hash of the password.
For "password123", that hash is CBFDAC6008F9CAB4083784CBD1874F76618D2A97.
Split the hash in two. Take the first 5 characters (CBFDA) and
call it the prefix. The remaining 35 characters (C6008F9CAB4083784CBD1874F76618D2A97)
are the suffix.
Send only the prefix. Your browser sends CBFDA to the HIBP API.
This is the only piece of information that leaves your device.
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.
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.
Entropy
Strength
Realistic crack time
Under 28 bits
Very weak
Seconds to a few minutes
28–40 bits
Weak
Hours to a few days
40–60 bits
Fair
Months to a few years
60–80 bits
Strong
Centuries
80+ bits
Very strong
Longer 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.
Manager
Best for
Cost
Bitwarden
Free open-source option. Excellent on every platform. Self-hosting available.
Free; $10/yr premium
1Password
Best-designed interface. Strong sharing and family features.
~$36/yr
Dashlane
Built-in VPN. Good for people who want an all-in-one product.
~$60/yr
KeePassXC
Completely offline. Local file-based. Maximum control.
Free
Browser built-in
Better 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.
Advertisement
🔒 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
KR
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.
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.
We use strictly necessary cookies to make the site work. With your permission we also use analytics,
advertising and functional cookies to keep the tools free and improve them. You can accept everything,
reject the extras, or choose individually. Read the
Cookie Policy and
Privacy Policy for full details.
Strictly necessary
Required to load the page and remember your cookie choice. These cannot be switched off.
Analytics
Anonymous statistics about which pages and tools are most used, so we know what to improve.
Advertising
Allows us to show relevant ads and keep the tools free. Personalised ads use data shared with ad partners.
Functional
Remembers things like your dark/light theme and recently checked hash prefixes on this device.