diff --git a/include/boost_formatters.hpp b/include/boost_formatters.hpp
new file mode 100644
index 0000000..0503d59
--- /dev/null
+++ b/include/boost_formatters.hpp
@@ -0,0 +1,63 @@
+#pragma once
+
+#include <boost/system/error_code.hpp>
+#include <boost/url/grammar.hpp>
+#include <boost/url/url_view_base.hpp>
+
+#include <format>
+
+// NOLINTBEGIN(readability-convert-member-functions-to-static, cert-dcl58-cpp)
+template <std::derived_from<boost::system::error_code> ErrorCodeType>
+struct std::formatter<ErrorCodeType>
+{
+    constexpr auto parse(std::format_parse_context& ctx)
+    {
+        return ctx.begin();
+    }
+
+    auto format(const ErrorCodeType& ec, auto& ctx) const
+    {
+        return std::format_to(ctx.out(), "{}", ec.what());
+    }
+};
+
+template <std::derived_from<boost::urls::grammar::string_view_base> StringView>
+struct std::formatter<StringView>
+{
+    constexpr auto parse(std::format_parse_context& ctx)
+    {
+        return ctx.begin();
+    }
+    auto format(const StringView& msg, auto& ctx) const
+    {
+        return std::format_to(ctx.out(), "{}",
+                              std::string_view(msg.data(), msg.size()));
+    }
+};
+
+template <std::derived_from<boost::urls::url_view_base> UrlBase>
+struct std::formatter<UrlBase>
+{
+    constexpr auto parse(std::format_parse_context& ctx)
+    {
+        return ctx.begin();
+    }
+    auto format(const UrlBase& msg, auto& ctx) const
+    {
+        return std::format_to(ctx.out(), "{}", std::string_view(msg.buffer()));
+    }
+};
+
+template <std::derived_from<boost::core::string_view> StringView>
+struct std::formatter<StringView>
+{
+    constexpr auto parse(std::format_parse_context& ctx)
+    {
+        return ctx.begin();
+    }
+    auto format(const StringView& msg, auto& ctx) const
+    {
+        return std::format_to(ctx.out(), "{}", std::string_view(msg));
+    }
+};
+// NOLINTEND(readability-convert-member-functions-to-static, cert-dcl58-cpp)
diff --git a/include/dbus_utility.hpp b/include/dbus_utility.hpp
index c06ba9e..0cd3b7e 100644
--- a/include/dbus_utility.hpp
+++ b/include/dbus_utility.hpp
@@ -15,6 +15,7 @@
  */
 #pragma once
 
+#include "boost_formatters.hpp"
 #include "dbus_singleton.hpp"
 #include "logging.hpp"
 
diff --git a/include/json_formatters.hpp b/include/json_formatters.hpp
new file mode 100644
index 0000000..ae72a08
--- /dev/null
+++ b/include/json_formatters.hpp
@@ -0,0 +1,39 @@
+#pragma once
+
+#include <nlohmann/json.hpp>
+
+#include <format>
+
+// Clang-tidy would rather these be static, but using static causes the template
+// specialization to not function.  Ignore the warning.
+// NOLINTBEGIN(readability-convert-member-functions-to-static, cert-dcl58-cpp)
+
+template <>
+struct std::formatter<nlohmann::json::json_pointer>
+{
+    constexpr auto parse(std::format_parse_context& ctx)
+    {
+        return ctx.begin();
+    }
+    auto format(const nlohmann::json::json_pointer& ptr, auto& ctx) const
+    {
+        return std::format_to(ctx.out(), "{}", ptr.to_string());
+    }
+};
+
+template <>
+struct std::formatter<nlohmann::json>
+{
+    static constexpr auto parse(std::format_parse_context& ctx)
+    {
+        return ctx.begin();
+    }
+    auto format(const nlohmann::json& json, auto& ctx) const
+    {
+        return std::format_to(
+            ctx.out(), "{}",
+            json.dump(-1, ' ', false,
+                      nlohmann::json::error_handler_t::replace));
+    }
+};
+// NOLINTEND(readability-convert-member-functions-to-static, cert-dcl58-cpp)
diff --git a/include/openbmc_dbus_rest.hpp b/include/openbmc_dbus_rest.hpp
index 17b5931..f0b72fb 100644
--- a/include/openbmc_dbus_rest.hpp
+++ b/include/openbmc_dbus_rest.hpp
@@ -15,10 +15,12 @@
 #pragma once
 #include "app.hpp"
 #include "async_resp.hpp"
+#include "boost_formatters.hpp"
 #include "dbus_singleton.hpp"
 #include "dbus_utility.hpp"
 #include "http_request.hpp"
 #include "http_response.hpp"
+#include "json_formatters.hpp"
 #include "logging.hpp"
 #include "parsing.hpp"
 #include "routing.hpp"
