diff --git a/fxbarcode/BC_Utils.cpp b/fxbarcode/BC_Utils.cpp
deleted file mode 100644
index 1d09e24..0000000
--- a/fxbarcode/BC_Utils.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include <vector>
-
-#include "fxbarcode/utils.h"
-
-bool BC_FX_ByteString_Replace(ByteString& dst,
-                              uint32_t first,
-                              uint32_t last,
-                              int32_t count,
-                              char c) {
-  if (first > last || count <= 0) {
-    return false;
-  }
-  dst.Delete(first, last - first);
-  for (int32_t i = 0; i < count; i++) {
-    dst.InsertAtFront(c);
-  }
-  return true;
-}
-
-void BC_FX_ByteString_Append(ByteString& dst, int32_t count, char c) {
-  for (int32_t i = 0; i < count; i++)
-    dst += c;
-}
-void BC_FX_ByteString_Append(ByteString& dst, const std::vector<uint8_t>& ba) {
-  for (uint8_t value : ba)
-    dst += value;
-}
diff --git a/fxbarcode/BUILD.gn b/fxbarcode/BUILD.gn
index 428414f..a8f37a1 100644
--- a/fxbarcode/BUILD.gn
+++ b/fxbarcode/BUILD.gn
@@ -16,7 +16,6 @@
     "BC_TwoDimWriter.h",
     "BC_UtilCodingConvert.cpp",
     "BC_UtilCodingConvert.h",
-    "BC_Utils.cpp",
     "BC_Writer.cpp",
     "BC_Writer.h",
     "cbc_codabar.cpp",
diff --git a/fxbarcode/utils.h b/fxbarcode/utils.h
index 6a0cfca..2b31f50 100644
--- a/fxbarcode/utils.h
+++ b/fxbarcode/utils.h
@@ -7,26 +7,6 @@
 #ifndef FXBARCODE_UTILS_H_
 #define FXBARCODE_UTILS_H_
 
-#include <ctype.h>
-
-#include <vector>
-
-#include "core/fxcrt/fx_string.h"
-
-bool BC_FX_ByteString_Replace(ByteString& dst,
-                              uint32_t first,
-                              uint32_t last,
-                              int32_t count,
-                              char c);
-void BC_FX_ByteString_Append(ByteString& dst, int32_t count, char c);
-void BC_FX_ByteString_Append(ByteString& dst, const std::vector<uint8_t>& ba);
-
-#if _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_
-#include <limits>
-#elif _FX_OS_ == _FX_OS_MACOSX_ || _FX_OS_ == _FX_OS_LINUX_
-#include <limits.h>
-#endif
-
 enum BCFORMAT {
   BCFORMAT_UNSPECIFY = -1,
   BCFORMAT_CODABAR,
