diff --git a/http2/adapter/nghttp2_adapter_test.cc b/http2/adapter/nghttp2_adapter_test.cc
index 0d9ee33..ced8a82 100644
--- a/http2/adapter/nghttp2_adapter_test.cc
+++ b/http2/adapter/nghttp2_adapter_test.cc
@@ -3039,11 +3039,9 @@
 
   const int64_t result = adapter->ProcessBytes(frames);
   EXPECT_EQ(frames.size(), result);
-  EXPECT_EQ(TestFrameSequence::MetadataBlockForPayload(
-                "Example connection metadata in multiple frames"),
+  EXPECT_EQ("Example connection metadata in multiple frames",
             absl::StrJoin(visitor.GetMetadata(0), ""));
-  EXPECT_EQ(TestFrameSequence::MetadataBlockForPayload(
-                "Some stream metadata that's also sent in multiple frames"),
+  EXPECT_EQ("Some stream metadata that's also sent in multiple frames",
             absl::StrJoin(visitor.GetMetadata(1), ""));
 }
 
diff --git a/http2/adapter/oghttp2_adapter_test.cc b/http2/adapter/oghttp2_adapter_test.cc
index 302e745..5a82c97 100644
--- a/http2/adapter/oghttp2_adapter_test.cc
+++ b/http2/adapter/oghttp2_adapter_test.cc
@@ -2443,11 +2443,9 @@
 
   const int64_t result = adapter->ProcessBytes(frames);
   EXPECT_EQ(frames.size(), static_cast<size_t>(result));
-  EXPECT_EQ(TestFrameSequence::MetadataBlockForPayload(
-                "Example connection metadata in multiple frames"),
+  EXPECT_EQ("Example connection metadata in multiple frames",
             absl::StrJoin(visitor.GetMetadata(0), ""));
-  EXPECT_EQ(TestFrameSequence::MetadataBlockForPayload(
-                "Some stream metadata that's also sent in multiple frames"),
+  EXPECT_EQ("Some stream metadata that's also sent in multiple frames",
             absl::StrJoin(visitor.GetMetadata(1), ""));
 }
 
diff --git a/http2/adapter/test_frame_sequence.cc b/http2/adapter/test_frame_sequence.cc
index 4a99807..074e3dd 100644
--- a/http2/adapter/test_frame_sequence.cc
+++ b/http2/adapter/test_frame_sequence.cc
@@ -157,18 +157,16 @@
 TestFrameSequence& TestFrameSequence::Metadata(Http2StreamId stream_id,
                                                absl::string_view payload,
                                                bool multiple_frames) {
-  const std::string encoded_payload = MetadataBlockForPayload(payload);
   if (multiple_frames) {
-    const size_t pos = encoded_payload.size() / 2;
+    const size_t pos = payload.size() / 2;
     frames_.push_back(absl::make_unique<spdy::SpdyUnknownIR>(
-        stream_id, kMetadataFrameType, 0, encoded_payload.substr(0, pos)));
+        stream_id, kMetadataFrameType, 0, std::string(payload.substr(0, pos))));
     frames_.push_back(absl::make_unique<spdy::SpdyUnknownIR>(
         stream_id, kMetadataFrameType, kMetadataEndFlag,
-        encoded_payload.substr(pos)));
+        std::string(payload.substr(pos))));
   } else {
     frames_.push_back(absl::make_unique<spdy::SpdyUnknownIR>(
-        stream_id, kMetadataFrameType, kMetadataEndFlag,
-        std::move(encoded_payload)));
+        stream_id, kMetadataFrameType, kMetadataEndFlag, std::string(payload)));
   }
   return *this;
 }
@@ -186,16 +184,6 @@
   return result;
 }
 
-std::string TestFrameSequence::MetadataBlockForPayload(
-    absl::string_view payload) {
-  // Encode the payload using a header block.
-  spdy::SpdyHeaderBlock block;
-  block["example-payload"] = payload;
-  spdy::HpackEncoder encoder;
-  encoder.DisableCompression();
-  return encoder.EncodeHeaderBlock(block);
-}
-
 }  // namespace test
 }  // namespace adapter
 }  // namespace http2
diff --git a/http2/adapter/test_frame_sequence.h b/http2/adapter/test_frame_sequence.h
index 88f0af9..0eddf41 100644
--- a/http2/adapter/test_frame_sequence.h
+++ b/http2/adapter/test_frame_sequence.h
@@ -61,8 +61,6 @@
 
   std::string Serialize();
 
-  static std::string MetadataBlockForPayload(absl::string_view);
-
  private:
   std::string preface_;
   std::vector<std::unique_ptr<spdy::SpdyFrameIR>> frames_;
