diff --git a/quiche/quic/core/qpack/fuzzer/qpack_encoder_stream_receiver_fuzzer.cc b/quiche/quic/core/qpack/fuzzer/qpack_encoder_stream_receiver_fuzzer.cc
index 8030bb9..53aaa63 100644
--- a/quiche/quic/core/qpack/fuzzer/qpack_encoder_stream_receiver_fuzzer.cc
+++ b/quiche/quic/core/qpack/fuzzer/qpack_encoder_stream_receiver_fuzzer.cc
@@ -22,8 +22,7 @@
   NoOpDelegate() : error_detected_(false) {}
   ~NoOpDelegate() override = default;
 
-  void OnInsertWithNameReference(bool /*is_static*/,
-                                 uint64_t /*name_index*/,
+  void OnInsertWithNameReference(bool /*is_static*/, uint64_t /*name_index*/,
                                  absl::string_view /*value*/) override {}
   void OnInsertWithoutNameReference(absl::string_view /*name*/,
                                     absl::string_view /*value*/) override {}
diff --git a/quiche/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc b/quiche/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc
index 2d7cd88..e24a647 100644
--- a/quiche/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc
+++ b/quiche/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc
@@ -259,16 +259,13 @@
     virtual void OnHeaderBlockDecoded(QuicStreamId stream_id) = 0;
   };
 
-  VerifyingDecoder(QuicStreamId stream_id,
-                   Visitor* visitor,
+  VerifyingDecoder(QuicStreamId stream_id, Visitor* visitor,
                    QpackDecoder* qpack_decoder,
                    QuicHeaderList expected_header_list)
       : stream_id_(stream_id),
         visitor_(visitor),
         accumulator_(
-            stream_id,
-            qpack_decoder,
-            this,
+            stream_id, qpack_decoder, this,
             /* max_header_list_size = */ std::numeric_limits<size_t>::max()),
         expected_header_list_(std::move(expected_header_list)) {}
 
@@ -317,8 +314,7 @@
  public:
   DecodingEndpoint(uint64_t maximum_dynamic_table_capacity,
                    uint64_t maximum_blocked_streams)
-      : decoder_(maximum_dynamic_table_capacity,
-                 maximum_blocked_streams,
+      : decoder_(maximum_dynamic_table_capacity, maximum_blocked_streams,
                  &encoder_stream_error_delegate_) {}
 
   ~DecodingEndpoint() override {
diff --git a/quiche/quic/platform/api/quic_ip_address.cc b/quiche/quic/platform/api/quic_ip_address.cc
index 2dc2071..d8412c5 100644
--- a/quiche/quic/platform/api/quic_ip_address.cc
+++ b/quiche/quic/platform/api/quic_ip_address.cc
@@ -91,17 +91,13 @@
   return false;
 }
 
-bool operator!=(QuicIpAddress lhs, QuicIpAddress rhs) {
-  return !(lhs == rhs);
-}
+bool operator!=(QuicIpAddress lhs, QuicIpAddress rhs) { return !(lhs == rhs); }
 
 bool QuicIpAddress::IsInitialized() const {
   return family_ != IpAddressFamily::IP_UNSPEC;
 }
 
-IpAddressFamily QuicIpAddress::address_family() const {
-  return family_;
-}
+IpAddressFamily QuicIpAddress::address_family() const { return family_; }
 
 int QuicIpAddress::AddressFamilyToInt() const {
   return ToPlatformAddressFamily(family_);
@@ -193,13 +189,9 @@
   return false;
 }
 
-bool QuicIpAddress::IsIPv4() const {
-  return family_ == IpAddressFamily::IP_V4;
-}
+bool QuicIpAddress::IsIPv4() const { return family_ == IpAddressFamily::IP_V4; }
 
-bool QuicIpAddress::IsIPv6() const {
-  return family_ == IpAddressFamily::IP_V6;
-}
+bool QuicIpAddress::IsIPv6() const { return family_ == IpAddressFamily::IP_V6; }
 
 bool QuicIpAddress::InSameSubnet(const QuicIpAddress& other,
                                  int subnet_length) {
diff --git a/quiche/quic/platform/api/quic_socket_address.cc b/quiche/quic/platform/api/quic_socket_address.cc
index 0a35e86..f14faea 100644
--- a/quiche/quic/platform/api/quic_socket_address.cc
+++ b/quiche/quic/platform/api/quic_socket_address.cc
@@ -81,9 +81,7 @@
   return !(lhs == rhs);
 }
 
-bool QuicSocketAddress::IsInitialized() const {
-  return host_.IsInitialized();
-}
+bool QuicSocketAddress::IsInitialized() const { return host_.IsInitialized(); }
 
 std::string QuicSocketAddress::ToString() const {
   switch (host_.address_family()) {
@@ -114,13 +112,9 @@
   return QuicSocketAddress(host_.Normalized(), port_);
 }
 
-QuicIpAddress QuicSocketAddress::host() const {
-  return host_;
-}
+QuicIpAddress QuicSocketAddress::host() const { return host_; }
 
-uint16_t QuicSocketAddress::port() const {
-  return port_;
-}
+uint16_t QuicSocketAddress::port() const { return port_; }
 
 sockaddr_storage QuicSocketAddress::generic_address() const {
   union {
diff --git a/quiche/quic/platform/api/quic_udp_socket_platform_api.h b/quiche/quic/platform/api/quic_udp_socket_platform_api.h
index d6009d9..16b1025 100644
--- a/quiche/quic/platform/api/quic_udp_socket_platform_api.h
+++ b/quiche/quic/platform/api/quic_udp_socket_platform_api.h
@@ -13,9 +13,7 @@
     quiche::kCmsgSpaceForGooglePacketHeader;
 
 inline bool GetGooglePacketHeadersFromControlMessage(
-    struct ::cmsghdr* cmsg,
-    char** packet_headers,
-    size_t* packet_headers_len) {
+    struct ::cmsghdr* cmsg, char** packet_headers, size_t* packet_headers_len) {
   return quiche::GetGooglePacketHeadersFromControlMessage(cmsg, packet_headers,
                                                           packet_headers_len);
 }
diff --git a/quiche/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc b/quiche/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc
index c97b6e8..d3aebf7 100644
--- a/quiche/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc
+++ b/quiche/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include <fuzzer/FuzzedDataProvider.h>
+
 #include <algorithm>
 #include <cstdint>
 #include <string>
@@ -78,8 +79,7 @@
 // at sender, and 2) the serialzied buffer can pass the receiver framer's
 // ProcessPublicHeader and DecryptPayload functions.
 QuicSelfContainedPacketHeader ConsumeQuicPacketHeader(
-    FuzzedDataProvider* provider,
-    Perspective receiver_perspective) {
+    FuzzedDataProvider* provider, Perspective receiver_perspective) {
   QuicSelfContainedPacketHeader header;
 
   header.version = ConsumeParsedQuicVersion(provider);
