diff --git a/quiche/http2/hpack/tools/hpack_block_builder.h b/quiche/http2/hpack/tools/hpack_block_builder.h
index c385a7d..e1000d7 100644
--- a/quiche/http2/hpack/tools/hpack_block_builder.h
+++ b/quiche/http2/hpack/tools/hpack_block_builder.h
@@ -76,8 +76,7 @@
 
   // Appends a varint, with the specified high_bits above the prefix of the
   // varint.
-  void AppendHighBitsAndVarint(uint8_t high_bits,
-                               uint8_t prefix_length,
+  void AppendHighBitsAndVarint(uint8_t high_bits, uint8_t prefix_length,
                                uint64_t varint);
 
   // Append the start of an HPACK entry for the specified type, with the
diff --git a/quiche/http2/tools/http2_frame_builder.cc b/quiche/http2/tools/http2_frame_builder.cc
index 9fae37f..e0ce2e2 100644
--- a/quiche/http2/tools/http2_frame_builder.cc
+++ b/quiche/http2/tools/http2_frame_builder.cc
@@ -17,8 +17,7 @@
 namespace http2 {
 namespace test {
 
-Http2FrameBuilder::Http2FrameBuilder(Http2FrameType type,
-                                     uint8_t flags,
+Http2FrameBuilder::Http2FrameBuilder(Http2FrameType type, uint8_t flags,
                                      uint32_t stream_id) {
   AppendUInt24(0);  // Frame payload length, unknown so far.
   Append(type);
@@ -26,9 +25,7 @@
   AppendUInt31(stream_id);
 }
 
-Http2FrameBuilder::Http2FrameBuilder(const Http2FrameHeader& v) {
-  Append(v);
-}
+Http2FrameBuilder::Http2FrameBuilder(const Http2FrameHeader& v) { Append(v); }
 
 void Http2FrameBuilder::Append(absl::string_view s) {
   absl::StrAppend(&buffer_, s);
@@ -43,9 +40,7 @@
   buffer_.append(num_zero_bytes, zero);
 }
 
-void Http2FrameBuilder::AppendUInt8(uint8_t value) {
-  AppendBytes(&value, 1);
-}
+void Http2FrameBuilder::AppendUInt8(uint8_t value) { AppendBytes(&value, 1); }
 
 void Http2FrameBuilder::AppendUInt16(uint16_t value) {
   value = htons(value);
@@ -158,8 +153,7 @@
   }
 }
 
-void Http2FrameBuilder::WriteBytesAt(const void* data,
-                                     uint32_t num_bytes,
+void Http2FrameBuilder::WriteBytesAt(const void* data, uint32_t num_bytes,
                                      size_t offset) {
   WriteAt(absl::string_view(static_cast<const char*>(data), num_bytes), offset);
 }
diff --git a/quiche/http2/tools/random_decoder_test.cc b/quiche/http2/tools/random_decoder_test.cc
index 134dda8..d76facc 100644
--- a/quiche/http2/tools/random_decoder_test.cc
+++ b/quiche/http2/tools/random_decoder_test.cc
@@ -23,9 +23,7 @@
 
 RandomDecoderTest::RandomDecoderTest() = default;
 
-bool RandomDecoderTest::StopDecodeOnDone() {
-  return stop_decode_on_done_;
-}
+bool RandomDecoderTest::StopDecodeOnDone() { return stop_decode_on_done_; }
 
 DecodeStatus RandomDecoderTest::DecodeSegments(DecodeBuffer* original,
                                                const SelectSize& select_size) {
@@ -73,8 +71,7 @@
 // Decode |original| multiple times, with different segmentations, validating
 // after each decode, returning on the first failure.
 AssertionResult RandomDecoderTest::DecodeAndValidateSeveralWays(
-    DecodeBuffer* original,
-    bool return_non_zero_on_first,
+    DecodeBuffer* original, bool return_non_zero_on_first,
     const Validator& validator) {
   const uint32_t original_remaining = original->Remaining();
   HTTP2_VLOG(1) << "DecodeAndValidateSeveralWays - Start, remaining = "
diff --git a/quiche/http2/tools/random_decoder_test.h b/quiche/http2/tools/random_decoder_test.h
index deb2744..060a578 100644
--- a/quiche/http2/tools/random_decoder_test.h
+++ b/quiche/http2/tools/random_decoder_test.h
@@ -112,8 +112,7 @@
   // buffer, with the cursor advanced as far as has been consumed by the decoder
   // and returns validator's result.
   ::testing::AssertionResult DecodeSegmentsAndValidate(
-      DecodeBuffer* original,
-      const SelectSize& select_size,
+      DecodeBuffer* original, const SelectSize& select_size,
       const Validator& validator) {
     DecodeStatus status = DecodeSegments(original, select_size);
     return validator(*original, status);
