diff --git a/http2/decoder/http2_frame_decoder_listener.cc b/http2/decoder/http2_frame_decoder_listener.cc
index 4cbce66..5503f0e 100644
--- a/http2/decoder/http2_frame_decoder_listener.cc
+++ b/http2/decoder/http2_frame_decoder_listener.cc
@@ -7,7 +7,7 @@
 namespace http2 {
 
 bool Http2FrameDecoderNoOpListener::OnFrameHeader(
-    const Http2FrameHeader& header) {
+    const Http2FrameHeader& /*header*/) {
   return true;
 }
 
diff --git a/http2/decoder/http2_frame_decoder_listener_test_util.cc b/http2/decoder/http2_frame_decoder_listener_test_util.cc
index c1cee8b..dd2e7b0 100644
--- a/http2/decoder/http2_frame_decoder_listener_test_util.cc
+++ b/http2/decoder/http2_frame_decoder_listener_test_util.cc
@@ -26,7 +26,7 @@
   FAIL() << "OnDataStart: " << header;
 }
 
-void FailingHttp2FrameDecoderListener::OnDataPayload(const char* data,
+void FailingHttp2FrameDecoderListener::OnDataPayload(const char* /*data*/,
                                                      size_t len) {
   FAIL() << "OnDataPayload: len=" << len;
 }
@@ -45,7 +45,7 @@
   FAIL() << "OnHeadersPriority: " << priority;
 }
 
-void FailingHttp2FrameDecoderListener::OnHpackFragment(const char* data,
+void FailingHttp2FrameDecoderListener::OnHpackFragment(const char* /*data*/,
                                                        size_t len) {
   FAIL() << "OnHpackFragment: len=" << len;
 }
@@ -73,7 +73,7 @@
   FAIL() << "OnPadLength: trailing_length=" << trailing_length;
 }
 
-void FailingHttp2FrameDecoderListener::OnPadding(const char* padding,
+void FailingHttp2FrameDecoderListener::OnPadding(const char* /*padding*/,
                                                  size_t skipped_length) {
   FAIL() << "OnPadding: skipped_length=" << skipped_length;
 }
@@ -131,7 +131,7 @@
   FAIL() << "OnGoAwayStart: " << header << "; goaway: " << goaway;
 }
 
-void FailingHttp2FrameDecoderListener::OnGoAwayOpaqueData(const char* data,
+void FailingHttp2FrameDecoderListener::OnGoAwayOpaqueData(const char* /*data*/,
                                                           size_t len) {
   FAIL() << "OnGoAwayOpaqueData: len=" << len;
 }
@@ -154,12 +154,12 @@
          << "; value_length: " << value_length;
 }
 
-void FailingHttp2FrameDecoderListener::OnAltSvcOriginData(const char* data,
+void FailingHttp2FrameDecoderListener::OnAltSvcOriginData(const char* /*data*/,
                                                           size_t len) {
   FAIL() << "OnAltSvcOriginData: len=" << len;
 }
 
-void FailingHttp2FrameDecoderListener::OnAltSvcValueData(const char* data,
+void FailingHttp2FrameDecoderListener::OnAltSvcValueData(const char* /*data*/,
                                                          size_t len) {
   FAIL() << "OnAltSvcValueData: len=" << len;
 }
@@ -173,7 +173,7 @@
   FAIL() << "OnUnknownStart: " << header;
 }
 
-void FailingHttp2FrameDecoderListener::OnUnknownPayload(const char* data,
+void FailingHttp2FrameDecoderListener::OnUnknownPayload(const char* /*data*/,
                                                         size_t len) {
   FAIL() << "OnUnknownPayload: len=" << len;
 }
diff --git a/http2/decoder/http2_frame_decoder_test.cc b/http2/decoder/http2_frame_decoder_test.cc
index 410202f..c1825d4 100644
--- a/http2/decoder/http2_frame_decoder_test.cc
+++ b/http2/decoder/http2_frame_decoder_test.cc
@@ -131,7 +131,7 @@
   AssertionResult DecodePayloadAndValidateSeveralWays(
       quiche::QuicheStringPiece payload,
       const FrameParts& expected) {
-    auto validator = [&expected, this](const DecodeBuffer& input,
+    auto validator = [&expected, this](const DecodeBuffer& /*input*/,
                                        DecodeStatus status) -> AssertionResult {
       VERIFY_EQ(status, DecodeStatus::kDecodeDone);
       VERIFY_AND_RETURN_SUCCESS(VerifyCollected(expected));
@@ -175,7 +175,7 @@
   template <size_t N>
   AssertionResult DecodePayloadExpectingError(const char (&buf)[N],
                                               const FrameParts& expected) {
-    auto validator = [&expected, this](const DecodeBuffer& input,
+    auto validator = [&expected, this](const DecodeBuffer& /*input*/,
                                        DecodeStatus status) -> AssertionResult {
       VERIFY_EQ(status, DecodeStatus::kDecodeError);
       VERIFY_AND_RETURN_SUCCESS(VerifyCollected(expected));
diff --git a/http2/decoder/http2_structure_decoder_test.cc b/http2/decoder/http2_structure_decoder_test.cc
index c522c20..ccb02be 100644
--- a/http2/decoder/http2_structure_decoder_test.cc
+++ b/http2/decoder/http2_structure_decoder_test.cc
@@ -103,8 +103,8 @@
     // Validate that structure_ matches the expected value, if provided.
     Validator validator;
     if (expected != nullptr) {
-      validator = [expected, this](const DecodeBuffer& db,
-                                   DecodeStatus status) -> AssertionResult {
+      validator = [expected, this](const DecodeBuffer& /*db*/,
+                                   DecodeStatus /*status*/) -> AssertionResult {
         VERIFY_EQ(*expected, *structure_);
         return AssertionSuccess();
       };
diff --git a/http2/hpack/decoder/hpack_decoder_listener.cc b/http2/hpack/decoder/hpack_decoder_listener.cc
index e6bddf8..c1f7c8e 100644
--- a/http2/hpack/decoder/hpack_decoder_listener.cc
+++ b/http2/hpack/decoder/hpack_decoder_listener.cc
@@ -13,11 +13,11 @@
 HpackDecoderNoOpListener::~HpackDecoderNoOpListener() = default;
 
 void HpackDecoderNoOpListener::OnHeaderListStart() {}
-void HpackDecoderNoOpListener::OnHeader(const HpackString& name,
-                                        const HpackString& value) {}
+void HpackDecoderNoOpListener::OnHeader(const HpackString& /*name*/,
+                                        const HpackString& /*value*/) {}
 void HpackDecoderNoOpListener::OnHeaderListEnd() {}
 void HpackDecoderNoOpListener::OnHeaderErrorDetected(
-    quiche::QuicheStringPiece error_message) {}
+    quiche::QuicheStringPiece /*error_message*/) {}
 
 // static
 HpackDecoderNoOpListener* HpackDecoderNoOpListener::NoOpListener() {
diff --git a/http2/hpack/decoder/hpack_entry_decoder_listener.h b/http2/hpack/decoder/hpack_entry_decoder_listener.h
index ff75eeb..8872552 100644
--- a/http2/hpack/decoder/hpack_entry_decoder_listener.h
+++ b/http2/hpack/decoder/hpack_entry_decoder_listener.h
@@ -93,16 +93,16 @@
  public:
   ~HpackEntryDecoderNoOpListener() override {}
 
-  void OnIndexedHeader(size_t index) override {}
-  void OnStartLiteralHeader(HpackEntryType entry_type,
-                            size_t maybe_name_index) override {}
-  void OnNameStart(bool huffman_encoded, size_t len) override {}
-  void OnNameData(const char* data, size_t len) override {}
+  void OnIndexedHeader(size_t /*index*/) override {}
+  void OnStartLiteralHeader(HpackEntryType /*entry_type*/,
+                            size_t /*maybe_name_index*/) override {}
+  void OnNameStart(bool /*huffman_encoded*/, size_t /*len*/) override {}
+  void OnNameData(const char* /*data*/, size_t /*len*/) override {}
   void OnNameEnd() override {}
-  void OnValueStart(bool huffman_encoded, size_t len) override {}
-  void OnValueData(const char* data, size_t len) override {}
+  void OnValueStart(bool /*huffman_encoded*/, size_t /*len*/) override {}
+  void OnValueData(const char* /*data*/, size_t /*len*/) override {}
   void OnValueEnd() override {}
-  void OnDynamicTableSizeUpdate(size_t size) override {}
+  void OnDynamicTableSizeUpdate(size_t /*size*/) override {}
 };
 
 }  // namespace http2
diff --git a/http2/hpack/decoder/hpack_string_decoder.h b/http2/hpack/decoder/hpack_string_decoder.h
index cd25da4..a28783b 100644
--- a/http2/hpack/decoder/hpack_string_decoder.h
+++ b/http2/hpack/decoder/hpack_string_decoder.h
@@ -167,7 +167,7 @@
   // Returns true if the listener wants the decoding to continue, and
   // false otherwise, in which case status set.
   template <class Listener>
-  void OnStringStart(Listener* cb, DecodeStatus* status) {
+  void OnStringStart(Listener* cb, DecodeStatus* /*status*/) {
     // TODO(vasilvv): fail explicitly in case of truncation.
     remaining_ = static_cast<size_t>(length_decoder_.value());
     // Make callback so consumer knows what is coming.
diff --git a/http2/hpack/decoder/hpack_whole_entry_listener.cc b/http2/hpack/decoder/hpack_whole_entry_listener.cc
index 5003f11..02f3a7a 100644
--- a/http2/hpack/decoder/hpack_whole_entry_listener.cc
+++ b/http2/hpack/decoder/hpack_whole_entry_listener.cc
@@ -10,18 +10,18 @@
 
 HpackWholeEntryNoOpListener::~HpackWholeEntryNoOpListener() = default;
 
-void HpackWholeEntryNoOpListener::OnIndexedHeader(size_t index) {}
+void HpackWholeEntryNoOpListener::OnIndexedHeader(size_t /*index*/) {}
 void HpackWholeEntryNoOpListener::OnNameIndexAndLiteralValue(
-    HpackEntryType entry_type,
-    size_t name_index,
-    HpackDecoderStringBuffer* value_buffer) {}
+    HpackEntryType /*entry_type*/,
+    size_t /*name_index*/,
+    HpackDecoderStringBuffer* /*value_buffer*/) {}
 void HpackWholeEntryNoOpListener::OnLiteralNameAndValue(
-    HpackEntryType entry_type,
-    HpackDecoderStringBuffer* name_buffer,
-    HpackDecoderStringBuffer* value_buffer) {}
-void HpackWholeEntryNoOpListener::OnDynamicTableSizeUpdate(size_t size) {}
-void HpackWholeEntryNoOpListener::OnHpackDecodeError(HpackDecodingError error) {
-}
+    HpackEntryType /*entry_type*/,
+    HpackDecoderStringBuffer* /*name_buffer*/,
+    HpackDecoderStringBuffer* /*value_buffer*/) {}
+void HpackWholeEntryNoOpListener::OnDynamicTableSizeUpdate(size_t /*size*/) {}
+void HpackWholeEntryNoOpListener::OnHpackDecodeError(
+    HpackDecodingError /*error*/) {}
 
 // static
 HpackWholeEntryNoOpListener* HpackWholeEntryNoOpListener::NoOpListener() {
