{
  "slug": "counting-bloom-filter",
  "term": "Counting Bloom filter",
  "aliases": [],
  "definition": "A counting Bloom filter tracks approximate set membership with counters that support insertions and deletions through matched increments and decrements.",
  "note": "Correct deletion requires an outstanding insertion, not merely a positive lookup. Exact counters preserve colliding live keys, but clipping overflow loses multiplicity and can later yield false negatives. [summary-cache]\n\nCounter width and overflow policy are part of the contract. Keeping a saturated cell positive until rebuilding avoids decrementing an unknown count, at the cost of extra positives. These policies are distinct from intentional history decay. [hesela]",
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "related": [
    "bloom-filter",
    "stable-bloom-filter",
    "cuckoo-filter"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-17",
  "citations": [
    {
      "id": "summary-cache",
      "title": "Fan, Cao, Almeida and Broder. Summary Cache: A Scalable Wide-Area Web Cache Sharing Protocol. ToN 8(3), 2000. DOI: 10.1109/90.851975.",
      "url": "https://www.cs.utexas.edu/~lam/395t/papers/summarycacheToN.pdf",
      "accessed": "2026-10-17"
    },
    {
      "id": "hesela",
      "title": "Hesela. Filter retention and counting: fixed-address counterexamples.",
      "url": "https://hesela.com/analyses/bloom-filters-lsm-read-cost/#retention",
      "accessed": "2026-10-17"
    }
  ],
  "provenance": [
    "The linked examples use explicit addresses and decay schedules; they do not estimate production error rates. [hesela]"
  ]
}
