diff --git a/src/fd/atomic.cpp b/src/fd/atomic.cpp
index ce9dff2..5299789 100644
--- a/src/fd/atomic.cpp
+++ b/src/fd/atomic.cpp
@@ -1,5 +1,5 @@
-#include <fmt/format.h>
 #include <sys/stat.h>
+#include <unistd.h>
 
 #include <stdplus/fd/atomic.hpp>
 #include <stdplus/fd/managed.hpp>
@@ -7,6 +7,7 @@
 
 #include <cstdlib>
 #include <filesystem>
+#include <format>
 #include <system_error>
 #include <utility>
 
@@ -19,7 +20,7 @@
 {
     auto name = filename.filename();
     auto path = filename.parent_path() /
-                fmt::format(".{}.XXXXXX", name.native());
+                std::format(".{}.XXXXXX", name.native());
     return path.native();
 }
 
@@ -30,7 +31,7 @@
     umask(old);
     return CHECK_ERRNO(fd, [&](int error) {
         throw std::system_error(error, std::generic_category(),
-                                fmt::format("mkstemp({})", tmpl));
+                                std::format("mkstemp({})", tmpl));
     });
 }
 
diff --git a/src/fd/create.cpp b/src/fd/create.cpp
index bfef66f..d9b90f0 100644
--- a/src/fd/create.cpp
+++ b/src/fd/create.cpp
@@ -1,10 +1,11 @@
 #include <fcntl.h>
-#include <fmt/format.h>
 #include <sys/socket.h>
 
 #include <stdplus/fd/create.hpp>
 #include <stdplus/util/cexec.hpp>
 
+#include <format>
+
 namespace stdplus
 {
 namespace fd
@@ -14,7 +15,7 @@
 {
     return DupableFd(
         CHECK_ERRNO(::open(pathname, static_cast<int>(flags), mode),
-                    fmt::format("open `{}`", pathname)));
+                    std::format("open `{}`", pathname)));
 }
 
 DupableFd socket(SocketDomain domain, SocketType type, SocketProto protocol)
diff --git a/src/fd/impl.cpp b/src/fd/impl.cpp
index 1272fc8..40ce7b3 100644
--- a/src/fd/impl.cpp
+++ b/src/fd/impl.cpp
@@ -1,5 +1,4 @@
 #include <fcntl.h>
-#include <fmt/format.h>
 #include <sys/ioctl.h>
 #include <sys/socket.h>
 #include <unistd.h>
@@ -8,6 +7,7 @@
 #include <stdplus/fd/impl.hpp>
 #include <stdplus/util/cexec.hpp>
 
+#include <format>
 #include <string_view>
 
 namespace stdplus
@@ -102,12 +102,12 @@
 size_t FdImpl::lseek(off_t offset, Whence whence)
 {
     return CHECK_ERRNO(::lseek(get(), offset, static_cast<int>(whence)),
-                       fmt::format("lseek {}B {}", offset, whenceStr(whence)));
+                       std::format("lseek {}B {}", offset, whenceStr(whence)));
 }
 
 void FdImpl::truncate(off_t size)
 {
-    CHECK_ERRNO(::ftruncate(get(), size), fmt::format("ftruncate {}B", size));
+    CHECK_ERRNO(::ftruncate(get(), size), std::format("ftruncate {}B", size));
 }
 
 void FdImpl::bind(std::span<const std::byte> sockaddr)
@@ -156,7 +156,7 @@
 int FdImpl::constIoctl(unsigned long id, void* data) const
 {
     return CHECK_ERRNO(::ioctl(get(), id, data),
-                       fmt::format("ioctl {:#x}", id));
+                       std::format("ioctl {:#x}", id));
 }
 
 void FdImpl::fcntlSetfd(FdFlags flags)
diff --git a/src/fd/ops.cpp b/src/fd/ops.cpp
index e8f3636..b0f2bef 100644
--- a/src/fd/ops.cpp
+++ b/src/fd/ops.cpp
@@ -1,8 +1,7 @@
-#include <fmt/format.h>
-
 #include <stdplus/exception.hpp>
 #include <stdplus/fd/ops.hpp>
 
+#include <format>
 #include <utility>
 
 namespace stdplus
@@ -22,7 +21,7 @@
         if (ret.size() == 0)
         {
             throw exception::WouldBlock(
-                fmt::format("{} missing {}B", name, data.size()));
+                std::format("{} missing {}B", name, data.size()));
         }
         data = data.subspan(ret.size());
     }
@@ -61,7 +60,7 @@
         if (ret.size() != 0 && r.size() == 0)
         {
             throw exception::WouldBlock(
-                fmt::format("{} is {}B/{}B", name, ret.size() % align, align));
+                std::format("{} is {}B/{}B", name, ret.size() % align, align));
         }
         ret = data.subspan(0, ret.size() + r.size());
     } while (ret.size() % align != 0);
