diff --git a/fpdfsdk/fpdfdoc.cpp b/fpdfsdk/fpdfdoc.cpp
index 2dcf606..ce4fc34 100644
--- a/fpdfsdk/fpdfdoc.cpp
+++ b/fpdfsdk/fpdfdoc.cpp
@@ -396,10 +396,10 @@
   return Utf16EncodeMaybeCopyAndReturnLength(text, buffer, buflen);
 }
 
-DLLEXPORT unsigned long STDCALL FPDF_GetPagelLabel(FPDF_DOCUMENT document,
-                                                   int page_index,
-                                                   void* buffer,
-                                                   unsigned long buflen) {
+DLLEXPORT unsigned long STDCALL FPDF_GetPageLabel(FPDF_DOCUMENT document,
+                                                  int page_index,
+                                                  void* buffer,
+                                                  unsigned long buflen) {
   if (page_index < 0)
     return 0;
 
diff --git a/fpdfsdk/fpdfdoc_embeddertest.cpp b/fpdfsdk/fpdfdoc_embeddertest.cpp
index 67934c5..5441bb3 100644
--- a/fpdfsdk/fpdfdoc_embeddertest.cpp
+++ b/fpdfsdk/fpdfdoc_embeddertest.cpp
@@ -177,7 +177,7 @@
   EXPECT_TRUE(OpenDocument("about_blank.pdf"));
   EXPECT_EQ(1, FPDF_GetPageCount(document()));
 
-  ASSERT_EQ(0u, FPDF_GetPagelLabel(document(), 0, nullptr, 0));
+  ASSERT_EQ(0u, FPDF_GetPageLabel(document(), 0, nullptr, 0));
 }
 
 TEST_F(FPDFDocEmbeddertest, GetPageLabels) {
@@ -185,44 +185,44 @@
   EXPECT_EQ(7, FPDF_GetPageCount(document()));
 
   unsigned short buf[128];
-  EXPECT_EQ(0u, FPDF_GetPagelLabel(document(), -2, buf, sizeof(buf)));
-  EXPECT_EQ(0u, FPDF_GetPagelLabel(document(), -1, buf, sizeof(buf)));
+  EXPECT_EQ(0u, FPDF_GetPageLabel(document(), -2, buf, sizeof(buf)));
+  EXPECT_EQ(0u, FPDF_GetPageLabel(document(), -1, buf, sizeof(buf)));
 
   const FX_WCHAR kExpectedPageLabel0[] = L"i";
-  ASSERT_EQ(4u, FPDF_GetPagelLabel(document(), 0, buf, sizeof(buf)));
+  ASSERT_EQ(4u, FPDF_GetPageLabel(document(), 0, buf, sizeof(buf)));
   EXPECT_EQ(CFX_WideString(kExpectedPageLabel0),
             CFX_WideString::FromUTF16LE(buf, FXSYS_len(kExpectedPageLabel0)));
 
   const FX_WCHAR kExpectedPageLabel1[] = L"ii";
-  ASSERT_EQ(6u, FPDF_GetPagelLabel(document(), 1, buf, sizeof(buf)));
+  ASSERT_EQ(6u, FPDF_GetPageLabel(document(), 1, buf, sizeof(buf)));
   EXPECT_EQ(CFX_WideString(kExpectedPageLabel1),
             CFX_WideString::FromUTF16LE(buf, FXSYS_len(kExpectedPageLabel1)));
 
   const FX_WCHAR kExpectedPageLabel2[] = L"1";
-  ASSERT_EQ(4u, FPDF_GetPagelLabel(document(), 2, buf, sizeof(buf)));
+  ASSERT_EQ(4u, FPDF_GetPageLabel(document(), 2, buf, sizeof(buf)));
   EXPECT_EQ(CFX_WideString(kExpectedPageLabel2),
             CFX_WideString::FromUTF16LE(buf, FXSYS_len(kExpectedPageLabel2)));
 
   const FX_WCHAR kExpectedPageLabel3[] = L"2";
-  ASSERT_EQ(4u, FPDF_GetPagelLabel(document(), 3, buf, sizeof(buf)));
+  ASSERT_EQ(4u, FPDF_GetPageLabel(document(), 3, buf, sizeof(buf)));
   EXPECT_EQ(CFX_WideString(kExpectedPageLabel3),
             CFX_WideString::FromUTF16LE(buf, FXSYS_len(kExpectedPageLabel3)));
 
   const FX_WCHAR kExpectedPageLabel4[] = L"zzA";
-  ASSERT_EQ(8u, FPDF_GetPagelLabel(document(), 4, buf, sizeof(buf)));
+  ASSERT_EQ(8u, FPDF_GetPageLabel(document(), 4, buf, sizeof(buf)));
   EXPECT_EQ(CFX_WideString(kExpectedPageLabel4),
             CFX_WideString::FromUTF16LE(buf, FXSYS_len(kExpectedPageLabel4)));
 
   const FX_WCHAR kExpectedPageLabel5[] = L"zzB";
-  ASSERT_EQ(8u, FPDF_GetPagelLabel(document(), 5, buf, sizeof(buf)));
+  ASSERT_EQ(8u, FPDF_GetPageLabel(document(), 5, buf, sizeof(buf)));
   EXPECT_EQ(CFX_WideString(kExpectedPageLabel5),
             CFX_WideString::FromUTF16LE(buf, FXSYS_len(kExpectedPageLabel5)));
 
   const FX_WCHAR kExpectedPageLabel6[] = L"";
-  ASSERT_EQ(2u, FPDF_GetPagelLabel(document(), 6, buf, sizeof(buf)));
+  ASSERT_EQ(2u, FPDF_GetPageLabel(document(), 6, buf, sizeof(buf)));
   EXPECT_EQ(CFX_WideString(kExpectedPageLabel6),
             CFX_WideString::FromUTF16LE(buf, FXSYS_len(kExpectedPageLabel6)));
 
-  ASSERT_EQ(0u, FPDF_GetPagelLabel(document(), 7, buf, sizeof(buf)));
-  ASSERT_EQ(0u, FPDF_GetPagelLabel(document(), 8, buf, sizeof(buf)));
+  ASSERT_EQ(0u, FPDF_GetPageLabel(document(), 7, buf, sizeof(buf)));
+  ASSERT_EQ(0u, FPDF_GetPageLabel(document(), 8, buf, sizeof(buf)));
 }
diff --git a/fpdfsdk/fpdfview_c_api_test.c b/fpdfsdk/fpdfview_c_api_test.c
index 8cbbf4f..98478f0 100644
--- a/fpdfsdk/fpdfview_c_api_test.c
+++ b/fpdfsdk/fpdfview_c_api_test.c
@@ -65,7 +65,7 @@
     CHK(FPDFLink_CountQuadPoints);
     CHK(FPDFLink_GetQuadPoints);
     CHK(FPDF_GetMetaText);
-    CHK(FPDF_GetPagelLabel);
+    CHK(FPDF_GetPageLabel);
 
     // fpdf_edit.h
     CHK(FPDF_CreateNewDocument);
diff --git a/public/fpdf_doc.h b/public/fpdf_doc.h
index 10f8995..9d55a2e 100644
--- a/public/fpdf_doc.h
+++ b/public/fpdf_doc.h
@@ -313,10 +313,10 @@
 // The |buffer| is always encoded in UTF-16LE. The |buffer| is followed by two
 // bytes of zeros indicating the end of the string.  If |buflen| is less than
 // the returned length, or |buffer| is NULL, |buffer| will not be modified.
-DLLEXPORT unsigned long STDCALL FPDF_GetPagelLabel(FPDF_DOCUMENT document,
-                                                   int page_index,
-                                                   void* buffer,
-                                                   unsigned long buflen);
+DLLEXPORT unsigned long STDCALL FPDF_GetPageLabel(FPDF_DOCUMENT document,
+                                                  int page_index,
+                                                  void* buffer,
+                                                  unsigned long buflen);
 
 #ifdef __cplusplus
 }  // extern "C"
