diff --git a/quiche/quic/moqt/moqt_bitrate_adjuster.cc b/quiche/quic/moqt/moqt_bitrate_adjuster.cc
index fbcc224..59e10b1 100644
--- a/quiche/quic/moqt/moqt_bitrate_adjuster.cc
+++ b/quiche/quic/moqt/moqt_bitrate_adjuster.cc
@@ -63,8 +63,7 @@
       parameters_.target_bitrate_multiplier_down *
       QuicBandwidth::FromBitsPerSecond(stats.estimated_send_rate_bps);
   QUICHE_DLOG(INFO) << "Adjusting the bitrate down to " << target_bandwidth;
-  adjustable_->ConsiderAdjustingBitrate(target_bandwidth,
-                                        BitrateAdjustmentType::kDown);
+  SuggestNewBitrate(target_bandwidth, BitrateAdjustmentType::kDown);
 }
 
 void MoqtBitrateAdjuster::OnObjectAckSupportKnown(
@@ -104,4 +103,10 @@
   return false;
 }
 
+void MoqtBitrateAdjuster::SuggestNewBitrate(quic::QuicBandwidth bitrate,
+                                            BitrateAdjustmentType type) {
+  adjustable_->ConsiderAdjustingBitrate(bitrate, type);
+  trace_recorder_.RecordTargetBitrateSet(bitrate);
+}
+
 }  // namespace moqt
diff --git a/quiche/quic/moqt/moqt_bitrate_adjuster.h b/quiche/quic/moqt/moqt_bitrate_adjuster.h
index 135373a..b3667b6 100644
--- a/quiche/quic/moqt/moqt_bitrate_adjuster.h
+++ b/quiche/quic/moqt/moqt_bitrate_adjuster.h
@@ -12,6 +12,7 @@
 #include "quiche/quic/core/quic_clock.h"
 #include "quiche/quic/core/quic_time.h"
 #include "quiche/quic/moqt/moqt_session.h"
+#include "quiche/quic/moqt/moqt_trace_recorder.h"
 #include "quiche/web_transport/web_transport.h"
 
 namespace moqt {
@@ -75,15 +76,21 @@
   void OnObjectAckReceived(uint64_t group_id, uint64_t object_id,
                            quic::QuicTimeDelta delta_from_deadline) override;
 
+  MoqtTraceRecorder& trace_recorder() { return trace_recorder_; }
+
  private:
   void Start();
 
   // Attempts adjusting the bitrate down.
   void AttemptAdjustingDown();
 
+  void SuggestNewBitrate(quic::QuicBandwidth bitrate,
+                         BitrateAdjustmentType type);
+
   const quic::QuicClock* clock_;    // Not owned.
   webtransport::Session* session_;  // Not owned.
   BitrateAdjustable* adjustable_;   // Not owned.
+  MoqtTraceRecorder trace_recorder_;
   MoqtBitrateAdjusterParameters parameters_;
   quic::QuicTime start_time_ = quic::QuicTime::Zero();
   quic::QuicTimeDelta time_window_ = quic::QuicTimeDelta::Zero();
diff --git a/quiche/quic/moqt/moqt_trace_recorder.cc b/quiche/quic/moqt/moqt_trace_recorder.cc
index 0f8eb6e..6bcc537 100644
--- a/quiche/quic/moqt/moqt_trace_recorder.cc
+++ b/quiche/quic/moqt/moqt_trace_recorder.cc
@@ -7,6 +7,7 @@
 #include <cstdint>
 #include <optional>
 
+#include "quiche/quic/core/quic_bandwidth.h"
 #include "quiche/quic/core/quic_time.h"
 #include "quiche/quic/moqt/moqt_messages.h"
 #include "quiche/quic/moqt/moqt_object.h"
@@ -116,4 +117,14 @@
   parent_->PopulateTransportState(event->mutable_transport_state());
 }
 
+void MoqtTraceRecorder::RecordTargetBitrateSet(
+    quic::QuicBandwidth new_bandwidth) {
+  if (parent_ == nullptr) {
+    return;
+  }
+  quic_trace::Event* event = AddEvent();
+  event->set_event_type(EventType::MOQT_TARGET_BITRATE_SET);
+  event->set_bandwidth_estimate_bps(new_bandwidth.ToBitsPerSecond());
+}
+
 }  // namespace moqt
diff --git a/quiche/quic/moqt/moqt_trace_recorder.h b/quiche/quic/moqt/moqt_trace_recorder.h
index 81b5531..0dc8c8c 100644
--- a/quiche/quic/moqt/moqt_trace_recorder.h
+++ b/quiche/quic/moqt/moqt_trace_recorder.h
@@ -9,6 +9,7 @@
 #include <memory>
 
 #include "absl/base/nullability.h"
+#include "quiche/quic/core/quic_bandwidth.h"
 #include "quiche/quic/core/quic_time.h"
 #include "quiche/quic/core/quic_trace_visitor.h"
 #include "quiche/quic/moqt/moqt_messages.h"
@@ -60,6 +61,10 @@
   void RecordObjectAck(uint64_t track_alias, Location location,
                        quic::QuicTimeDelta ack_delta);
 
+  // Records the fact that the MOQT stack has advised the application to change
+  // its bitrate.
+  void RecordTargetBitrateSet(quic::QuicBandwidth new_bandwidth);
+
  private:
   // Adds a new event to the trace, and populates the timestamp.
   quic_trace::Event* AddEvent();
diff --git a/quiche/quic/moqt/test_tools/moqt_simulator.cc b/quiche/quic/moqt/test_tools/moqt_simulator.cc
index b39ba42..e7f32bd 100644
--- a/quiche/quic/moqt/test_tools/moqt_simulator.cc
+++ b/quiche/quic/moqt/test_tools/moqt_simulator.cc
@@ -282,6 +282,8 @@
   QUICHE_DCHECK(client_endpoint_.trace_visitor() != nullptr);
   client_endpoint_.session()->trace_recorder().SetParentRecorder(
       client_endpoint_.trace_visitor());
+  adjuster_.trace_recorder().SetParentRecorder(
+      client_endpoint_.trace_visitor());
 }
 
 std::string MoqtSimulator::GetClientSessionCongestionControl() {
diff --git a/quiche/quic/moqt/test_tools/moqt_simulator.h b/quiche/quic/moqt/test_tools/moqt_simulator.h
index b0fbffd..c930c51 100644
--- a/quiche/quic/moqt/test_tools/moqt_simulator.h
+++ b/quiche/quic/moqt/test_tools/moqt_simulator.h
@@ -219,6 +219,11 @@
   // The fraction of objects received on time.
   float received_on_time_fraction() const;
 
+  // The trace of the client session (the publisher).
+  const quic_trace::Trace& client_trace() {
+    return *client_endpoint_.trace_visitor()->trace();
+  }
+
   // Outputs the results of the simulation to stdout.
   void HumanReadableOutput();
   void CustomOutput(absl::string_view format);
diff --git a/quiche/quic/moqt/test_tools/moqt_simulator_test.cc b/quiche/quic/moqt/test_tools/moqt_simulator_test.cc
index f491515..f562659 100644
--- a/quiche/quic/moqt/test_tools/moqt_simulator_test.cc
+++ b/quiche/quic/moqt/test_tools/moqt_simulator_test.cc
@@ -7,18 +7,34 @@
 #include "quiche/quic/core/quic_bandwidth.h"
 #include "quiche/quic/core/quic_connection_stats.h"
 #include "quiche/quic/core/quic_time.h"
+#include "quic_trace/quic_trace.pb.h"
 #include "quiche/common/platform/api/quiche_test.h"
 
 namespace moqt::test {
 namespace {
 
+using ::quic_trace::EventType;
+
 class MoqtSimulatorTest : public quiche::test::QuicheTest {};
 
+int CountEventType(const quic_trace::Trace& trace, quic_trace::EventType type) {
+  int count = 0;
+  for (const quic_trace::Event& event : trace.events()) {
+    if (event.event_type() == type) {
+      ++count;
+    }
+  }
+  return count;
+}
+
 // Ensure the simulation works with default parameters.
 TEST_F(MoqtSimulatorTest, DefaultSettings) {
   MoqtSimulator simulator(SimulationParameters{});
   simulator.Run();
   EXPECT_NEAR(simulator.received_on_time_fraction(), 1.0f, 0.001f);
+  EXPECT_EQ(CountEventType(simulator.client_trace(),
+                           EventType::MOQT_TARGET_BITRATE_SET),
+            0);
 }
 
 // Ensure that the bitrate adaptation down works.
@@ -31,6 +47,9 @@
   simulator.Run();
   EXPECT_GE(simulator.received_on_time_fraction(), 0.8f);
   EXPECT_LT(simulator.received_on_time_fraction(), 0.99f);
+  EXPECT_GT(CountEventType(simulator.client_trace(),
+                           EventType::MOQT_TARGET_BITRATE_SET),
+            0);
 
   quic::QuicConnectionStats stats =
       simulator.client_quic_session()->connection()->GetStats();
