Password Breach Checker
Find out if a password circulates in the Have I Been Pwned breach corpus, without the password leaving your browser: 5-character hash prefix, padded responses, local match.
Site policy (advanced)
EFF long list: 7,776 words, each independently chosen word adds 12.9 bits. Six words is EFF's recommendation for most uses.
A PIN's safety comes from the device's lockout policy, not from its size. Never use a PIN as a website password.
Exact for this randomly generated secret: the entropy of the generation procedure itself, including any required-class constraint.
| Online, throttled 100 guesses per second | ... |
|---|---|
| Offline, fast hash 10 billion guesses per second (MD5-class, GPU rig) | ... |
| Offline, strong KDF 10 thousand guesses per second (bcrypt/Argon2) | ... |
Generated locally with crypto.getRandomValues; generation works offline. Nothing is stored, and nothing leaves your browser unless you click the breach check.
Test your own password
Runs locally with zxcvbn, the pattern-and-dictionary estimator: it recognizes tens of thousands of common passwords, names, words, dates, keyboard walks, sequences, repeats and leetspeak. Results for a typed password are ESTIMATES of guessing resistance, a different thing from the exact entropy shown for generated secrets above.
Estimated guessing resistance for a human-chosen password. No exact bit count exists for text a person made up.
| Online, throttled 100 guesses per second | ... |
|---|---|
| Offline, fast hash 10 billion guesses per second | ... |
Optional and button-triggered: the check hashes your password locally with SHA-1 and sends only the first 5 characters of the hash to haveibeenpwned.com, with response padding enabled so even the response size reveals nothing. The password itself never leaves your browser.
Breached beats weak: why this check matters more than complexity rules
Attackers do not start by brute-forcing character combinations; they start by replaying what already leaked. Credential stuffing, feeding breached email and password pairs into login forms at scale, is the dominant account-takeover technique precisely because reuse is everywhere. A password in the corpus fails instantly against that attack even if it would take centuries to brute-force. That inversion is why NIST guidance now tells services to screen passwords against known-breach corpora instead of enforcing symbol rituals, and it is why this check sits next to the strength estimate rather than replacing it: you need both "hard to guess" and "not already public".
Type a password above, then use the button under the analysis. The check is opt-in and explained: nothing is sent until you click, and only a 5-character hash prefix ever leaves the page.
Breach checker FAQ
How can you check my password against breaches without seeing it?
k-anonymity. Your browser computes the SHA-1 hash of the password locally, then sends only the first 5 of its 40 hex characters to the Have I Been Pwned range API. Hundreds of candidate hash suffixes come back and the match happens on your device. This page also requests padded responses, so every answer has a similar size and even a network observer learns nothing about which prefix was queried, and nothing from the query alone reveals whether there was a hit.
What does a "found" result mean?
That the exact password appears in the Pwned Passwords corpus, hundreds of millions of real passwords recovered from data breaches, along with how many times. Cracking rigs and credential-stuffing bots literally start from this corpus, so a found password is burned regardless of how strong it looks. Stop using it everywhere, not just on one site.
What does a "not found" result prove?
Less than it seems, and this page words it accordingly: not found means not present in the HIBP Pwned Passwords corpus at the time of the check. It does not prove the password is strong, unguessable or absent from private attacker lists and unreported breaches. Treat "not found" as one necessary signal; the strength analysis above is the other.
Why check passwords rather than my email address?
They answer different questions. Email lookups tell you which breaches included your accounts; the password lookup tells you whether a specific password, from any source and any user, is in circulation among crackers. A password can be breached via someone else entirely: if anyone anywhere used "Summer2024!" on a hacked site, it is in the corpus and effectively public.
Is SHA-1 not broken? Why is it used here?
SHA-1 is broken for collision resistance, which matters for signatures, not for this lookup. Here it only fingerprints the password so the corpus can be indexed; the privacy property comes from sending 5 characters of the hash, not from SHA-1's strength. Even a full SHA-1 of a weak password would be trivially reversible by guessing, which is exactly why only the prefix ever leaves your browser.
More free tools: Password Generator · Password Strength Checker · Passphrase Generator · Website Safety Checker · DMARC/SPF/DKIM Checker