diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
index 51d90bbf..150a2976 100644
--- a/common/CMakeLists.txt
+++ b/common/CMakeLists.txt
@@ -1,7 +1,7 @@
set(SOURCES resampler.cpp sample_format.cpp jwt.cpp base64.cpp)
if(NOT WIN32 AND NOT ANDROID)
- list(APPEND SOURCES daemon.cpp)
+ list(APPEND SOURCES daemon.cpp utils/string_utils.cpp)
endif()
include_directories(${SOXR_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR})
diff --git a/common/utils/string_utils.cpp b/common/utils/string_utils.cpp
new file mode 100644
index 00000000..4c506641
--- /dev/null
+++ b/common/utils/string_utils.cpp
@@ -0,0 +1,200 @@
+/***
+ This file is part of snapcast
+ Copyright (C) 2014-2024 Johannes Pohl
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+***/
+
+
+// prototype/interface header file
+#include "string_utils.hpp"
+
+// local headers
+#include "common/aixlog.hpp"
+
+// 3rd party headers
+
+// standard headers
+#include
+#include
+#include