Skip to content
← All tools

Password Breach Check

Check whether a password appears in known data breaches. It is hashed in your browser and never sent anywhere.

Typing a password into a website to ask whether it is safe sounds like the worst idea in security. It would be, if the password were sent. It is not. Your browser hashes it, sends the first five characters of that hash to Have I Been Pwned, and compares the answer here — so the service learns a bucket of roughly two thousand hashes and cannot tell which one you asked about. Below: how that works, and why you should still be sceptical of any page asking for a password.

How k-anonymity makes this safe

The method is called a k-anonymity range query, and it works like this:

Your browser computes the SHA-1 hash of the password. For password that is 5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8. Only the first five characters — 5BAA6 — are sent. Have I Been Pwned replies with every hash suffix it holds beginning with that prefix — around two thousand of them — along with how many times each has appeared in a breach. Your browser looks for its own suffix in that list.

The service therefore sees a request for a bucket containing thousands of different passwords, with no way to know which one interested you — and no way to reverse any of them, because it only ever held hashes. Nothing is sent to this site at all: the request goes from your browser straight to their API.

Why the response is padded

There is a subtler leak that the prefix trick alone does not close. If responses vary in size, someone watching your encrypted traffic can learn something from how many bytes came back, even without reading them. The request asks for padding, which adds decoy entries with a count of zero so responses are a similar size regardless of the answer. Those decoys are discarded here before anything is matched, so they cannot produce a false result.

What "not found" does not mean

A password absent from the database has not been shown to be safe. It has only failed to appear in the breach corpora one organisation happens to hold. Breaches go unpublished for years. A password can also be catastrophically weak and still be absent — pick something nobody has used before and it will not be in any list, which tells you nothing about how quickly it could be guessed.

Length and uniqueness decide your actual exposure, and neither is measurable here. A found result is strong evidence to change something. A not-found result is weak evidence of anything.

Should you type a password into a website at all?

Generally, no — and the instinct that made you hesitate is a good one worth keeping. What makes this case defensible is that the claim is verifiable rather than promised: open your browser's network tab and you will see exactly one outbound request, containing five hexadecimal characters. If a page asking for your password cannot be checked that way, do not use it.

If you would still rather not, the honest alternative is to skip the check and simply change any password you reuse. Reuse is the thing that turns someone else's breach into your problem, and it needs no tool to diagnose.

Related tools

For the rest of what your connection exposes: VPN leak test, tracking and cookie status, browser details, and the full connection report.

Privacy note

The password is held in the page's memory only for as long as it takes to hash it, and is never written to storage, never logged, and never sent to this site. The input is marked so password managers do not offer to save it. Closing or reloading the page discards everything.

Common questions

Is it safe to type my password into this page?
The password is hashed in your browser and never transmitted. Only the first five characters of the hash are sent to Have I Been Pwned, which identifies a bucket of roughly two thousand hashes rather than yours. You can verify this yourself in your browser's network tab: one outbound request, five hexadecimal characters. Nothing is sent to this site.
How does the k-anonymity password check work?
Your browser computes the SHA-1 hash of the password and sends only its first five characters. The service returns every hash suffix it holds starting with that prefix — around two thousand — and your browser looks for its own suffix locally. The service cannot tell which password you asked about and cannot reverse the hashes it stores.
Does 'not found' mean my password is safe?
No. It means the password has not appeared in the breach corpora Have I Been Pwned holds. Breaches go unpublished for years, and a password can be trivially guessable while still being absent from every list. Length and uniqueness determine your real exposure and neither is measured by this check.
What should I do if my password was found?
Change it everywhere you have used it, starting with email and banking. A password in these corpora is already in the dictionaries used for credential-stuffing attacks, which try known passwords against many accounts. The number shown is how many separate breach records contain it.
Where does the breach data come from?
Have I Been Pwned, run by Troy Hunt, which aggregates passwords from publicly disclosed data breaches. It stores only SHA-1 hashes and occurrence counts, never the passwords themselves or the accounts they belonged to.
Why does the response include padding?
Without it, the size of the encrypted response could leak information to someone observing your traffic even though they cannot read it. Padding adds decoy entries with a count of zero so responses are a similar size regardless of the answer. Those entries are discarded before any match is made.
Is my password stored or logged anywhere?
No. It exists in the page's memory only long enough to be hashed, is never written to storage or logged, and is discarded when you clear the field, reload, or close the tab. The input is also marked so password managers do not offer to save it.
Why does this use SHA-1, which is considered broken?
SHA-1's weakness is collision resistance, which matters for signatures, not for this. Here it is a lookup key against a fixed corpus, and Have I Been Pwned's dataset is published in SHA-1 form. Nothing about the check depends on SHA-1 being collision-resistant.

Also Check These Tools

🌐What Is My IPInstantly see your public IPv4 and/or IPv6 address with ISP, city, and country details.📡What Is My ISPSee which Internet Service Provider (ISP) or organization is associated with your public IP and connection.🔷What Is My DNSLook up public DNS A and AAAA records using Cloudflare DNS over HTTPS, with honest labeling about resolvers.📶Ping & Latency TestMeasure HTTPS round-trip time from your browser to this site—a practical “ping” when ICMP is not available in the web sandbox.🛜What Is My Network TypeDetect whether you are on Wi-Fi, cellular, or ethernet, with effective speed class and estimated bandwidth from the Network Information API.🔐What Is My VPN / Am I Leaking?Compare your HTTP-visible public IP with WebRTC ICE reflexive addresses to spot possible IP leaks, plus plain-language DNS leak context.Internet Speed TestTest your download and upload speeds with a fast, accurate in-browser speed test.🖥️What Is My BrowserDetect your browser name, version, engine, and operating system in one click.🔍What Is My User AgentSee the full user agent string your browser sends to websites and servers.🍪What Is My Cookie / Tracking StatusSee whether first-party cookies and web storage work, what DNT/GPC report, and visible cookie surface—plus honest limits for HttpOnly and cross-site tracking.📐What Is My Screen ResolutionCheck your screen resolution, color depth, pixel ratio, and viewport size.🎮What Is My WebGL / GPUDetect your GPU renderer, vendor, WebGL version, and key graphics capabilities directly from your browser — no plugins required.📍What Is My LocationDiscover your approximate location based on your IP address including city and country.🕐What Is My TimezoneFind your current timezone, UTC offset, and local time with DST status.🎞️What Is My Refresh RateMeasure your monitor’s real refresh rate (Hz) live in the browser — see whether 60, 120, 144 or 240 Hz is actually active, with frame-time stability.🔌Open Port CheckerCheck which TCP ports are open, closed, or filtered on your public IP address — no software needed.🚦ISP Throttling TestCheck whether your ISP is slowing video: compares download speed to Netflix’s servers against generic servers and says whether it looks like shaping or congestion.✉️Email Header AnalyzerTrace an email's delivery path and check SPF, DKIM and DMARC. Headers are parsed in your browser, never uploaded.👻Invisible Character DetectorFind and remove zero-width characters, unusual spaces and hidden Unicode in any text. Checked in your browser.🎬Video File InspectorRead a video file's codec, resolution, duration and bitrate without uploading it. The file never leaves your browser.📋Connection ReportRun every network, browser and device check at once and copy one plain-text summary into a support ticket.🔀CGNAT TestFind out whether your ISP puts you behind carrier-grade NAT — the usual reason a forwarded port stays unreachable.