diff --git a/quiche/quic/core/http/end_to_end_test.cc b/quiche/quic/core/http/end_to_end_test.cc
index d602f38..b304c3d 100644
--- a/quiche/quic/core/http/end_to_end_test.cc
+++ b/quiche/quic/core/http/end_to_end_test.cc
@@ -5950,6 +5950,10 @@
 }
 
 TEST_P(EndToEndTest, LegacyVersionEncapsulation) {
+  if (GetQuicRestartFlag(quic_disable_legacy_version_encapsulation)) {
+    ASSERT_TRUE(Initialize());
+    return;
+  }
   if (!version_.HasLongHeaderLengths() ||
       override_server_connection_id_length_ > -1) {
     // Decapsulating Legacy Version Encapsulation packets from these versions
@@ -5968,6 +5972,10 @@
 }
 
 TEST_P(EndToEndTest, LegacyVersionEncapsulationWithMultiPacketChlo) {
+  if (GetQuicRestartFlag(quic_disable_legacy_version_encapsulation)) {
+    ASSERT_TRUE(Initialize());
+    return;
+  }
   if (!version_.HasLongHeaderLengths() ||
       override_server_connection_id_length_ > -1) {
     // Decapsulating Legacy Version Encapsulation packets from these versions
@@ -5996,6 +6004,10 @@
 }
 
 TEST_P(EndToEndTest, LegacyVersionEncapsulationWithVersionNegotiation) {
+  if (GetQuicRestartFlag(quic_disable_legacy_version_encapsulation)) {
+    ASSERT_TRUE(Initialize());
+    return;
+  }
   if (!version_.HasLongHeaderLengths() ||
       override_server_connection_id_length_ > -1) {
     // Decapsulating Legacy Version Encapsulation packets from these versions
@@ -6016,6 +6028,10 @@
 }
 
 TEST_P(EndToEndTest, LegacyVersionEncapsulationWithLoss) {
+  if (GetQuicRestartFlag(quic_disable_legacy_version_encapsulation)) {
+    ASSERT_TRUE(Initialize());
+    return;
+  }
   if (!version_.HasLongHeaderLengths() ||
       override_server_connection_id_length_ > -1) {
     // Decapsulating Legacy Version Encapsulation packets from these versions
diff --git a/quiche/quic/core/http/quic_spdy_client_session.cc b/quiche/quic/core/http/quic_spdy_client_session.cc
index 171e0c4..707281a 100644
--- a/quiche/quic/core/http/quic_spdy_client_session.cc
+++ b/quiche/quic/core/http/quic_spdy_client_session.cc
@@ -38,7 +38,11 @@
   crypto_stream_ = CreateQuicCryptoStream();
   if (config()->HasClientRequestedIndependentOption(kQLVE,
                                                     Perspective::IS_CLIENT)) {
-    connection()->EnableLegacyVersionEncapsulation(server_id_.host());
+    if (GetQuicRestartFlag(quic_disable_legacy_version_encapsulation)) {
+      QUIC_CODE_COUNT(quic_disable_legacy_version_encapsulation_client_init);
+    } else {
+      connection()->EnableLegacyVersionEncapsulation(server_id_.host());
+    }
   }
   QuicSpdyClientSessionBase::Initialize();
 }
diff --git a/quiche/quic/core/quic_dispatcher.cc b/quiche/quic/core/quic_dispatcher.cc
index 9166a93..3d97b1e 100644
--- a/quiche/quic/core/quic_dispatcher.cc
+++ b/quiche/quic/core/quic_dispatcher.cc
@@ -255,6 +255,7 @@
     QuicDispatcher* dispatcher,
     std::string legacy_version_encapsulation_inner_packet,
     const ReceivedPacketInfo& packet_info) {
+  QUICHE_DCHECK(!GetQuicRestartFlag(quic_disable_legacy_version_encapsulation));
   if (legacy_version_encapsulation_inner_packet.empty()) {
     // This CHLO did not contain the Legacy Version Encapsulation tag.
     return false;
@@ -587,16 +588,21 @@
         packet_info.version == LegacyVersionForEncapsulation()) {
       // This packet is using the Legacy Version Encapsulation version but the
       // corresponding session isn't, attempt extraction of inner packet.
-      ChloAlpnSniExtractor alpn_extractor;
-      if (ChloExtractor::Extract(packet_info.packet, packet_info.version,
-                                 config_->create_session_tag_indicators(),
-                                 &alpn_extractor,
-                                 server_connection_id.length())) {
-        if (MaybeHandleLegacyVersionEncapsulation(
-                this,
-                alpn_extractor.ConsumeLegacyVersionEncapsulationInnerPacket(),
-                packet_info)) {
-          return true;
+      if (GetQuicRestartFlag(quic_disable_legacy_version_encapsulation)) {
+        QUIC_CODE_COUNT(
+            quic_disable_legacy_version_encapsulation_dispatch_packet);
+      } else {
+        ChloAlpnSniExtractor alpn_extractor;
+        if (ChloExtractor::Extract(packet_info.packet, packet_info.version,
+                                   config_->create_session_tag_indicators(),
+                                   &alpn_extractor,
+                                   server_connection_id.length())) {
+          if (MaybeHandleLegacyVersionEncapsulation(
+                  this,
+                  alpn_extractor.ConsumeLegacyVersionEncapsulationInnerPacket(),
+                  packet_info)) {
+            return true;
+          }
         }
       }
     }
@@ -725,10 +731,17 @@
       QUICHE_DCHECK(
           parsed_chlo->legacy_version_encapsulation_inner_packet.empty() ||
           !packet_info->version.UsesTls());
-      if (MaybeHandleLegacyVersionEncapsulation(
-              this, parsed_chlo->legacy_version_encapsulation_inner_packet,
-              *packet_info)) {
-        return;
+      if (GetQuicRestartFlag(quic_disable_legacy_version_encapsulation)) {
+        if (!parsed_chlo->legacy_version_encapsulation_inner_packet.empty()) {
+          QUIC_CODE_COUNT(
+              quic_disable_legacy_version_encapsulation_process_header);
+        }
+      } else {
+        if (MaybeHandleLegacyVersionEncapsulation(
+                this, parsed_chlo->legacy_version_encapsulation_inner_packet,
+                *packet_info)) {
+          return;
+        }
       }
 
       ProcessChlo(*std::move(parsed_chlo), packet_info);
diff --git a/quiche/quic/core/quic_dispatcher_test.cc b/quiche/quic/core/quic_dispatcher_test.cc
index e5e6ea2..f8c169c 100644
--- a/quiche/quic/core/quic_dispatcher_test.cc
+++ b/quiche/quic/core/quic_dispatcher_test.cc
@@ -645,6 +645,9 @@
 }
 
 TEST_P(QuicDispatcherTestAllVersions, LegacyVersionEncapsulation) {
+  if (GetQuicRestartFlag(quic_disable_legacy_version_encapsulation)) {
+    return;
+  }
   if (!version_.HasLongHeaderLengths()) {
     // Decapsulating Legacy Version Encapsulation packets from these versions
     // is not currently supported in QuicDispatcher.
diff --git a/quiche/quic/core/quic_flags_list.h b/quiche/quic/core/quic_flags_list.h
index e7748cb..83d7446 100644
--- a/quiche/quic/core/quic_flags_list.h
+++ b/quiche/quic/core/quic_flags_list.h
@@ -17,6 +17,8 @@
 QUIC_FLAG(quic_restart_flag_quic_testonly_default_true, true)
 // If bytes in flight has dipped below 1.25*MaxBW in the last round, do not exit PROBE_UP due to excess queue buildup.
 QUIC_FLAG(quic_reloadable_flag_quic_bbr2_no_probe_up_exit_if_no_queue, true)
+// If true, QUIC Legacy Version Encapsulation will be disabled.
+QUIC_FLAG(quic_restart_flag_quic_disable_legacy_version_encapsulation, false)
 // If true, QUIC will default enable MTU discovery at server, with a target of 1450 bytes.
 QUIC_FLAG(quic_reloadable_flag_quic_enable_mtu_discovery_at_server, false)
 // If true, QuicGsoBatchWriter will support release time if it is available and the process has the permission to do so.
