diff --git a/src/gn/build_settings.cc b/src/gn/build_settings.cc
index b364ea2..6a26495 100644
--- a/src/gn/build_settings.cc
+++ b/src/gn/build_settings.cc
@@ -78,3 +78,10 @@
   if (item_defined_callback_)
     item_defined_callback_(std::move(item));
 }
+
+const BuildSettings::PrintCallback BuildSettings::swap_print_callback(
+    const BuildSettings::PrintCallback callback) {
+  auto temp = std::move(print_callback_);
+  print_callback_ = callback;
+  return temp;
+}
\ No newline at end of file
diff --git a/src/gn/build_settings.h b/src/gn/build_settings.h
index 82f11db..dd3bd9c 100644
--- a/src/gn/build_settings.h
+++ b/src/gn/build_settings.h
@@ -129,7 +129,8 @@
   // callback is is_null() (the default) the output will be printed to the
   // console.
   const PrintCallback& print_callback() const { return print_callback_; }
-  void set_print_callback(const PrintCallback& cb) { print_callback_ = cb; }
+  void set_print_callback(const PrintCallback cb) { print_callback_ = cb; }
+  const PrintCallback swap_print_callback(const PrintCallback cb);
 
   // A list of files that can call exec_script(). If the returned pointer is
   // null, exec_script may be called from anywhere.
diff --git a/src/gn/command_desc.cc b/src/gn/command_desc.cc
index 95652f1..b50d4e9 100644
--- a/src/gn/command_desc.cc
+++ b/src/gn/command_desc.cc
@@ -623,6 +623,25 @@
       each one was set from.
 )";
 
+class PrintCallbackHolder {
+ public:
+  PrintCallbackHolder() {}
+  ~PrintCallbackHolder() {
+    if (_settings.has_value()) {
+      _settings.value()->swap_print_callback(_callback.value());
+    }
+  }
+  void SwapCallbacks(BuildSettings* settings,
+                     BuildSettings::PrintCallback new_callback) {
+    _settings = settings;
+    _callback = settings->swap_print_callback(new_callback);
+  }
+
+ private:
+  std::optional<BuildSettings*> _settings;
+  std::optional<BuildSettings::PrintCallback> _callback;
+};
+
 int RunDesc(const std::vector<std::string>& args) {
   if (args.size() != 2 && args.size() != 3) {
     Err(Location(), "Unknown command format. See \"gn help desc\"",
@@ -634,6 +653,16 @@
 
   // Deliberately leaked to avoid expensive process teardown.
   Setup* setup = new Setup;
+
+  bool json = cmdline->GetSwitchValueString("format") == "json";
+  PrintCallbackHolder print_callback_holder;
+  if (json) {
+    // Silence all output while running desc if outputting to json.
+    BuildSettings* settings = &setup->build_settings();
+    print_callback_holder.SwapCallbacks(settings,
+                                        [](const std::string& str) {});
+  }
+
   if (!setup->DoSetup(args[0], false))
     return 1;
   if (!setup->Run())
@@ -657,8 +686,6 @@
   if (args.size() == 3)
     what_to_print = args[2];
 
-  bool json = cmdline->GetSwitchValueString("format") == "json";
-
   if (target_matches.empty() && config_matches.empty()) {
     OutputString(
         "The input " + args[1] + " matches no targets, configs or files.\n",
