diff --git a/public/js/filmList.js b/public/js/filmList.js
index cea5a9ef7db656f0b7e09000b5ef7f13d5dfe13d..7b03c8cea4eb6ca7831187d5b89ec1b8b113859c 100644
--- a/public/js/filmList.js
+++ b/public/js/filmList.js
@@ -33,27 +33,67 @@ async function searchFilterHandler() {
 }
 
 function generatePaginationLinks() {
+  console.log(totalPageCount);
   const paginationContainer = document.getElementById("pagination-container");
   paginationContainer.innerHTML = "";
-  console.log(totalPageCount);
 
-  for (let i = 1; i <= totalPageCount; i++) {
-    const pageLink = document.createElement("a");
-    pageLink.setAttribute("class", "page-number");
-    pageLink.textContent = i;
-    pageLink.href = `?page=${i}`;
-    pageLink.classList.add("page-number");
-    if (i === currentPage) {
-      pageLink.setAttribute("class", "page-number active");
-    }
-    pageLink.addEventListener("click", (e) => {
-      e.preventDefault();
-      currentPage = i;
-      searchFilterHandler();
-    });
+  const maxVisiblePages = 8; // Set the maximum number of visible pages
+  const halfVisiblePages = Math.floor(maxVisiblePages / 2);
+
+  let startPage = Math.max(currentPage - halfVisiblePages, 1);
+  let endPage = Math.min(startPage + maxVisiblePages - 1, totalPageCount);
+
+  if (endPage - startPage + 1 < maxVisiblePages) {
+    startPage = Math.max(endPage - maxVisiblePages + 1, 1);
+  }
+
+  if (startPage > 1) {
+    const firstPageLink = createPageLink(1, "First");
+    paginationContainer.appendChild(firstPageLink);
+
+    const ellipsis = createEllipsis();
+    paginationContainer.appendChild(ellipsis);
+  }
 
+  for (let i = startPage; i <= endPage; i++) {
+    const pageLink = createPageLink(i);
     paginationContainer.appendChild(pageLink);
   }
+
+  if (endPage < totalPageCount) {
+    const ellipsis = createEllipsis();
+    paginationContainer.appendChild(ellipsis);
+
+    const lastPageLink = createPageLink(totalPageCount, "Last");
+    paginationContainer.appendChild(lastPageLink);
+  }
+}
+
+function createPageLink(pageNumber, text = "") {
+  const pageLink = document.createElement("a");
+  pageLink.setAttribute("class", "page-number");
+  pageLink.textContent = text || pageNumber;
+  pageLink.href = `?page=${pageNumber}`;
+  pageLink.classList.add("page-number");
+
+  if (pageNumber === currentPage) {
+    pageLink.setAttribute("class", "page-number active");
+  }
+
+  pageLink.addEventListener("click", (e) => {
+    e.preventDefault();
+    currentPage = pageNumber;
+    searchFilterHandler();
+  });
+
+  return pageLink;
+}
+
+function createEllipsis() {
+  const ellipsis = document.createElement("span");
+  ellipsis.textContent = "...";
+  ellipsis.classList.add("ellipsis");
+  return ellipsis;
 }
 
 function updateFilmCards(films) {