the lookup
How It Works
A wallet can check whether a recovery phrase matches a known weak seed without exposing the phrase or its entropy.
The published datasets are large, but each check only needs a small fraction of that data.
the mechanism
Lookup privacy
The lookup starts with the wallet deriving the entropy from the recovery phrase, hashing it, and using only a short prefix of the hash to fetch the matching bucket. It then compares the bucket contents locally to determine whether it's vulnerable.
k-anonymity
Many keys, one bucket
Multiple hashes that share the same prefix are grouped into a single bucket. The wallet downloads that bucket and checks locally which entry, if any, matches.
Bucket contents
prefix length
The tradeoff
The number of bits in the prefix determines how many entries are grouped into each bucket.
A longer prefix creates more buckets with fewer entries in each one, reducing download size but also reducing the anonymity set. A shorter prefix does the opposite.
The control below shows this tradeoff using the 44,203,122,032 unique keys in the 256-bit Coldcard dataset.
dataset statistics
Current Datasets
| Dataset | Unique keys | Prefix | Buckets | Dataset size | Per check |
|---|---|---|---|---|---|
| Ill Bloom128-bit entropy | 151,001,028,608 | 20 bits | 1,048,576 | 4.53 TB | ≈4.32 MB |
| Coldcard256-bit entropy | 44,203,122,032 | 19 bits | 524,288 | 1.33 TB | ≈2.53 MB |
| Total published | 195,204,150,640 | — | — | 5.86 TB | — |