diff --git a/include/http_utility.hpp b/include/http_utility.hpp
index ef65e23..740e218 100644
--- a/include/http_utility.hpp
+++ b/include/http_utility.hpp
@@ -5,14 +5,20 @@
 
 namespace http_helpers
 {
-inline bool requestPrefersHtml(std::string_view header)
+inline std::vector<std::string> parseAccept(std::string_view header)
 {
     std::vector<std::string> encodings;
     // chrome currently sends 6 accepts headers, firefox sends 4.
     encodings.reserve(6);
     boost::split(encodings, header, boost::is_any_of(", "),
                  boost::token_compress_on);
-    for (const std::string& encoding : encodings)
+
+    return encodings;
+}
+
+inline bool requestPrefersHtml(std::string_view header)
+{
+    for (const std::string& encoding : parseAccept(header))
     {
         if (encoding == "text/html")
         {
@@ -26,6 +32,18 @@
     return false;
 }
 
+inline bool isOctetAccepted(std::string_view header)
+{
+    for (const std::string& encoding : parseAccept(header))
+    {
+        if (encoding == "*/*" || encoding == "application/octet-stream")
+        {
+            return true;
+        }
+    }
+    return false;
+}
+
 inline std::string urlEncode(const std::string_view value)
 {
     std::ostringstream escaped;
diff --git a/include/ut/http_utility_test.cpp b/include/ut/http_utility_test.cpp
new file mode 100644
index 0000000..164f51d
--- /dev/null
+++ b/include/ut/http_utility_test.cpp
@@ -0,0 +1,26 @@
+#include <http_utility.hpp>
+
+#include "gmock/gmock.h"
+
+TEST(HttpUtility, requestPrefersHtml)
+{
+    boost::beast::http::request<boost::beast::http::string_body> req{};
+
+    req.set("Accept", "*/*, application/octet-stream");
+    crow::Request req1(req);
+    EXPECT_FALSE(
+        http_helpers::requestPrefersHtml(req1.getHeaderValue("Accept")));
+    EXPECT_TRUE(http_helpers::isOctetAccepted(req1.getHeaderValue("Accept")));
+
+    req.set("Accept", "text/html, application/json");
+    crow::Request req2(req);
+    EXPECT_TRUE(
+        http_helpers::requestPrefersHtml(req2.getHeaderValue("Accept")));
+    EXPECT_FALSE(http_helpers::isOctetAccepted(req2.getHeaderValue("Accept")));
+
+    req.set("Accept", "application/json");
+    crow::Request req3(req);
+    EXPECT_FALSE(
+        http_helpers::requestPrefersHtml(req3.getHeaderValue("Accept")));
+    EXPECT_FALSE(http_helpers::isOctetAccepted(req3.getHeaderValue("Accept")));
+}
