diff --git a/quic/core/quic_connection_id.cc b/quic/core/quic_connection_id.cc
index a8cb4c0..19a35eb 100644
--- a/quic/core/quic_connection_id.cc
+++ b/quic/core/quic_connection_id.cc
@@ -71,6 +71,10 @@
   memcpy(data_long_, data, length_);
 }
 
+QuicConnectionId::QuicConnectionId(const absl::Span<const uint8_t>& data)
+    : QuicConnectionId(reinterpret_cast<const char*>(data.data()),
+                       data.length()) {}
+
 QuicConnectionId::~QuicConnectionId() {
   if (length_ > sizeof(data_short_)) {
     free(data_long_);
@@ -101,9 +105,7 @@
   return data_long_;
 }
 
-uint8_t QuicConnectionId::length() const {
-  return length_;
-}
+uint8_t QuicConnectionId::length() const { return length_; }
 
 void QuicConnectionId::set_length(uint8_t length) {
   char temporary_data[sizeof(data_short_)];
@@ -131,9 +133,7 @@
   length_ = length;
 }
 
-bool QuicConnectionId::IsEmpty() const {
-  return length_ == 0;
-}
+bool QuicConnectionId::IsEmpty() const { return length_ == 0; }
 
 size_t QuicConnectionId::Hash() const {
   static const QuicConnectionIdHasher hasher = QuicConnectionIdHasher();
@@ -170,9 +170,7 @@
   return memcmp(data(), v.data(), length_) < 0;
 }
 
-QuicConnectionId EmptyQuicConnectionId() {
-  return QuicConnectionId();
-}
+QuicConnectionId EmptyQuicConnectionId() { return QuicConnectionId(); }
 
 static_assert(kQuicDefaultConnectionIdLength == sizeof(uint64_t),
               "kQuicDefaultConnectionIdLength changed");
diff --git a/quic/core/quic_connection_id.h b/quic/core/quic_connection_id.h
index a0669d7..4b39ba2 100644
--- a/quic/core/quic_connection_id.h
+++ b/quic/core/quic_connection_id.h
@@ -8,6 +8,7 @@
 #include <string>
 #include <vector>
 
+#include "absl/types/span.h"
 #include "quic/platform/api/quic_export.h"
 
 namespace quic {
@@ -47,6 +48,7 @@
 
   // Creates a connection ID from network order bytes.
   QuicConnectionId(const char* data, uint8_t length);
+  QuicConnectionId(const absl::Span<const uint8_t>& data);
 
   // Creates a connection ID from another connection ID.
   QuicConnectionId(const QuicConnectionId& other);
@@ -89,8 +91,7 @@
 
   // operator<< allows easily logging connection IDs.
   friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(
-      std::ostream& os,
-      const QuicConnectionId& v);
+      std::ostream& os, const QuicConnectionId& v);
 
   bool operator==(const QuicConnectionId& v) const;
   bool operator!=(const QuicConnectionId& v) const;
diff --git a/quic/core/quic_connection_id_test.cc b/quic/core/quic_connection_id_test.cc
index 3effb34..3f944e3 100644
--- a/quic/core/quic_connection_id_test.cc
+++ b/quic/core/quic_connection_id_test.cc
@@ -60,6 +60,33 @@
   EXPECT_EQ(kNewLength, connection_id2.length());
 }
 
+TEST_F(QuicConnectionIdTest, SpanData) {
+  QuicConnectionId connection_id = QuicConnectionId({0x01, 0x02, 0x03});
+  EXPECT_EQ(connection_id.length(), 3);
+  QuicConnectionId empty_connection_id =
+      QuicConnectionId(absl::Span<uint8_t>());
+  EXPECT_EQ(empty_connection_id.length(), 0);
+  QuicConnectionId connection_id2 = QuicConnectionId({
+      0x01,
+      0x02,
+      0x03,
+      0x04,
+      0x05,
+      0x06,
+      0x07,
+      0x08,
+      0x09,
+      0x0a,
+      0x0b,
+      0x0c,
+      0x0d,
+      0x0e,
+      0x0f,
+      0x10,
+  });
+  EXPECT_EQ(connection_id2.length(), 16);
+}
+
 TEST_F(QuicConnectionIdTest, DoubleConvert) {
   QuicConnectionId connection_id64_1 = test::TestConnectionId(1);
   QuicConnectionId connection_id64_2 = test::TestConnectionId(42);
