diff --git a/ndn-cxx/data.cpp b/ndn-cxx/data.cpp
index fd47aa5..5997e1a 100644
--- a/ndn-cxx/data.cpp
+++ b/ndn-cxx/data.cpp
@@ -269,16 +269,6 @@
 }
 
 Data&
-Data::setContent(const uint8_t* value, size_t length)
-{
-  if (value == nullptr && length != 0) {
-    NDN_THROW(std::invalid_argument("Content buffer cannot be nullptr"));
-  }
-
-  return setContent(make_span(value, length));
-}
-
-Data&
 Data::setContent(ConstBufferPtr value)
 {
   if (value == nullptr) {
diff --git a/ndn-cxx/data.hpp b/ndn-cxx/data.hpp
index 64425e0..6545dec 100644
--- a/ndn-cxx/data.hpp
+++ b/ndn-cxx/data.hpp
@@ -202,17 +202,6 @@
   setContent(span<const uint8_t> value);
 
   /**
-   * @brief Set `Content` by copying from a raw buffer.
-   * @param value buffer with the TLV-VALUE of the content; may be nullptr if @p length is zero
-   * @param length size of the buffer
-   * @return A reference to this Data, to allow chaining.
-   * @deprecated Use setContent(span<const uint8_t>)
-   */
-  [[deprecated("use the overload that takes a span<>")]]
-  Data&
-  setContent(const uint8_t* value, size_t length);
-
-  /**
    * @brief Set `Content` from a shared buffer.
    * @param value buffer with the TLV-VALUE of the content; must not be nullptr
    * @return A reference to this Data, to allow chaining.
diff --git a/ndn-cxx/interest.cpp b/ndn-cxx/interest.cpp
index 6f91a95..6034ff6 100644
--- a/ndn-cxx/interest.cpp
+++ b/ndn-cxx/interest.cpp
@@ -494,16 +494,6 @@
 }
 
 Interest&
-Interest::setApplicationParameters(const uint8_t* value, size_t length)
-{
-  if (value == nullptr && length != 0) {
-    NDN_THROW(std::invalid_argument("ApplicationParameters buffer cannot be nullptr"));
-  }
-
-  return setApplicationParameters(make_span(value, length));
-}
-
-Interest&
 Interest::setApplicationParameters(ConstBufferPtr value)
 {
   if (value == nullptr) {
diff --git a/ndn-cxx/interest.hpp b/ndn-cxx/interest.hpp
index 1d438ca..00a2528 100644
--- a/ndn-cxx/interest.hpp
+++ b/ndn-cxx/interest.hpp
@@ -354,22 +354,6 @@
   setApplicationParameters(span<const uint8_t> value);
 
   /**
-   * @brief Set `ApplicationParameters` by copying from a raw buffer.
-   * @param value points to a buffer from which the TLV-VALUE of the parameters will be copied;
-   *              may be nullptr if @p length is zero
-   * @param length size of the buffer
-   * @return A reference to this Interest.
-   * @deprecated Use setApplicationParameters(span<const uint8_t>)
-   *
-   * This function will also recompute the value of the ParametersSha256DigestComponent in the
-   * Interest's name. If the name does not contain a ParametersSha256DigestComponent, one will
-   * be appended to it.
-   */
-  [[deprecated("use the overload that takes a span<>")]]
-  Interest&
-  setApplicationParameters(const uint8_t* value, size_t length);
-
-  /**
    * @brief Set `ApplicationParameters` from a shared buffer.
    * @param value buffer containing the TLV-VALUE of the parameters; must not be nullptr
    * @return A reference to this Interest.
diff --git a/ndn-cxx/util/string-helper.hpp b/ndn-cxx/util/string-helper.hpp
index 1b08836..1149837 100644
--- a/ndn-cxx/util/string-helper.hpp
+++ b/ndn-cxx/util/string-helper.hpp
@@ -34,7 +34,7 @@
 };
 
 /**
- * @brief Output the hex representation of @p num to the output stream @p os
+ * @brief Output the hex representation of @p num to the output stream @p os.
  *
  * @param os Output stream
  * @param num Number to print in hexadecimal format
@@ -46,7 +46,7 @@
 printHex(std::ostream& os, uint64_t num, bool wantUpperCase = false);
 
 /**
- * @brief Output the hex representation of the bytes in @p buffer to the output stream @p os
+ * @brief Output the hex representation of the bytes in @p buffer to the output stream @p os.
  *
  * @param os Output stream
  * @param buffer Range of bytes to print in hexadecimal format
@@ -59,34 +59,8 @@
 printHex(std::ostream& os, span<const uint8_t> buffer, bool wantUpperCase = true);
 
 /**
- * @brief Output the hex representation of the bytes in @p buffer to the output stream @p os
- * @deprecated
- *
- * @param os Output stream
- * @param buffer Pointer to an array of bytes
- * @param length Size of the array
- * @param wantUpperCase if true (the default) print uppercase hex chars
- *
- * Examples:
- *
- * @code
- * printHex(std::cout, "Hello, World!");        // outputs "48656C6C6F2C20776F726C6421"
- * printHex(std::cout, "Hello, World!", false); // outputs "48656c6c6f2c20776f726c6421"
- * @endcode
- *
- * Each octet is always represented as two hex characters ("00" for octet==0).
- * The output string is a continuous sequence of hex characters without any whitespace separators.
- */
-[[deprecated("use the overload that takes a span<>")]]
-inline void
-printHex(std::ostream& os, const uint8_t* buffer, size_t length, bool wantUpperCase = true)
-{
-  printHex(os, {buffer, length}, wantUpperCase);
-}
-
-/**
- * @brief Helper class to convert a number to hexadecimal
- *        format, for use with stream insertion operators
+ * @brief Helper class to convert a number to hexadecimal format, for use with
+ *        stream insertion operators.
  *
  * Example usage:
  *
@@ -117,7 +91,7 @@
 };
 
 /**
- * @brief Return a string containing the hex representation of the bytes in @p buffer
+ * @brief Return a string containing the hex representation of the bytes in @p buffer.
  *
  * @param buffer Range of bytes to convert to hexadecimal format
  * @param wantUpperCase if true (the default) use uppercase hex chars
@@ -129,41 +103,16 @@
 toHex(span<const uint8_t> buffer, bool wantUpperCase = true);
 
 /**
- * @brief Return a string containing the hex representation of the bytes in @p buffer
- * @deprecated
- *
- * @param buffer Pointer to an array of bytes
- * @param length Size of the array
- * @param wantUpperCase if true (the default) use uppercase hex chars
- *
- * Examples:
- *
- * @code
- * toHex("Hello, World!") == "48656C6C6F2C20776F726C6421"
- * toHex("Hello, World!", false) == "48656c6c6f2c20776f726c6421"
- * @endcode
- *
- * Each octet is always represented as two hex characters ("00" for octet==0).
- * The output string is a continuous sequence of hex characters without any whitespace separators.
- */
-[[deprecated("use the overload that takes a span<>")]]
-NDN_CXX_NODISCARD inline std::string
-toHex(const uint8_t* buffer, size_t length, bool wantUpperCase = true)
-{
-  return toHex({buffer, length}, wantUpperCase);
-}
-
-/**
- * @brief Convert the hex string to buffer
- * @param hexString sequence of pairs of hex numbers (lower and upper case can be mixed)
+ * @brief Convert a hex string to a raw byte buffer.
+ * @param hexString Sequence of pairs of hex numbers (lower and upper case can be mixed)
  *        without any whitespace separators (e.g., "48656C6C6F2C20776F726C6421")
- * @throw StringHelperError if input is invalid
+ * @throw StringHelperError Input string is invalid
  */
 shared_ptr<Buffer>
 fromHex(const std::string& hexString);
 
 /**
- * @brief Convert (the least significant nibble of) @p n to the corresponding hex character
+ * @brief Convert (the least significant nibble of) @p n to the corresponding hex character.
  */
 NDN_CXX_NODISCARD constexpr char
 toHexChar(unsigned int n, bool wantUpperCase = true) noexcept
@@ -174,7 +123,7 @@
 }
 
 /**
- * @brief Convert the hex character @p c to an integer in [0, 15], or -1 if it's not a hex character
+ * @brief Convert the hex character @p c to an integer in [0, 15], or -1 if it's not a hex character.
  */
 NDN_CXX_NODISCARD constexpr int
 fromHexChar(char c) noexcept
@@ -186,13 +135,12 @@
 }
 
 /**
- * @brief Percent-encode a string
- * @see RFC 3986 section 2
+ * @brief Percent-encode a string.
  *
  * This function will encode all characters that are not one of the following:
  * ALPHA ("a" to "z" and "A" to "Z") / DIGIT (0 to 9) / "-" / "." / "_" / "~"
  *
- * The hex encoding uses the numbers 0-9 and the uppercase letters A-F.
+ * The hex encoding uses the numbers `0-9` and the uppercase letters `A-F`.
  *
  * Examples:
  *
@@ -200,6 +148,8 @@
  * escape("hello world") == "hello%20world"
  * escape("100%") == "100%25"
  * @endcode
+ *
+ * @see RFC 3986 section 2
  */
 NDN_CXX_NODISCARD std::string
 escape(const std::string& str);
@@ -208,10 +158,9 @@
 escape(std::ostream& os, const char* str, size_t len);
 
 /**
- * @brief Decode a percent-encoded string
- * @see RFC 3986 section 2
+ * @brief Decode a percent-encoded string.
  *
- * When % is not followed by two hex characters, the output is not transformed.
+ * When `%` is not followed by two hex characters, the output is not transformed.
  *
  * Examples:
  *
@@ -219,6 +168,8 @@
  * unescape("hello%20world") == "hello world"
  * unescape("hello%20world%FooBar") == "hello world%FooBar"
  * @endcode
+ *
+ * @see RFC 3986 section 2
  */
 NDN_CXX_NODISCARD std::string
 unescape(const std::string& str);
diff --git a/tests/unit/data.t.cpp b/tests/unit/data.t.cpp
index 2b59850..9b530d6 100644
--- a/tests/unit/data.t.cpp
+++ b/tests/unit/data.t.cpp
@@ -532,12 +532,6 @@
   BOOST_CHECK_EQUAL(d.getContent().type(), tlv::Content);
   BOOST_CHECK_EQUAL(d.getContent().value_size(), 0);
 
-  // raw buffer overload (deprecated)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-  BOOST_CHECK_THROW(d.setContent(nullptr, 1), std::invalid_argument);
-#pragma GCC diagnostic pop
-
   // ConstBufferPtr overload
   d.setContent(std::make_shared<Buffer>(direct, sizeof(direct)));
   BOOST_CHECK_EQUAL(d.hasContent(), true);
diff --git a/tests/unit/interest.t.cpp b/tests/unit/interest.t.cpp
index 722a2d5..9e71cfb 100644
--- a/tests/unit/interest.t.cpp
+++ b/tests/unit/interest.t.cpp
@@ -884,12 +884,6 @@
   i.setApplicationParameters(span<uint8_t>{});
   BOOST_CHECK_EQUAL(i.getApplicationParameters(), "2400"_block);
 
-  // raw buffer+size overload (deprecated)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-  BOOST_CHECK_THROW(i.setApplicationParameters(nullptr, 42), std::invalid_argument);
-#pragma GCC diagnostic pop
-
   // ConstBufferPtr overload
   i.setApplicationParameters(make_shared<Buffer>(PARAMETERS2, sizeof(PARAMETERS2)));
   BOOST_CHECK_EQUAL(i.getApplicationParameters(), "2401C2"_block);
