Have I Been Pwned API
The value is the network, the data or the infrastructure. Keep paying.
A searchable index of addresses and passwords exposed in public breaches, with an API for checking an account or a password against it.
Do not build this — and be glad you cannot. Assembling a corpus of breached credentials means holding a large quantity of other people's stolen passwords, which is a liability rather than an asset. **The password half is already free and needs no key.** The range API is the part worth understanding, because the design is the lesson: You hash the password, send the **first five characters of the hash only**, and receive back every suffix in that bucket. You compare locally. The service never learns the password, never learns the full hash, and cannot tell which of the several hundred results you were asking about. That is k-anonymity, it costs nothing, and it means checking a password against the corpus is safe to do on every signup. WHAT TO BUILD AROUND IT - **Check every new and changed password against the range API.** One request, no key, and it does more for account security than any complexity rule ever written - If the check fails or times out, allow the password rather than blocking. A verification service being down must never stop somebody signing in - Cache the bucket briefly, since common passwords repeat - Never log the password, the hash, or the prefix - Say plainly in the interface why a password was rejected — 'this one has appeared in a breach' — because 'too weak' teaches nothing and is often wrong AND THE MIRROR, IF YOU CANNOT CALL OUT - The password hash set is published for download. Mirror it, index it, and run the same range lookup locally - That is a large file and a table, it costs nothing to run, and it removes the external dependency entirely for an application that must not make outbound calls WHAT NOT TO DO - Do not collect breach dumps yourself. Holding them is a legal exposure, storing them safely is a real burden, and there is no version of this that ends well for a small company - Do not check somebody's address against a breach list and tell them without a reason to. That is their news to receive from a service they chose THE DOMAIN HALF Monitoring whether addresses at your own domain appear in a new breach is a genuine service and it is what the subscription is for. There is no substitute, because there is no corpus. THE ONE-LINE VERSION The corpus is unbuildable and unwise to hold. Use the free range API on every password change — or mirror the hash set locally — and pay only if you need domain monitoring.
What you lose
- A corpus of breach data assembled over a decade, which nobody else has and which you should not assemble
- A range API that lets you check a password without ever sending it, which is the design worth studying
- Notification when a domain you own appears in a new breach
- Somebody else holding data that would be a liability for you to hold
If you would rather not build
- The range API itself, which is free and needs no key
- The published hash set, mirrored locally for an application with no outbound access
- zxcvbn, for the strength half that is not about breaches
The escape hatch
open source · no votes, no paid placement
zxcvbn-ts
$0Realistic password strength estimation, run locally with no service.
zxcvbn-ts/zxcvbnfree · open source
PwnedPasswordsDownloader
$0Downloads the password hash set for a local mirror.
HaveIBeenPwned/PwnedPasswordsDownloaderfree · open source
Why this verdict
our own opinion · changed only by a person
18/100
Verdict no at 18: the corpus cannot and should not be rebuilt. The entry is really about the range API design, which is free, teachable, and the single cheapest improvement to any signup form.
History
tracked since 14 Aug 2026 · nothing is ever overwritten
Nothing recorded yet. This chart fills in once the page has visitors, votes or prompt copies — it will not draw a flat line to look busy.
Questions about Have I Been Pwned API
answered from the record above
Is Have I Been Pwned API free?
No — the plan we track is $3.95 a month. API access from $3.95/month for a low request rate; the password range API is free and unauthenticated.
Can you replace Have I Been Pwned API by building your own?
KEEP IT. The value is the network, the data or the infrastructure. Keep paying. Replacement score 18 out of 100, build time longer than it saves. Read what you lose before you decide.
How much does Have I Been Pwned API cost?
$3.95 a month on RK 1 — $47.40 a year. Recorded 14 Aug 2026.
What do you lose by replacing Have I Been Pwned API?
A corpus of breach data assembled over a decade, which nobody else has and which you should not assemble; A range API that lets you check a password without ever sending it, which is the design worth studying; Notification when a domain you own appears in a new breach; Somebody else holding data that would be a liability for you to hold. If any of those carry weight for you, keep paying.
Is there an open-source alternative to Have I Been Pwned API?
Yes: zxcvbn-ts, PwnedPasswordsDownloader. The prompt on this page is for when you want it your way instead.
Related entries
same category first, most replaced first
Every week, something stops being worth paying for.
New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.
free forever · no tracking pixel · stored here, never passed to anyone

