🚨 Have I Been Breached Checker

Last updated: January 21, 2026
🚨

Have I Been Breached?

Privacy-safe check using k-anonymity SHA-1 hashing

🔒 Your email is hashed with SHA-1 locally in your browser. Only the first 5 characters of the hash are shown — the same prefix used by the Have I Been Pwned k-anonymity API.

How it works: Your input is hashed with SHA-1 in the browser using the Web Crypto API.
The first 5 characters of the hash form the k-anonymity prefix — this is what gets sent to HIBP.
The API returns all hashes with that prefix; your browser checks for a match locally.
Your full hash and plaintext are never exposed.

Why Your Credentials Keep Getting Exposed — And How to Actually Know If They Did

Every few months, another headline appears: hundreds of millions of accounts leaked, passwords dumped on dark web forums, emails circulating in underground markets. By most estimates, over 12 billion unique credential pairs have been exposed across known breaches since 2007. Yet most people never find out their data was compromised until they notice unauthorized charges or get locked out of their own accounts.

The gap between "breach happens" and "user finds out" is where the real damage occurs. Attackers buy breach data within hours of a dump appearing online. They run automated credential-stuffing attacks against dozens of popular services before most users have any idea their password is for sale. Understanding this timeline — and knowing how to check whether you are in one of these databases — is one of the most underrated steps in personal digital security.

What Happens During a Data Breach

A data breach is not a single event. It is a chain of failures. First, a company's database is accessed without authorization — through SQL injection, a misconfigured cloud storage bucket, a stolen employee credential, or dozens of other attack vectors. The attacker extracts user records: typically email addresses, usernames, and hashed or plaintext passwords.

If the passwords were stored using weak hashing algorithms — MD5 or SHA-1 without a salt — attackers crack them in bulk using rainbow table attacks or GPU-accelerated dictionary attacks. A four-digit PIN takes milliseconds. A common eight-character password takes seconds. Even stronger passwords become vulnerable if the same hash appears thousands of times in the database, revealing the plaintext through frequency analysis.

These credential sets get sold on forums, packaged into "combo lists," and fed into automated bots that try your email-and-password combination against Gmail, Netflix, banking apps, and anything else that might have value. This is called credential stuffing, and it works because a shocking proportion of people reuse passwords across multiple sites. One breach at a gaming forum becomes unauthorized access to your bank account three months later.

The Privacy Problem With Traditional Breach Lookups

The obvious solution is to check whether your email or password appeared in known breach datasets. But the naive implementation creates a new problem: you have to send your password to a third-party server to check it. That server now knows your password. If the lookup service itself is compromised — or simply logs requests — you have just voluntarily handed your credential to an unknown party.

This is where k-anonymity changes everything. The technique was formalized for breach checking by security researcher Troy Hunt in 2018 when building the Have I Been Pwned service. The insight is elegant: you never need to send the actual secret you are checking. You only need to send enough of its fingerprint to retrieve the relevant subset of breach data, then do the final comparison yourself.

How K-Anonymity Hashing Works

SHA-1 is a cryptographic hash function that converts any input into a fixed 40-character hexadecimal string. The same input always produces the same output, but it is computationally infeasible to reverse the hash back to the original. When you hash the password "hunter2", you always get the same SHA-1 digest. This property makes hashes useful as fingerprints without revealing the underlying secret.

The k-anonymity approach works like this: your browser hashes your password or email locally using SHA-1. That produces a 40-character hash — something like D8578EDF8458CE06FAC5D7E6A9780F8E5B0167D6. Only the first 5 characters of this hash (D8578) are sent to the breach-checking API. The API returns all hashes in its database that begin with those 5 characters — typically hundreds of matches. Your browser then checks whether the full 40-character hash appears in that returned list. The comparison happens entirely on your device.

Because 5 hex characters give 16 to the power of 5 possible prefixes — over one million combinations — the server receiving your prefix has no way to determine which of the hundreds of matching hashes you are actually checking. Your full hash never leaves your device. Your plaintext password certainly never does. The k-anonymity property is preserved: you are indistinguishable from any of the other users who queried the same 5-character prefix.

What the SHA-1 Hash Display Tells You

When you use the breach checker above, you will see the SHA-1 hash of your input displayed directly in the browser. This is intentional transparency. The hash shown in purple is the k-anonymity prefix — the only portion that would travel over the network in a real API implementation. The gray portion is the suffix, which stays on your device and is used for the final local comparison.

This visualization demonstrates two things simultaneously. First, it proves that the tool is computing the hash in your browser, not sending your input to a server. Second, it shows you exactly what information the HIBP API would receive if this were a live query — a 5-character prefix that could match hundreds of completely different inputs, giving it no meaningful information about your actual password or email.

Password Strength Is Not the Same as Password Safety

One of the most important distinctions the breach checker exposes is the difference between a password being strong and a password being safe. A complex-looking password like "P@ssw0rd1" might pass most strength meters, but it has appeared in so many breach databases that it is trivially cracked. Attackers do not just run dictionary attacks — they run attacks against known-breached passwords, meaning any password that has ever appeared in a large breach is effectively compromised regardless of its apparent complexity.

Conversely, a long passphrase like "correct horse battery staple" scores high on entropy and length, but if it became famous enough to be widely circulated, it too could appear in breach databases. The point is that breach checking and strength checking address different threats. Strength tells you how hard the password is to guess from scratch. Breach checking tells you whether the exact password has already been captured and catalogued.

Both checks matter, and neither replaces the other. The breach checker in this tool shows you both simultaneously: the strength meter evaluates the password's inherent complexity, while the breach database lookup determines whether that specific string has already been compromised.

What To Do When You Find a Match

If your email or password appears in a breach, the immediate priority is changing that password everywhere it was used — not just on the site that was breached. Credential stuffing relies on password reuse, so a breach at one service is a potential entry point to every service that shares that password.

Enable two-factor authentication on every account that supports it, prioritizing email accounts and financial services first. Your email account is the recovery mechanism for almost every other service you use — if an attacker gains access to your email, they can reset passwords across dozens of other accounts. SMS-based 2FA is better than nothing, but an authenticator app is more secure.

Consider using a password manager to generate and store unique, cryptographically random passwords for every service. A randomly generated 16-character password containing letters, numbers, and symbols is effectively immune to both dictionary attacks and breach matching, because it has never appeared anywhere before. This is the sustainable solution to breach exposure: when every password is unique and random, a breach at one service compromises exactly one account, not your entire digital life.

The Limits of Offline Checking

The tool on this page demonstrates the k-anonymity methodology using a local dataset of commonly breached passwords and a domain-based heuristic for email checking. This lets you see exactly how the hashing and prefix-matching process works without any network requests. However, the HIBP database at the time of writing contains over 10 billion compromised passwords and 12 billion breached email addresses — a scope impossible to replicate offline.

For comprehensive real-world checking, the live Have I Been Pwned API implements the same k-anonymity protocol described here. Your password is never transmitted. The API has been independently audited and is widely trusted by the security community. The offline tool in this article gives you the mechanism; the live API gives you the coverage.

Data breaches are not going away. The economics of poorly secured databases, the value of credential data on underground markets, and the persistent human tendency to reuse passwords across services create a structural problem that no single fix resolves. What you can do is know whether your specific credentials have already been captured — and change them before the damage compounds.

FAQ

Does this tool send my password or email to a server?
No. Your email or password is hashed with SHA-1 entirely inside your browser using the Web Crypto API. Only the first 5 characters of the resulting hash are relevant for the k-anonymity check — and even those are only used locally in the offline version on this page. Your plaintext input and full hash never leave your device.
What is k-anonymity and why does it matter for breach checking?
K-anonymity is a privacy technique that lets you check whether your credential appears in a breach database without revealing the credential itself. Your browser hashes your input with SHA-1 and sends only the first 5 hex characters (the 'prefix') to the API. The server returns all hashes with that prefix — potentially hundreds of matches. Your browser then checks locally whether your full hash is in the returned list. Because 5 hex characters can match over a million different inputs, the server cannot determine which specific password or email you were checking.
What should I do if my email or password is found in a breach?
Change the compromised password immediately on every site where you used it — not just the site that was breached. Enable two-factor authentication (2FA) on all important accounts, especially email and financial services. Use a password manager to generate unique random passwords for each site going forward. Monitor your accounts for unauthorized activity and check your credit report if financial data may have been exposed.
Why does a 'strong' password still show up in breach databases?
Password strength measures entropy — how hard a password is to guess from scratch. Breach databases contain actual passwords that were captured from real systems, regardless of how complex they appeared. A password like 'P@ssw0rd1' is technically complex but appeared in so many breaches that it is in every attacker's wordlist. A truly safe password must be both strong (high entropy) and unique (never used before in any breach). This is why randomly generated passwords from a password manager are the most secure approach.
Is SHA-1 secure enough for this use case?
SHA-1 has known weaknesses for digital signatures and certificate applications, but those weaknesses do not apply to the HIBP breach-checking use case. Here, SHA-1 is used as a one-way fingerprint to anonymize a lookup query — not to authenticate or verify identity. The k-anonymity prefix method works correctly with SHA-1 because: (1) the same input always produces the same hash, enabling matching; (2) the hash cannot be reversed to recover the original password; and (3) the 5-character prefix provides sufficient anonymization while allowing efficient database lookup. The HIBP database itself is built on SHA-1 hashes, so this approach is consistent with how the authoritative breach data is indexed.
How is a breach checker different from a password strength meter?
A password strength meter evaluates how difficult your password would be to guess through brute-force or dictionary attacks based on its length, character variety, and pattern complexity. A breach checker determines whether your exact password string has been captured in real-world data breaches and is now present in attacker databases. Both matter for different reasons: a weak password is vulnerable to guessing even if it was never breached; a strong-looking password may be completely compromised if it appeared in a large breach and is now in attacker wordlists. The best approach uses both: generate strong passwords that have never appeared in any breach.