configurable dump disabled by default
diff --git a/theta/include/compact_theta_sketch_parser.hpp b/theta/include/compact_theta_sketch_parser.hpp
index dbb25f5..a06924e 100644
--- a/theta/include/compact_theta_sketch_parser.hpp
+++ b/theta/include/compact_theta_sketch_parser.hpp
@@ -36,7 +36,7 @@
     const uint64_t* entries;
   };
 
-  static compact_theta_sketch_data parse(const void* ptr, size_t size, uint64_t seed);
+  static compact_theta_sketch_data parse(const void* ptr, size_t size, uint64_t seed, bool dump_on_error = false);
 
 private:
   // offsets are in sizeof(type)
diff --git a/theta/include/compact_theta_sketch_parser_impl.hpp b/theta/include/compact_theta_sketch_parser_impl.hpp
index 38c5412..c546ba7 100644
--- a/theta/include/compact_theta_sketch_parser_impl.hpp
+++ b/theta/include/compact_theta_sketch_parser_impl.hpp
@@ -26,9 +26,9 @@
 namespace datasketches {
 
 template<bool dummy>
-auto compact_theta_sketch_parser<dummy>::parse(const void* ptr, size_t size, uint64_t seed) -> compact_theta_sketch_data {
+auto compact_theta_sketch_parser<dummy>::parse(const void* ptr, size_t size, uint64_t seed, bool dump_on_error) -> compact_theta_sketch_data {
   if (size < 8) throw std::invalid_argument("at least 8 bytes expected, actual " + std::to_string(size)
-      + ", sketch dump: " + hex_dump(reinterpret_cast<const uint8_t*>(ptr), size));
+      + (dump_on_error ? (", sketch dump: " + hex_dump(reinterpret_cast<const uint8_t*>(ptr), size)) : ""));
   checker<true>::check_serial_version(reinterpret_cast<const uint8_t*>(ptr)[COMPACT_SKETCH_SERIAL_VERSION_BYTE], COMPACT_SKETCH_SERIAL_VERSION);
   checker<true>::check_sketch_type(reinterpret_cast<const uint8_t*>(ptr)[COMPACT_SKETCH_TYPE_BYTE], COMPACT_SKETCH_TYPE);
   uint64_t theta = theta_constants::MAX_THETA;
@@ -49,9 +49,10 @@
   const size_t entries_start_u64 = has_theta ? COMPACT_SKETCH_ENTRIES_ESTIMATION_U64 : COMPACT_SKETCH_ENTRIES_EXACT_U64;
   const uint64_t* entries = reinterpret_cast<const uint64_t*>(ptr) + entries_start_u64;
   const size_t expected_size_bytes = (entries_start_u64 + num_entries) * sizeof(uint64_t);
-  if (size < expected_size_bytes)
-    throw std::invalid_argument(std::to_string(expected_size_bytes)
-        + " bytes expected, actual " + std::to_string(size) + ", sketch dump: " + hex_dump(reinterpret_cast<const uint8_t*>(ptr), size));
+  if (size < expected_size_bytes) {
+    throw std::invalid_argument(std::to_string(expected_size_bytes) + " bytes expected, actual " + std::to_string(size)
+        + (dump_on_error ? (", sketch dump: " + hex_dump(reinterpret_cast<const uint8_t*>(ptr), size)) : ""));
+  }
   const bool is_ordered = reinterpret_cast<const uint8_t*>(ptr)[COMPACT_SKETCH_FLAGS_BYTE] & (1 << COMPACT_SKETCH_IS_ORDERED_FLAG);
   return {false, is_ordered, seed_hash, num_entries, theta, entries};
 }
diff --git a/theta/include/theta_sketch.hpp b/theta/include/theta_sketch.hpp
index 3f6f2b7..1bca459 100644
--- a/theta/include/theta_sketch.hpp
+++ b/theta/include/theta_sketch.hpp
@@ -413,7 +413,7 @@
    * @param seed the seed for the hash function that was used to create the sketch
    * @return an instance of the sketch
    */
-  static const wrapped_compact_theta_sketch_alloc wrap(const void* bytes, size_t size, uint64_t seed = DEFAULT_SEED);
+  static const wrapped_compact_theta_sketch_alloc wrap(const void* bytes, size_t size, uint64_t seed = DEFAULT_SEED, bool dump_on_error = false);
 
 private:
   bool is_empty_;
diff --git a/theta/include/theta_sketch_impl.hpp b/theta/include/theta_sketch_impl.hpp
index ec08b03..1bee921 100644
--- a/theta/include/theta_sketch_impl.hpp
+++ b/theta/include/theta_sketch_impl.hpp
@@ -488,8 +488,8 @@
 {}
 
 template<typename A>
-const wrapped_compact_theta_sketch_alloc<A> wrapped_compact_theta_sketch_alloc<A>::wrap(const void* bytes, size_t size, uint64_t seed) {
-  auto data = compact_theta_sketch_parser<true>::parse(bytes, size, seed);
+const wrapped_compact_theta_sketch_alloc<A> wrapped_compact_theta_sketch_alloc<A>::wrap(const void* bytes, size_t size, uint64_t seed, bool dump_on_error) {
+  auto data = compact_theta_sketch_parser<true>::parse(bytes, size, seed, dump_on_error);
   return wrapped_compact_theta_sketch_alloc(data.is_empty, data.is_ordered, data.seed_hash, data.num_entries, data.theta, data.entries);
 }