Skip to content

Playground

Everything below runs the same distillate build you would install, in this tab, over keys generated on the spot. Nothing is simulated and no numbers are hard-coded.

Up to 100,000. Past that the playground refuses rather than freeze the tab.

Binary Fuse ignores this; its rate is fixed by fingerprint width.

Inserted keys are key-0 through key-9999. Trymiss-22, which none of them ever saw.

Both Bloom filters take it. Binary Fuse is static and cannot, which is the trade it makes for its size.

StructureKeys heldNot foundBits/keySizeMeasured rateLast query
Classic Bloomdistillate/bloom
Blocked Bloomdistillate/blocked
Binary Fuse 8distillate/fuse

A false positive is the filter working, not a bug. These structures trade exactness for space: a key that was never inserted can still answer yes, at roughly the target rate. What they never do is the reverse.

Not found is zero, and stays zero. That column counts inserted keys the filter cannot find. It is guaranteed to be zero by how these structures are built, not a lucky property of this sample: a key that was added always answers yes. The measured rate is the opposite direction, counted over 20,000 keys that were never inserted, and it is an estimate, so expect it within roughly a factor of two of the target at these sample sizes.

For how to pick between these three, seeChoosing a structure. For what a target rate costs in memory at your capacity, see thesizing calculator.