diff --git a/src/core/hle/service/http/http_c.cpp b/src/core/hle/service/http/http_c.cpp
index 51b35a5b2f..b2ffac1df9 100644
--- a/src/core/hle/service/http/http_c.cpp
+++ b/src/core/hle/service/http/http_c.cpp
@@ -68,18 +68,55 @@ const ResultCode ERROR_CERT_ALREADY_SET = // 0xD8A0A03D
 // Splits URL into its components. Example: https://citra-emu.org:443/index.html
 // is_https: true; host: citra-emu.org; port: 443; path: /index.html
 static URLInfo SplitUrl(const std::string& url) {
-    constexpr u16 default_http_port = 80;
-    constexpr u16 default_https_port = 443;
+    const std::string prefix = "://";
+    constexpr int default_http_port = 80;
+    constexpr int default_https_port = 443;
 
-    const auto result = boost::urls::parse_uri(url);
-    const bool is_https = result->scheme_id() == boost::urls::scheme::https;
-    const auto port = result->port_number();
-    const auto default_port = is_https ? default_https_port : default_http_port;
+    std::string host;
+    int port = -1;
+    std::string path;
+
+    const auto scheme_end = url.find(prefix);
+    const auto prefix_end = scheme_end == std::string::npos ? 0 : scheme_end + prefix.length();
+    bool is_https = scheme_end != std::string::npos && url.starts_with("https");
+    const auto path_index = url.find("/", prefix_end);
+
+    if (path_index == std::string::npos) {
+        // If no path is specified after the host, set it to "/"
+        host = url.substr(prefix_end);
+        const auto port_start = host.find(":");
+        if (port_start != std::string::npos) {
+            std::string port_str = host.substr(port_start + 1);
+            host = host.substr(0, port_start);
+            char* pEnd = NULL;
+            port = std::strtol(port_str.c_str(), &pEnd, 10);
+            if (*pEnd) {
+                port = -1;
+            }
+        }
+        path = "/";
+    } else {
+        host = url.substr(prefix_end, path_index - prefix_end);
+        const auto port_start = host.find(":");
+        if (port_start != std::string::npos) {
+            std::string port_str = host.substr(port_start + 1);
+            host = host.substr(0, port_start);
+            char* pEnd = NULL;
+            port = std::strtol(port_str.c_str(), &pEnd, 10);
+            if (*pEnd) {
+                port = -1;
+            }
+        }
+        path = url.substr(path_index);
+    }
+    if (port == -1) {
+        port = is_https ? default_https_port : default_http_port;
+    }
     return URLInfo{
         .is_https = is_https,
-        .host = std::string{result->encoded_host()},
-        .port = port == 0 ? default_port : port,
-        .path = std::string{result->encoded_path()},
+        .host = host,
+        .port = port,
+        .path = path,
     };
 }