The anonymous network that
keeps bots out of platforms.

Each account is bound to a physical device. Report one as a bot and the device is blocked everywhere it is bound, including at platforms that never spotted it. The platforms stay anonymous to each other, while Debind users stay anonymous to the network itself.

9:41
Debind
Scan QR code
Nothing bound yet.
When a service asks you to, scan its QR code or follow its link.
Delete Debind from this phone and every binding is gone for good.
Verity
By tapping Bind you agree to bind this device to your Verity account.
Bind
Cancel
Bound to Verity
The binding stays until you break it, or until you delete Debind from this phone.
Close
Scan to download the app
How it works

Three steps, and only one of them belongs to your user.

No account with us, no third party in the loop. It costs your user one free app, once. Every platform after yours is a single scan.

01

You show a code

A QR code or a link, tied to one signup attempt. That tie is what makes the token useless in anyone else’s login.

02

The phone signs it

Debind makes a key in the phone’s secure hardware and has the manufacturer attest it. Your user confirms at the lock screen; the app posts the token to your callback itself.

03

You keep a handle

Redeem it once and the handle is yours. Store it next to the account and re-check it on every login, at no extra cost.

The network

One service catches a bot. The device takes that verdict to every other one.

Nothing on our side records that two bindings sit on the same phone, which is why the phone has to carry the finding itself. The next platform learns that one handle is marked and gets no story with it: not who said so, not what happened, not where else that device is bound.

A phone in the centre, six services around it. One of them reports; the line to the phone turns red, then the lines to the other five, and then all six break. Marketplace Exchange Gaming Dating Social Casino reports a bot

If a bot is detected, the report goes from one binding to the device, and from the device to all the others.

REPORT

A platform reports a handle

Nothing goes with it. No evidence, no case file, no name; there is nowhere to put one.

MARK

The device is marked

Every platform holding that device finds its own handle marked, in its own system. No value passes between them.

STOP

No more tokens, anywhere

The mark lives on the device maker’s servers rather than in the app, so a reinstall never touches it. A first one can be lifted once, a second never.

For developers

Two calls in your signup path, and a feed that finds you.

Both binding calls come back with an Ed25519 signature that the SDK checks before your code sees the result, so a compromised connection cannot tell your server a comfortable lie.

Nothing of yours on our side.

No user records with us means nothing of yours to lose if we are ever breached. You keep the handle next to the account; we keep a key that is meaningless without it. Two things live on your side because we must not hold them: the route the app posts the token to, and your own table of binding events.

Get a key
signup.ts
import { createDebind } from "@debind/sdk"

const debind = createDebind({
  baseUrl: "https://api.debind.app",
  apiKey: process.env.DEBIND_KEY,
  history: myHistoryTable,
})

// Once, when the app has posted the token to your callback.
const { binding } = await debind.claim(userId, token, session)
await db.users.update(userId, { handle: binding.handle })

// On every login. Three answers, three different reactions.
const { binding: seen } = await debind.verify(userId, handle)
if (seen.botMarked) await account.review(userId)
else if (!seen.valid) await account.requireRelink(userId)
// live = signed inside your window. A phone in a drawer looks like this too.
else if (!seen.live) await account.stepUp(userId)

// Someone caught this phone — another service, or you.
const stop = debind.onEvent(
  (e) => account.suspendByHandle(e.handle),
  { cursor: myEventCursor },
)

The SDK comes with the key.

Questions

Three questions worth asking first.

If yours isn’t here, write to us.

How anonymous are the users, really?

The app never asks for a name, an email or a number, and there is no account to create. What leaves the phone is a key its own hardware made, a signature from the company that built it, and the store country of the download. You get back one opaque value and a handful of timestamps. Every platform holds a different value for the same phone, so two of you comparing notes would find nothing in common, and neither can we: no table on our side groups the bindings that share a device.

Why is joining worth it for any platform?

Every account now has a phone behind it, and that hurdle alone works for every member from the start. On top of it, one report ends the device on every platform it reached, and on every platform it was going to. That lowers the cost for everyone and makes the product better for their users, and it compounds: two reports exclude a device from the network for good, and the more members there are, the sooner those two arrive.

What about device farms?

Here a caught bot costs a phone, not a fresh signup. The report lands on the device: the first kills that binding and marks the phone, the second retires it from the network for good, and no factory reset brings it back. One account on that phone or fifty, same bill. Every platform’s own bot detection now works for all of them, so a hit anywhere ends the phone everywhere. The more places a bot works, the sooner one of them catches it. Bot operations live on scale, and the more they scale, the faster the hardware burns.