diff --git a/quinn-proto/src/config/mod.rs b/quinn-proto/src/config/mod.rs
index ef7d62312..19ff3a66f 100644
--- a/quinn-proto/src/config/mod.rs
+++ b/quinn-proto/src/config/mod.rs
@@ -13,12 +13,16 @@ use thiserror::Error;
 
 #[cfg(any(feature = "rustls-aws-lc-rs", feature = "rustls-ring"))]
 use crate::crypto::rustls::{configured_provider, QuicServerConfig};
+#[cfg(feature = "fastbloom")]
+use crate::BloomTokenLog;
+#[cfg(not(feature = "fastbloom"))]
+use crate::NoneTokenLog;
 use crate::{
     cid_generator::{ConnectionIdGenerator, HashedConnectionIdGenerator},
     crypto::{self, HandshakeTokenKey, HmacKey},
     shared::ConnectionId,
-    Duration, NoneTokenLog, NoneTokenStore, RandomConnectionIdGenerator, SystemTime, TokenLog,
-    TokenStore, VarInt, VarIntBoundsExceeded, DEFAULT_SUPPORTED_VERSIONS, MAX_CID_SIZE,
+    Duration, NoneTokenStore, RandomConnectionIdGenerator, SystemTime, TokenLog, TokenStore,
+    VarInt, VarIntBoundsExceeded, DEFAULT_SUPPORTED_VERSIONS, MAX_CID_SIZE,
 };
 
 mod transport;
@@ -487,8 +491,12 @@ impl ValidationTokenConfig {
 
     /// Set a custom [`TokenLog`]
     ///
-    /// Defaults to [`NoneTokenLog`], which makes the server ignore all address validation tokens
-    /// (that is, tokens originating from NEW_TOKEN frames--retry tokens are not affected).
+    /// If the `fastbloom` feature is enabled (which it is by default), defaults to a default
+    /// [`BloomTokenLog`], which is suitable for most internet applications.
+    ///
+    /// If the `fastbloom` feature is disabled, defaults to [`NoneTokenLog`], which makes the
+    /// server ignore all address validation tokens (that is, tokens originating from NEW_TOKEN
+    /// frames--retry tokens are not affected).
     pub fn log(&mut self, log: Arc<dyn TokenLog>) -> &mut Self {
         self.log = log;
         self
@@ -507,9 +515,13 @@ impl ValidationTokenConfig {
 
 impl Default for ValidationTokenConfig {
     fn default() -> Self {
+        #[cfg(feature = "fastbloom")]
+        let log = Arc::new(BloomTokenLog::default());
+        #[cfg(not(feature = "fastbloom"))]
+        let log = Arc::new(NoneTokenLog);
         Self {
             lifetime: Duration::from_secs(2 * 7 * 24 * 60 * 60),
-            log: Arc::new(NoneTokenLog),
+            log,
             sent: 0,
         }
     }