diff --git a/czi-format/czi-parser/czi_file.cpp b/czi-format/czi-parser/czi_file.cpp
index 4c6854f4c8d9e079bc58513782b821d17fbe5791..5f8273828d5cffdebe3ab675f0fce92c05baf0ed 100644
--- a/czi-format/czi-parser/czi_file.cpp
+++ b/czi-format/czi-parser/czi_file.cpp
@@ -414,6 +414,10 @@ void CziFile::test_rle_encode() const
     float dataSize, dataZSize, rleDataSize, rleDataZSize, ratio, ratioZ;
     float overall = 0;
     float overallZ = 0;
+
+    size_t totalSize = 0;
+    size_t totalRleSize = 0;
+    size_t totalRleSizeZ = 0;
     for (size_t i = 0; i < subBlockDirectory.entries.size(); i++)
     {
         auto data = get_image_data(i, false);
@@ -433,11 +437,18 @@ void CziFile::test_rle_encode() const
         overall += ratio;
         overallZ += ratioZ;
 
-        printf("Subblock %-3i Compression ratios: Normal: %8f Z-Ordered: %8f\n", (int)i, ratio, ratioZ);
+        totalSize += dataSize;
+        totalRleSize += rleDataSize;
+        totalRleSizeZ += rleDataZSize;
+        if (ratio > 1 || ratioZ > 1)
+            printf("Subblock %-3i Compression ratios: Normal: %8f Z-Ordered: %8f\n", (int)i, ratio, ratioZ);
+        else
+            printf("Subblock %-3i Compression ratios: Normal: %8f Z-Ordered: %8f\n", (int)i, ratio, ratioZ);
     }
     float dataCount = (float)subBlockDirectory.entries.size();
     overall /= dataCount;
     overallZ /= dataCount;
 
     printf("Overall Normal %8f Z-Ordered: %8f\n", overall, overallZ);
+    printf("Original size: %8lu B Rle size: %8lu B RleZOrder size: %8lu B\n", totalSize, totalRleSize, totalRleSizeZ);
 }
\ No newline at end of file
diff --git a/czi-format/czi-parser/czi_parser.cpp b/czi-format/czi-parser/czi_parser.cpp
index ca2788c6bb19108fd4557ca022ee2b334cea9674..d7ce062cf20d6e9f77653abb4bd6fa633b84ec86 100644
--- a/czi-format/czi-parser/czi_parser.cpp
+++ b/czi-format/czi-parser/czi_parser.cpp
@@ -1,6 +1,7 @@
 #include "czi_parser.h"
-CziParser::CziParser()
+CziParser::CziParser(bool parseMetadata)
 {
+    this->parseMetadata = parseMetadata;
 }
 CziParser::~CziParser()
 {
@@ -106,13 +107,22 @@ MetadataSegment CziParser::parse_metadata(BinaryFileStream &cziStream, const lon
     // Skipping 248 spared bytes.
     cziStream.move_by(248);
 
-    //printf("Want to consume xml bytes\n");
-    result.xmlString = utf8bytes_to_string(cziStream.consume_bytes(result.xmlSize));
-    //printf("%s\n", result.xmlString.c_str());
+    if (this->parseMetadata)
+    {
+        result.xmlString = utf8bytes_to_string(cziStream.consume_bytes(result.xmlSize));
+        //printf("%s\n", result.xmlString.c_str());
 
 #if VERBOSE_PARSER
-    printf("Parsed Metadata, containing string of length: %li.\n", result.xmlString.size());
+        printf("Parsed Metadata, containing string of length: %li.\n", result.xmlString.size());
 #endif // VERBOSE_PARSER
+    }
+    else
+    {
+        cziStream.move_by(result.xmlSize);
+#if VERBOSE_PARSER
+        printf("Parsed Metadata, skipping reading metadata bytes; parseMetadata=false.\n");
+#endif // VERBOSE_PARSER
+    }
 
     return result;
 }
@@ -274,10 +284,19 @@ SubBlockSegment CziParser::parse_subblock(BinaryFileStream &cziStream, const lon
     cziStream.move_by(distance);
 
     // Metadata bytes
-    auto metadataBytes = cziStream.consume_bytes(result.metadataSize);
-    result.metadataString = utf8bytes_to_string(metadataBytes);
-
-    parse_subblock_metadata(metadataBytes);
+    if (this->parseMetadata)
+    {
+        auto metadataBytes = cziStream.consume_bytes(result.metadataSize);
+        result.metadataString = utf8bytes_to_string(metadataBytes);
+        parse_subblock_metadata(metadataBytes);
+    }
+    else
+    {
+        cziStream.move_by(result.metadataSize);
+#if VERBOSE_PARSER
+        printf("Skipping reading metadata bytes.\n");
+#endif // VERBOSE_PARSER
+    }
 
     //printf("%s\n", result.metadataString.c_str());
     // Data bytes
diff --git a/czi-format/czi-parser/czi_parser.h b/czi-format/czi-parser/czi_parser.h
index 9e1fb15fcdf261e07ac7828c2979da7fd3efbcdb..144ad241ef9e14db99bc575236855ddf21ede374 100644
--- a/czi-format/czi-parser/czi_parser.h
+++ b/czi-format/czi-parser/czi_parser.h
@@ -7,6 +7,7 @@
 class CziParser
 {
 private:
+  bool parseMetadata;
   SegmentHeader parse_segment_header(BinaryFileStream &cziStream);
   FileHeaderSegment parse_file_header(BinaryFileStream &cziStream);
   MetadataSegment parse_metadata(BinaryFileStream &cziStream, const long position);
@@ -23,7 +24,7 @@ private:
   Dimension to_dimension_type(const std::vector<byte> &bytes);
 
 public:
-  CziParser();
+  CziParser(bool parseMetadata = true);
   ~CziParser();
   CziFile parse_czi_file(const std::string &file);
 };