Bloom filters are a space-efficient probabilistic data structure for representing a set in order to support membership queries. A Bloom filter represents a set as a bit array and uses hash functions to map elements to bit positions, setting the bits. To query if an element is in the set, its bit positions are checked. False positives are possible but false negatives are not. Bloom filters enable representing a set using less space than a regular hash table while still supporting fast membership queries. They find many applications including caching, network routing, and database optimizations.