diff --git a/quic/core/tls_client_handshaker.cc b/quic/core/tls_client_handshaker.cc
index f70bc1c..886edb7 100644
--- a/quic/core/tls_client_handshaker.cc
+++ b/quic/core/tls_client_handshaker.cc
@@ -209,15 +209,17 @@
 
   // Enable ALPS only for versions that use HTTP/3 frames.
   for (const std::string& alpn_string : alpns) {
-    ParsedQuicVersion version = ParseQuicVersionString(alpn_string);
-    if (!version.IsKnown() || !version.UsesHttp3()) {
-      continue;
-    }
-    if (SSL_add_application_settings(
-            ssl(), reinterpret_cast<const uint8_t*>(alpn_string.data()),
-            alpn_string.size(), nullptr, /* settings_len = */ 0) != 1) {
-      QUIC_BUG(quic_bug_10576_7) << "Failed to enable ALPS.";
-      return false;
+    for (const ParsedQuicVersion& version : session()->supported_versions()) {
+      if (!version.UsesHttp3() || AlpnForVersion(version) != alpn_string) {
+        continue;
+      }
+      if (SSL_add_application_settings(
+              ssl(), reinterpret_cast<const uint8_t*>(alpn_string.data()),
+              alpn_string.size(), nullptr, /* settings_len = */ 0) != 1) {
+        QUIC_BUG(quic_bug_10576_7) << "Failed to enable ALPS.";
+        return false;
+      }
+      break;
     }
   }
 
