Is Anybody Using This Password?

You've been told not to reuse passwords.
But what about everyone else?

How It Works

Step 1. Hashing happens in your browser

The moment you submit a password, your browser converts it into a SHA-256 hash using the Web Crypto API. This is a one-way transformation, the hash cannot be reversed to recover your original password (without a lot of work). The raw password never leaves your device.

Here is the exact function that runs in your browser when you submit a password:

async function sha256Hex(input) {
  const encoded = new TextEncoder().encode(input);
  const buffer  = await crypto.subtle.digest("SHA-256", encoded);
  return Array.from(new Uint8Array(buffer))
    .map((b) => b.toString(16).padStart(2, "0"))
    .join("");
}

Step 2. Only the hash is transmitted

The SHA-256 hash travels over HTTPS to our server. No plaintext password is ever sent, logged, or stored anywhere on our network. Even in the unlikely event of a network interception, the hash alone is useless without the original password.

Step 3. The hash is looked up in the database

Our database contains SHA-256 hashes of passwords that appear in publicly known data-breach collections and previously submitted passwords. We query whether your hash is present and return a count. The database stores only hashes. Never plaintext passwords.

A note on trust

You're taking our word that the page does what it says. If you're cautious (and you should be), you can view the full client-side source. I provide it unminified and readable. The hashing function above is sha256Hex() and is called immediately before any network request is made.

General reminder: Entering real passwords into random websites is a bad habit, even this one. Use a password manager and unique passwords for anything that actually matters!