diff --git a/quic/core/quic_versions.cc b/quic/core/quic_versions.cc
index 6daac15..f8acb5b 100644
--- a/quic/core/quic_versions.cc
+++ b/quic/core/quic_versions.cc
@@ -275,16 +275,8 @@
 }
 
 ParsedQuicVersionVector AllSupportedVersions() {
-  ParsedQuicVersionVector supported_versions;
-  for (HandshakeProtocol handshake_protocol : kSupportedHandshakeProtocols) {
-    for (QuicTransportVersion transport_version : kSupportedTransportVersions) {
-      if (ParsedQuicVersionIsValid(handshake_protocol, transport_version)) {
-        supported_versions.push_back(
-            ParsedQuicVersion(handshake_protocol, transport_version));
-      }
-    }
-  }
-  return supported_versions;
+  return ParsedQuicVersionVector(kSupportedVersions.begin(),
+                                 kSupportedVersions.end());
 }
 
 ParsedQuicVersionVector CurrentSupportedVersions() {
diff --git a/quic/core/quic_versions.h b/quic/core/quic_versions.h
index 6adf748..6d6456f 100644
--- a/quic/core/quic_versions.h
+++ b/quic/core/quic_versions.h
@@ -290,6 +290,17 @@
 static const HandshakeProtocol kSupportedHandshakeProtocols[] = {
     PROTOCOL_QUIC_CRYPTO, PROTOCOL_TLS1_3};
 
+static const std::array<ParsedQuicVersion, 8> kSupportedVersions = {
+    ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_99),
+    ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_50),
+    ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_49),
+    ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_48),
+    ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_46),
+    ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_43),
+    ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_99),
+    ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_50),
+};
+
 typedef std::vector<QuicTransportVersion> QuicTransportVersionVector;
 
 // Returns a vector of QUIC versions in kSupportedTransportVersions.
diff --git a/quic/core/quic_versions_test.cc b/quic/core/quic_versions_test.cc
index 81f9940..cbaab95 100644
--- a/quic/core/quic_versions_test.cc
+++ b/quic/core/quic_versions_test.cc
@@ -478,6 +478,21 @@
   }
 }
 
+TEST_F(QuicVersionsTest, SupportedVersionsHasCorrectList) {
+  size_t index = 0;
+  for (HandshakeProtocol handshake_protocol : kSupportedHandshakeProtocols) {
+    for (QuicTransportVersion transport_version : kSupportedTransportVersions) {
+      SCOPED_TRACE(index);
+      if (ParsedQuicVersionIsValid(handshake_protocol, transport_version)) {
+        EXPECT_EQ(kSupportedVersions[index],
+                  ParsedQuicVersion(handshake_protocol, transport_version));
+        index++;
+      }
+    }
+  }
+  EXPECT_EQ(kSupportedVersions.size(), index);
+}
+
 }  // namespace
 }  // namespace test
 }  // namespace quic
