diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp
index ae7f15840584599f5b701b39b27f2bfbfeaee2d8..5fbf2411b8a63d33da178c9ba42b5ae0a5533c5c 100644
--- a/src/jamidht/jamiaccount.cpp
+++ b/src/jamidht/jamiaccount.cpp
@@ -3058,23 +3058,22 @@ JamiAccount::setMessageDisplayed(const std::string& conversationUri,
 std::string
 JamiAccount::getContactHeader(SipTransport* sipTransport)
 {
-    std::string quotedDisplayName = "\"" + displayName_ + "\" " + (displayName_.empty() ? "" : " ");
-    std::ostringstream contact;
-
     if (auto transport = sipTransport->get()) {
         auto* td = reinterpret_cast<tls::AbstractSIPTransport::TransportData*>(transport);
         auto address = td->self->getLocalAddress().toString(true);
         bool reliable = transport->flag & PJSIP_TRANSPORT_RELIABLE;
-
-        contact << quotedDisplayName << "<sips:" << id_.second->getId().toString()
-                << (address.empty() ? "" : "@") << address
-                << (reliable ? ";transport=tls>" : ";transport=dtls");
+        return fmt::format("\"{}\" <sips:{}{}{};transport={}>",
+                           displayName_,
+                           id_.second->getId().toString(),
+                           address.empty() ? "" : "@",
+                           address,
+                           reliable ? "tls" : "dtls");
     } else {
         JAMI_ERR("getContactHeader: no SIP transport provided");
-        contact << quotedDisplayName << "<sips:" << id_.second->getId().toString() << "@ring.dht>";
+        return fmt::format("\"{}\" <sips:{}@ring.dht>",
+                           displayName_,
+                           id_.second->getId().toString());
     }
-
-    return contact.str();
 }
 
 /* contacts */