Check if your email or password has been compromised in known data breaches
Three checks live on this page, and they work in genuinely different ways. The email check asks breach databases whether an address appears in known incidents. The domain check does the same for every address at a domain you control. The password check asks whether a specific password appears in breach corpora without ever sending the password anywhere. That last distinction is the one worth reading carefully before you type anything, so it is covered first.
This is the question every security-conscious person asks, and it deserves a mechanical answer rather than a reassurance.
When you type into the password box, the tool waits until you have stopped typing for half a second, then does the following, entirely in your browser:
crypto.subtle.digest). Nothing has been transmitted at this point.api.pwnedpasswords.com/range/{prefix}. It also sets the Add-Padding header, which asks the service to pad the response with decoy entries so that response size cannot be used to infer anything about your prefix.That design is called a k-anonymity range query. The server answering the request learns a 5-character hash prefix and nothing else. It never sees your password, never sees your full hash, and cannot tell which of the many candidates sharing that prefix you were asking about. It also has no idea whether your particular one was in the returned set, because the comparison happens on your machine after the response arrives.
Two honest caveats. First, SHA-1 is used here because that is the format the public corpus is indexed in — it is a lookup key, not a security control, and the prefix scheme is what provides the privacy. Second, the check tells you whether a password string has appeared in a breach corpus. It cannot tell you whether your account was the source. A common password will show an enormous count simply because thousands of unrelated people chose it.
If the password is found, the tool shows the number of times it appeared and caps the strength rating at Weak regardless of how complex the string looks. That cap is deliberate and it is the most important behaviour on the page. A password that appears in a breach list is on the wordlist attackers try first. Its character composition is irrelevant once it is published — a fourteen-character mixed-case string with symbols that has leaked is weaker in practice than a plain unleaked passphrase.
Found counts are bucketed into severity bands so you can gauge the exposure at a glance:
| Times seen in breach data | Severity shown |
|---|---|
| 10,000 or more | Critical |
| 1,000 – 9,999 | High |
| 100 – 999 | Medium |
| 1 – 99 | Low |
Even the Low band means change it. A count of one means the exact string is in a published list, and published lists get fed into credential-stuffing tooling.
Alongside the breach lookup the tool scores composition: length is weighted most heavily, with bonuses at 8, 12 and 16 characters, plus credit for numbers and for symbols, and a penalty for recognisable sequences like 123, abc, qwerty or the word password. It is a rough heuristic to steer you toward a better replacement, not a rigorous entropy calculation, and it never overrides a breach finding.
If you want to see the mechanism work before trusting it with something real, type password. It will come back found, with a large count. Then type a freshly generated random string; it should come back clean.
The email tab works differently and the page says so explicitly, with a consent step you must click through before anything is sent. There is no k-anonymity trick available for email lookups — the address is sent to our server, which queries breach databases on your behalf and returns a merged answer.
What gets queried:
| Source | Role | When |
|---|---|---|
| XposedOrNot | Two endpoints — an email check and a breach-analytics call — for incidents containing the address | Every email lookup |
| LeakCheck (public endpoint) | Independent second opinion on which breaches list the address | Every email lookup |
| Have I Been Pwned breach catalogue | Metadata enrichment only — description, breach date, verification status and which data classes were exposed for each named incident | For every breach name the sources return |
| BreachDirectory | Optional additional source | Only when explicitly requested and configured |
The HIBP row is worth being precise about, because it is easy to misread. The tool does not ask Have I Been Pwned whether your address is breached — it uses HIBP’s public catalogue of breach records to describe incidents the other sources named. So if XposedOrNot reports a hit against a given breach, the description, date and list of exposed data classes you see come from that catalogue. Findings from multiple sources are merged and deduplicated so one incident does not appear twice under two spellings, and the result records which sources actually responded.
The corollary matters: coverage is not complete and no tool’s is. Breach databases index the incidents that have been collected and processed. Data that was stolen and never published, published somewhere the aggregators do not reach, or leaked too recently to be ingested, will not appear. A clean result means “not in these sources today”. It does not mean “never exposed”, and it should not be read as an all-clear.
Results are cached, so re-checking the same address returns the stored answer instead of re-querying the upstream services. The result panel shows when it was checked, and a re-check button forces a fresh lookup when you want current data.
Each breach is listed with its name, the affected domain, the breach date, how many accounts the incident affected overall, and the data classes exposed — the field that actually drives your response. The tool highlights the categories that change what you should do next:
An old breach with only an email address in it needs no emergency response. A recent breach with credentials in it needs action today. Sorting your findings by that distinction is the whole job; the list is there to let you do it quickly rather than to alarm you.
A printable report can be generated from the result for attaching to a ticket or handing to a client. Producing it asks for an email address first.
The domain tab checks a whole domain rather than a single mailbox — the question “which of my users appear in breach data” rather than “does my address appear”. It is served by a single XposedOrNot domain endpoint and requires an API key to be configured. The page checks for that capability when it loads and simply hides the tab if domain lookups are unavailable, so you are not offered a check that will fail. If the tab is not showing, that is why.
You should only run this against a domain you are responsible for. Enumerating breached accounts at somebody else’s organisation is reconnaissance, not research.
Is my password logged when I use the password tab? No. It never leaves the browser tab — only the first five characters of its SHA-1 hash are transmitted, and the matching is done locally. That is verifiable from the network requests the page makes.
Is my email address logged? The address is sent to the breach databases described above in order to be checked, which is unavoidable for this kind of lookup, and the page asks you to confirm before doing it. Results are cached so that repeat checks do not re-query those services.
Why does the email check take a few seconds? It queries several external services in sequence and respects their rate limits rather than hammering them. The delay is deliberate.
My address shows no breaches — am I safe? You are not in these sources today. Aggregators do not have every incident, and recent ones take time to appear. Unique passwords and MFA protect you regardless of what any checker returns.
Should I check a password I currently use? Yes — that is the intended use, and the range-query design exists precisely so that checking a live password is safe. If it comes back found, change it before you close the tab.
Data breaches happen constantly—major companies like LinkedIn, Adobe, and Dropbox have all had user data stolen. This tool lets you check if your email address or username appears in known data breaches.
Enter your email address or username, and the tool queries databases of known breached credentials. If your information appears in a breach, you'll see which incidents exposed your data and when they occurred.
Our breach checker queries multiple independent breach databases to check if your email has appeared in known data breaches. For password checks, we use a privacy-preserving technique called k-anonymity — your actual password is never sent. Only the first 5 characters of its hash are used to query the database, and the matching happens entirely in your browser.