diff --git a/http/utility.hpp b/http/utility.hpp
index 41b48e4..f2ac6e4 100644
--- a/http/utility.hpp
+++ b/http/utility.hpp
@@ -52,8 +52,8 @@
             {
                 return 0;
             }
-            std::string_view tag = url.substr(urlSegmentIndex,
-                                              urlIndex + 1 - urlSegmentIndex);
+            std::string_view tag =
+                url.substr(urlSegmentIndex, urlIndex + 1 - urlSegmentIndex);
 
             if (tag == "<str>" || tag == "<string>")
             {
@@ -239,8 +239,8 @@
     auto getCodeValue = [](char c) {
         auto code = static_cast<unsigned char>(c);
         // Ensure we cannot index outside the bounds of the decoding array
-        static_assert(std::numeric_limits<decltype(code)>::max() <
-                      decodingData.size());
+        static_assert(
+            std::numeric_limits<decltype(code)>::max() < decodingData.size());
         return decodingData[code];
     };
 
@@ -284,8 +284,8 @@
             { // non base64 character
                 return false;
             }
-            output += static_cast<char>(((base64code1 << 4) & 0xf0) |
-                                        ((base64code2 >> 2) & 0x0f));
+            output += static_cast<char>(
+                ((base64code1 << 4) & 0xf0) | ((base64code2 >> 2) & 0x0f));
         }
 
         if (++i < inputLength)
@@ -310,9 +310,8 @@
 
 namespace details
 {
-inline boost::urls::url
-    appendUrlPieces(boost::urls::url& url,
-                    const std::initializer_list<std::string_view> args)
+inline boost::urls::url appendUrlPieces(
+    boost::urls::url& url, const std::initializer_list<std::string_view> args)
 {
     for (std::string_view arg : args)
     {
