diff --git a/quic/core/quic_versions.cc b/quic/core/quic_versions.cc
index 4b10cb7..157d2a4 100644
--- a/quic/core/quic_versions.cc
+++ b/quic/core/quic_versions.cc
@@ -360,7 +360,6 @@
       return version;
     }
   }
-  if (GetQuicReloadableFlag(quic_fix_print_draft_version)) {
     for (const ParsedQuicVersion& version : AllSupportedVersions()) {
       if (version.UsesHttp3() &&
           version_string ==
@@ -368,7 +367,6 @@
         return version;
       }
     }
-  }
   // Reading from the client so this should not be considered an ERROR.
   QUIC_DLOG(INFO) << "Unsupported QUIC version string: \"" << version_string
                   << "\".";
@@ -563,16 +561,14 @@
   if (version == UnsupportedQuicVersion()) {
     return "0";
   }
-  if (GetQuicReloadableFlag(quic_fix_print_draft_version)) {
-    QUIC_RELOADABLE_FLAG_COUNT(quic_fix_print_draft_version);
-    if (version == ParsedQuicVersion::Draft29()) {
-      DCHECK(version.UsesHttp3());
-      return "draft29";
-    } else if (version == ParsedQuicVersion::Draft27()) {
-      DCHECK(version.UsesHttp3());
-      return "draft27";
-    }
+  if (version == ParsedQuicVersion::Draft29()) {
+    DCHECK(version.UsesHttp3());
+    return "draft29";
+  } else if (version == ParsedQuicVersion::Draft27()) {
+    DCHECK(version.UsesHttp3());
+    return "draft27";
   }
+
   return QuicVersionLabelToString(CreateQuicVersionLabel(version));
 }
 
diff --git a/quic/core/quic_versions_test.cc b/quic/core/quic_versions_test.cc
index 1eff47a..fa32de3 100644
--- a/quic/core/quic_versions_test.cc
+++ b/quic/core/quic_versions_test.cc
@@ -236,14 +236,10 @@
   EXPECT_EQ(ParsedQuicVersion::T050(), ParseQuicVersionString("T050"));
   EXPECT_EQ(ParsedQuicVersion::T050(), ParseQuicVersionString("h3-T050"));
   EXPECT_EQ(ParsedQuicVersion::Draft29(), ParseQuicVersionString("ff00001d"));
-  if (GetQuicReloadableFlag(quic_fix_print_draft_version)) {
-    EXPECT_EQ(ParsedQuicVersion::Draft29(), ParseQuicVersionString("draft29"));
-  }
+  EXPECT_EQ(ParsedQuicVersion::Draft29(), ParseQuicVersionString("draft29"));
   EXPECT_EQ(ParsedQuicVersion::Draft29(), ParseQuicVersionString("h3-29"));
   EXPECT_EQ(ParsedQuicVersion::Draft27(), ParseQuicVersionString("ff00001b"));
-  if (GetQuicReloadableFlag(quic_fix_print_draft_version)) {
-    EXPECT_EQ(ParsedQuicVersion::Draft27(), ParseQuicVersionString("draft27"));
-  }
+  EXPECT_EQ(ParsedQuicVersion::Draft27(), ParseQuicVersionString("draft27"));
   EXPECT_EQ(ParsedQuicVersion::Draft27(), ParseQuicVersionString("h3-27"));
 
   for (const ParsedQuicVersion& version : AllSupportedVersions()) {
@@ -407,17 +403,8 @@
   EXPECT_EQ("Q046", ParsedQuicVersionToString(ParsedQuicVersion::Q046()));
   EXPECT_EQ("Q050", ParsedQuicVersionToString(ParsedQuicVersion::Q050()));
   EXPECT_EQ("T050", ParsedQuicVersionToString(ParsedQuicVersion::T050()));
-  if (GetQuicReloadableFlag(quic_fix_print_draft_version)) {
-    EXPECT_EQ("draft27",
-              ParsedQuicVersionToString(ParsedQuicVersion::Draft27()));
-    EXPECT_EQ("draft29",
-              ParsedQuicVersionToString(ParsedQuicVersion::Draft29()));
-  } else {
-    EXPECT_EQ("ff00001b",
-              ParsedQuicVersionToString(ParsedQuicVersion::Draft27()));
-    EXPECT_EQ("ff00001d",
-              ParsedQuicVersionToString(ParsedQuicVersion::Draft29()));
-  }
+  EXPECT_EQ("draft27", ParsedQuicVersionToString(ParsedQuicVersion::Draft27()));
+  EXPECT_EQ("draft29", ParsedQuicVersionToString(ParsedQuicVersion::Draft29()));
 
   ParsedQuicVersionVector versions_vector = {ParsedQuicVersion::Q043()};
   EXPECT_EQ("Q043", ParsedQuicVersionVectorToString(versions_vector));
