diff --git a/http/routing.hpp b/http/routing.hpp
index db25433..3a7b9c2 100644
--- a/http/routing.hpp
+++ b/http/routing.hpp
@@ -30,7 +30,7 @@
 class BaseRule
 {
   public:
-    BaseRule(const std::string& thisRule) : rule(thisRule)
+    explicit BaseRule(const std::string& thisRule) : rule(thisRule)
     {}
 
     virtual ~BaseRule() = default;
@@ -224,7 +224,7 @@
     template <typename Req, typename... Args>
     struct ReqHandlerWrapper
     {
-        ReqHandlerWrapper(Func fIn) : f(std::move(fIn))
+        explicit ReqHandlerWrapper(Func fIn) : f(std::move(fIn))
         {}
 
         void operator()(const Request& req,
@@ -328,7 +328,7 @@
     using self_t = WebSocketRule;
 
   public:
-    WebSocketRule(const std::string& ruleIn) : BaseRule(ruleIn)
+    explicit WebSocketRule(const std::string& ruleIn) : BaseRule(ruleIn)
     {}
 
     void validate() override
@@ -467,7 +467,7 @@
 class DynamicRule : public BaseRule, public RuleParameterTraits<DynamicRule>
 {
   public:
-    DynamicRule(const std::string& ruleIn) : BaseRule(ruleIn)
+    explicit DynamicRule(const std::string& ruleIn) : BaseRule(ruleIn)
     {}
 
     void validate() override
@@ -545,7 +545,7 @@
   public:
     using self_t = TaggedRule<Args...>;
 
-    TaggedRule(const std::string& ruleIn) : BaseRule(ruleIn)
+    explicit TaggedRule(const std::string& ruleIn) : BaseRule(ruleIn)
     {}
 
     void validate() override
diff --git a/http/utility.hpp b/http/utility.hpp
index 0b1743f..7b0af13 100644
--- a/http/utility.hpp
+++ b/http/utility.hpp
@@ -655,7 +655,8 @@
         return std::string_view(segment.data(), segment.size()) == expected;
     }
 
-    UrlSegmentMatcherVisitor(const boost::urls::string_value& segmentIn) :
+    explicit UrlSegmentMatcherVisitor(
+        const boost::urls::string_value& segmentIn) :
         segment(segmentIn)
     {}
 
