whorlid

Live, in this tab

This is what your browser gives away.

whorlid read the signals below and turned them into an id. No request left your machine. Nothing was stored.

Visitor id

reading your device…

·

Confidence counts how many high-entropy probes answered. It is coverage, not a probability that two visits are the same device.

The signals behind it

SignalValueTook
Collecting…

Rows marked id feed the hash. The rest are reported but left out, because they change without the device changing: a rotated phone, a browser update, a flight to another timezone.

What this id cannot do

It moves when your browser does.
A major update, a new GPU driver, or a hardened privacy mode can shift enough signals to mint a fresh id. A local hash has no memory of your last visit, so it cannot tell drift from a different device.
It is not proof of anything.
Every signal here is public JavaScript output. It can be replayed or fabricated by anyone willing to script a browser. Treat the id as one risk input, never as an authentication factor.
It does not know who you are.
This is a device description, not a person. There is no account, no cookie, and no request: reload the page and this tab starts from nothing again.

Use it

npm install @whorlid/whorlid
import { load } from '@whorlid/whorlid';

const wh = await load();
const { visitorId, confidence } = await wh.get();

MIT licensed, no runtime dependencies, works with no backend at all.

When drift matters

Recognising a device across visits is a server problem: it needs the previous signals to compare against, so one drifting probe does not read as a new device. That is what the hosted API does, and it is the same call with a key.

const wh = await load({ publicKey: 'pk_live_…' });
See the WhorlID API