Password Breach Checker
Check if a password has been leaked
This check does contact a third party. Your browser hashes the password locally and sends only the first five characters of the SHA-1 digest to api.pwnedpasswords.com, which returns a list of matching suffixes for comparison in the page. Neither the plaintext nor the full hash is transmitted, and this site stores nothing, but the request is a real outbound call visible in your network activity.
Press Check and the page hashes what you typed with SHA-1, sends the first five characters of that digest to api.pwnedpasswords.com, and receives back every hash suffix beginning with those same five characters — typically a few hundred lines. The comparison then happens in your browser: if the remaining 35 characters appear in that list you get the number of times the string has turned up in collected breaches, and if they do not you get a clean result. The plaintext is never part of the request and neither is the rest of its hash. This prefix-range design is called k-anonymity, and it is the arrangement security researchers asked the operator of that database to adopt. A miss means the string is absent from those corpora, not that it is a good password.
Check whether a password has appeared in known data breaches using the k-anonymity API — only a short hash prefix is ever sent, so the password itself never leaves your device.
Runs In Your Browser
Runs in your browser, but this tool contacts a third-party service to do its job. The overview above says exactly what is sent.
How to use Password Breach Checker
Type or paste the password into the Password field and press Check; the eye button reveals what is in the field.
The browser computes the SHA-1 digest through the Web Crypto API and keeps the trailing 35 characters in the page.
Only the leading 5 characters become a path on https://api.pwnedpasswords.com/range/, and the suffix list comes back.
Read the verdict panel: the occurrence count when a suffix matched, or a not-found message when none did.
- The plaintext and the full digest both stay in the page; only the first 5 hex characters of the hash cross the network.
- Matching happens locally against the returned suffix list, so the browser is the only party that ever holds the complete hash.
- A hit reports the occurrence count from the corpus rather than a bare yes or no, which hints at how far the string has spread.
- Hashing runs through crypto.subtle.digest, so the browser's native SHA-1 does the work rather than a hand-rolled routine.
- A cautious user checks a password they used years ago before reusing it anywhere, and changes it when a hit comes back.
- An administrator runs a short list of candidate shared-secret passwords through the check before proposing one to a team.
- A developer who found a plaintext credential in a config file gets a count for how widely circulated that exact string already is.