diff --git a/fpdfsdk/fpdfedit_embeddertest.cpp b/fpdfsdk/fpdfedit_embeddertest.cpp
index f8c053a..44d5aaf 100644
--- a/fpdfsdk/fpdfedit_embeddertest.cpp
+++ b/fpdfsdk/fpdfedit_embeddertest.cpp
@@ -1021,7 +1021,7 @@
   ASSERT_TRUE(OpenDocument("embedded_images.pdf"));
   FPDF_PAGE page = LoadPage(0);
   ASSERT_TRUE(page);
-  ASSERT_EQ(39, FPDFPage_CountObject(page));
+  ASSERT_EQ(39, FPDFPage_CountObjects(page));
 
   FPDF_PAGEOBJECT obj = FPDFPage_GetObject(page, 32);
   EXPECT_NE(FPDF_PAGEOBJ_IMAGE, FPDFPageObj_GetType(obj));
@@ -1075,7 +1075,7 @@
   EXPECT_TRUE(OpenDocument("embedded_images.pdf"));
   FPDF_PAGE page = LoadPage(0);
   ASSERT_TRUE(page);
-  ASSERT_EQ(39, FPDFPage_CountObject(page));
+  ASSERT_EQ(39, FPDFPage_CountObjects(page));
 
   // Retrieve an image object with flate-encoded data stream.
   FPDF_PAGEOBJECT obj = FPDFPage_GetObject(page, 33);
diff --git a/fpdfsdk/fpdfeditimg_unittest.cpp b/fpdfsdk/fpdfeditimg_unittest.cpp
index 0ff3db8..fcc081a 100644
--- a/fpdfsdk/fpdfeditimg_unittest.cpp
+++ b/fpdfsdk/fpdfeditimg_unittest.cpp
@@ -16,17 +16,17 @@
 TEST_F(PDFEditTest, InsertObjectWithInvalidPage) {
   FPDF_DOCUMENT doc = FPDF_CreateNewDocument();
   FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100);
-  EXPECT_EQ(0, FPDFPage_CountObject(page));
+  EXPECT_EQ(0, FPDFPage_CountObjects(page));
 
   FPDFPage_InsertObject(nullptr, nullptr);
-  EXPECT_EQ(0, FPDFPage_CountObject(page));
+  EXPECT_EQ(0, FPDFPage_CountObjects(page));
 
   FPDFPage_InsertObject(page, nullptr);
-  EXPECT_EQ(0, FPDFPage_CountObject(page));
+  EXPECT_EQ(0, FPDFPage_CountObjects(page));
 
   FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc);
   FPDFPage_InsertObject(nullptr, page_image);
-  EXPECT_EQ(0, FPDFPage_CountObject(page));
+  EXPECT_EQ(0, FPDFPage_CountObjects(page));
 
   FPDF_ClosePage(page);
   FPDF_CloseDocument(doc);
@@ -35,11 +35,11 @@
 TEST_F(PDFEditTest, NewImageObj) {
   FPDF_DOCUMENT doc = FPDF_CreateNewDocument();
   FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100);
-  EXPECT_EQ(0, FPDFPage_CountObject(page));
+  EXPECT_EQ(0, FPDFPage_CountObjects(page));
 
   FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc);
   FPDFPage_InsertObject(page, page_image);
-  EXPECT_EQ(1, FPDFPage_CountObject(page));
+  EXPECT_EQ(1, FPDFPage_CountObjects(page));
   EXPECT_TRUE(FPDFPage_GenerateContent(page));
 
   FPDF_ClosePage(page);
@@ -49,7 +49,7 @@
 TEST_F(PDFEditTest, NewImageObjGenerateContent) {
   FPDF_DOCUMENT doc = FPDF_CreateNewDocument();
   FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100);
-  EXPECT_EQ(0, FPDFPage_CountObject(page));
+  EXPECT_EQ(0, FPDFPage_CountObjects(page));
 
   constexpr int kBitmapSize = 50;
   FPDF_BITMAP bitmap = FPDFBitmap_Create(kBitmapSize, kBitmapSize, 0);
@@ -62,7 +62,7 @@
   ASSERT_TRUE(
       FPDFImageObj_SetMatrix(page_image, kBitmapSize, 0, 0, kBitmapSize, 0, 0));
   FPDFPage_InsertObject(page, page_image);
-  EXPECT_EQ(1, FPDFPage_CountObject(page));
+  EXPECT_EQ(1, FPDFPage_CountObjects(page));
   EXPECT_TRUE(FPDFPage_GenerateContent(page));
 
   FPDFBitmap_Destroy(bitmap);
diff --git a/fpdfsdk/fpdfeditpage.cpp b/fpdfsdk/fpdfeditpage.cpp
index 26f4424..b4e71bf 100644
--- a/fpdfsdk/fpdfeditpage.cpp
+++ b/fpdfsdk/fpdfeditpage.cpp
@@ -183,6 +183,10 @@
 }
 
 FPDF_EXPORT int FPDF_CALLCONV FPDFPage_CountObject(FPDF_PAGE page) {
+  return FPDFPage_CountObjects(page);
+}
+
+FPDF_EXPORT int FPDF_CALLCONV FPDFPage_CountObjects(FPDF_PAGE page) {
   CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
   if (!IsPageObject(pPage))
     return -1;
diff --git a/fpdfsdk/fpdfview_c_api_test.c b/fpdfsdk/fpdfview_c_api_test.c
index cc5d6c9..996f48a 100644
--- a/fpdfsdk/fpdfview_c_api_test.c
+++ b/fpdfsdk/fpdfview_c_api_test.c
@@ -120,6 +120,7 @@
     CHK(FPDFPage_SetRotation);
     CHK(FPDFPage_InsertObject);
     CHK(FPDFPage_CountObject);
+    CHK(FPDFPage_CountObjects);
     CHK(FPDFPage_GetObject);
     CHK(FPDFPage_HasTransparency);
     CHK(FPDFPage_GenerateContent);
diff --git a/public/fpdf_edit.h b/public/fpdf_edit.h
index 6e4f9a4..f2dad73 100644
--- a/public/fpdf_edit.h
+++ b/public/fpdf_edit.h
@@ -150,8 +150,17 @@
 //   page - handle to a page.
 //
 // Returns the number of objects in |page|.
+//
+// DEPRECATED. Please use FPDFPage_CountObjects.
 FPDF_EXPORT int FPDF_CALLCONV FPDFPage_CountObject(FPDF_PAGE page);
 
+// Get number of page objects inside |page|.
+//
+//   page - handle to a page.
+//
+// Returns the number of objects in |page|.
+FPDF_EXPORT int FPDF_CALLCONV FPDFPage_CountObjects(FPDF_PAGE page);
+
 // Get object in |page| at |index|.
 //
 //   page  - handle to a page.
diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc
index 40f12a3..0c002a8 100644
--- a/samples/pdfium_test.cc
+++ b/samples/pdfium_test.cc
@@ -1136,7 +1136,7 @@
 }
 
 void SaveImages(FPDF_PAGE page, const char* pdf_name, int page_num) {
-  for (int i = 0; i < FPDFPage_CountObject(page); ++i) {
+  for (int i = 0; i < FPDFPage_CountObjects(page); ++i) {
     FPDF_PAGEOBJECT obj = FPDFPage_GetObject(page, i);
     if (FPDFPageObj_GetType(obj) != FPDF_PAGEOBJ_IMAGE)
       continue;
