diff --git a/include/stdplus/zstring.hpp b/include/stdplus/zstring.hpp
index 29288ae..d36b4dc 100644
--- a/include/stdplus/zstring.hpp
+++ b/include/stdplus/zstring.hpp
@@ -249,6 +249,25 @@
 
 namespace fmt
 {
+template <typename CharT, typename Traits>
+struct formatter<stdplus::basic_zstring<CharT, Traits>,
+                 std::remove_const_t<CharT>> :
+    formatter<const CharT*, std::remove_const_t<CharT>>
+{
+    template <typename FormatContext>
+    inline auto format(stdplus::basic_zstring<CharT, Traits> str,
+                       FormatContext& ctx) const
+    {
+        return formatter<const CharT*, std::remove_const_t<CharT>>::format(
+            str.c_str(), ctx);
+    }
+};
+} // namespace fmt
+
+namespace std
+{
+template <typename T, typename CharT>
+struct formatter;
 
 template <typename CharT, typename Traits>
 struct formatter<stdplus::basic_zstring<CharT, Traits>,
@@ -263,5 +282,4 @@
             str.c_str(), ctx);
     }
 };
-
-} // namespace fmt
+} // namespace std
diff --git a/include/stdplus/zstring_view.hpp b/include/stdplus/zstring_view.hpp
index 19697f7..e1d180f 100644
--- a/include/stdplus/zstring_view.hpp
+++ b/include/stdplus/zstring_view.hpp
@@ -355,6 +355,24 @@
 
 namespace fmt
 {
+template <typename CharT, typename Traits>
+struct formatter<stdplus::basic_zstring_view<CharT, Traits>, CharT> :
+    formatter<basic_string_view<CharT>, CharT>
+{
+    template <typename FormatContext>
+    inline auto format(stdplus::basic_zstring_view<CharT, Traits> str,
+                       FormatContext& ctx) const
+    {
+        return formatter<basic_string_view<CharT>, CharT>::format(
+            static_cast<std::basic_string_view<CharT, Traits>>(str), ctx);
+    }
+};
+} // namespace fmt
+
+namespace std
+{
+template <typename T, typename CharT>
+struct formatter;
 
 template <typename CharT, typename Traits>
 struct formatter<stdplus::basic_zstring_view<CharT, Traits>, CharT> :
@@ -368,5 +386,4 @@
             static_cast<std::basic_string_view<CharT, Traits>>(str), ctx);
     }
 };
-
-} // namespace fmt
+} // namespace std
diff --git a/test/zstring.cpp b/test/zstring.cpp
index 53c3a14..25ce5b0 100644
--- a/test/zstring.cpp
+++ b/test/zstring.cpp
@@ -2,6 +2,7 @@
 
 #include <stdplus/zstring.hpp>
 
+#include <format>
 #include <iostream>
 #include <string>
 #include <string_view>
@@ -39,6 +40,8 @@
     std::cerr << const_zstring(as);
     EXPECT_EQ("dd", fmt::format("d{}", zs));
     EXPECT_EQ("dc", fmt::format("d{}", const_zstring(as)));
+    EXPECT_EQ("dd", std::format("d{}", zs));
+    EXPECT_EQ("dc", std::format("d{}", const_zstring(as)));
 
     auto from_str = [&](const_zstring cs) { EXPECT_EQ(cs, "ac"); };
     from_str("ac"s);
diff --git a/test/zstring_view.cpp b/test/zstring_view.cpp
index 0ef7fb7..f856757 100644
--- a/test/zstring_view.cpp
+++ b/test/zstring_view.cpp
@@ -2,6 +2,7 @@
 
 #include <stdplus/zstring_view.hpp>
 
+#include <format>
 #include <iostream>
 #include <set>
 #include <string>
@@ -57,6 +58,7 @@
 
     std::cerr << s1;
     EXPECT_EQ("bac", fmt::format("b{}", s1));
+    EXPECT_EQ("bac", std::format("b{}", s1));
 
     std::unordered_set<zstring_view> uset{s1, s2};
     EXPECT_EQ(1, uset.count("ac"));
