diff --git a/src/main/java/idatt2106/systemutvikling/sparesti/controller/MilestoneController.java b/src/main/java/idatt2106/systemutvikling/sparesti/controller/MilestoneController.java
index 081c73cdfd621a230acc003403a78fcedd303ed6..5122ac143c0f07c9bc45b24680856cb78a361e48 100644
--- a/src/main/java/idatt2106/systemutvikling/sparesti/controller/MilestoneController.java
+++ b/src/main/java/idatt2106/systemutvikling/sparesti/controller/MilestoneController.java
@@ -4,12 +4,11 @@ import idatt2106.systemutvikling.sparesti.dao.ManualSavingDAO;
 import idatt2106.systemutvikling.sparesti.dao.MilestoneDAO;
 import idatt2106.systemutvikling.sparesti.dto.ManualSavingDTO;
 import idatt2106.systemutvikling.sparesti.dto.MilestoneDTO;
-import idatt2106.systemutvikling.sparesti.service.CurrentUserService;
-import idatt2106.systemutvikling.sparesti.service.ManualSavingService;
-import idatt2106.systemutvikling.sparesti.service.MilestoneService;
-import idatt2106.systemutvikling.sparesti.service.TransactionService;
+import idatt2106.systemutvikling.sparesti.service.*;
 import lombok.AllArgsConstructor;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
@@ -32,12 +31,15 @@ public class MilestoneController {
 
   private final TransactionService transactionService;
 
+  private final JWTService jwtService;
+
 
 
   @GetMapping("/user")
-  public ResponseEntity<List<MilestoneDTO>> getUserMilestones() {
+  public ResponseEntity<Page<MilestoneDTO>> getUserMilestones(@RequestHeader("Authorization") String token, Pageable pageable) {
+    String username = jwtService.extractUsernameFromToken(token);
     logger.info("Received request to get user milestones.");
-    return ResponseEntity.ok(milestoneService.getActiveMilestonesDTOsByUsername(CurrentUserService.getCurrentUsername()));
+  return ResponseEntity.ok(milestoneService.getActiveMilestonesDTOsByUsernamePaginated(username, pageable));
   }
 
   @PostMapping("/create")
diff --git a/src/main/java/idatt2106/systemutvikling/sparesti/controller/MilestoneLogController.java b/src/main/java/idatt2106/systemutvikling/sparesti/controller/MilestoneLogController.java
index da7b91f96c86e9c44ca2afc0653e388f73d394ed..368d55eda3b67f1ae261f1ca37a3890f539dd92b 100644
--- a/src/main/java/idatt2106/systemutvikling/sparesti/controller/MilestoneLogController.java
+++ b/src/main/java/idatt2106/systemutvikling/sparesti/controller/MilestoneLogController.java
@@ -1,12 +1,14 @@
 package idatt2106.systemutvikling.sparesti.controller;
 
 import idatt2106.systemutvikling.sparesti.dto.MilestoneDTO;
+import idatt2106.systemutvikling.sparesti.service.JWTService;
 import idatt2106.systemutvikling.sparesti.service.MilestoneLogService;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
 import java.util.logging.Logger;
 
 @RestController
@@ -16,18 +18,20 @@ import java.util.logging.Logger;
 public class MilestoneLogController {
 
   Logger logger = Logger.getLogger(TokenController.class.getName());
-
   MilestoneLogService milestoneLogService;
+  JWTService jwtService;
 
-  public MilestoneLogController(MilestoneLogService milestoneLogService) {
+  public MilestoneLogController(MilestoneLogService milestoneLogService, JWTService jwtService) {
     this.milestoneLogService = milestoneLogService;
+      this.jwtService = jwtService;
   }
 
   @GetMapping("/user")
-  public ResponseEntity<List<MilestoneDTO>> getUserMilestones(
-      @RequestHeader("Authorization") String token) {
+  public ResponseEntity<Page<MilestoneDTO>> getUserMilestones
+          (@RequestHeader("Authorization") String token, Pageable pageable) {
+    String username = jwtService.extractUsernameFromToken(token);
     logger.info("Received request to get user milestones.");
-    return ResponseEntity.ok(milestoneLogService.getMilestoneLogsByUsername(token));
+    return ResponseEntity.ok(milestoneLogService.getMilestoneLogsByUsernamePaginated(username, pageable));
   }
 
   @PostMapping("/id")
diff --git a/src/main/java/idatt2106/systemutvikling/sparesti/repository/MilestoneLogRepository.java b/src/main/java/idatt2106/systemutvikling/sparesti/repository/MilestoneLogRepository.java
index 00ec9fd8ad29527504d794b9cf24d69e59e7e32b..cc97f976c2298df08923fae05836c5c931ccd6f3 100644
--- a/src/main/java/idatt2106/systemutvikling/sparesti/repository/MilestoneLogRepository.java
+++ b/src/main/java/idatt2106/systemutvikling/sparesti/repository/MilestoneLogRepository.java
@@ -1,6 +1,8 @@
 package idatt2106.systemutvikling.sparesti.repository;
 
 import idatt2106.systemutvikling.sparesti.dao.MilestoneLogDAO;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
@@ -33,15 +35,16 @@ public interface MilestoneLogRepository extends JpaRepository<MilestoneLogDAO, L
    * @param username the username of the user
    * @return a list of milestone logs that belong to the user with the given username
    */
-  List<MilestoneLogDAO> findMilestoneLogDAOByUserDAO_Username(String username);
+  Page<MilestoneLogDAO> findMilestoneLogDAOByUserDAO_Username(String username, Pageable pageable);
 
+  List<MilestoneLogDAO> findMilestoneLogDAOByUserDAO_Username(String username);
   /**
    * Method to find all milestone logs that have a completion date after the given completion date
    *
    * @param completionDate the completion date
    * @return a list of milestone logs that have a completion date after the given date
    */
-  List<MilestoneLogDAO> findMilestoneLogDAOSByCompletionDate(LocalDateTime completionDate);
+  Page<MilestoneLogDAO> findMilestoneLogDAOSByCompletionDate(LocalDateTime completionDate, Pageable pageable);
 
   /**
    * Method to find all milestone logs that have a completion date before the given completion date
diff --git a/src/main/java/idatt2106/systemutvikling/sparesti/repository/MilestoneRepository.java b/src/main/java/idatt2106/systemutvikling/sparesti/repository/MilestoneRepository.java
index 62b217b4c70b8f275f95b288750eb0ef952094db..67206698e1bf8012eff7552f3c950d656ffd92dd 100644
--- a/src/main/java/idatt2106/systemutvikling/sparesti/repository/MilestoneRepository.java
+++ b/src/main/java/idatt2106/systemutvikling/sparesti/repository/MilestoneRepository.java
@@ -3,6 +3,8 @@ package idatt2106.systemutvikling.sparesti.repository;
 import idatt2106.systemutvikling.sparesti.dao.ChallengeLogDAO;
 import idatt2106.systemutvikling.sparesti.dao.MilestoneDAO;
 import idatt2106.systemutvikling.sparesti.dao.UserDAO;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
@@ -35,8 +37,11 @@ public interface MilestoneRepository extends JpaRepository<MilestoneDAO, Long> {
    * @param username the username of the user
    * @return a list of milestones that belong to the user with the given username
    */
+  Page<MilestoneDAO> findMilestoneDAOByUserDAO_Username(String username, Pageable pageable);
+
   List<MilestoneDAO> findMilestoneDAOByUserDAO_Username(String username);
 
+
   /**
    * Method to find all milestones that have a start date after the given start date and a deadline date before the given deadline date
    *
diff --git a/src/main/java/idatt2106/systemutvikling/sparesti/service/MilestoneLogService.java b/src/main/java/idatt2106/systemutvikling/sparesti/service/MilestoneLogService.java
index fd8a9cc9dc9b32228bcf40edcd121b8fc41d817b..9c2011dc6fa3025ddabacf62d024d4e14afebe23 100644
--- a/src/main/java/idatt2106/systemutvikling/sparesti/service/MilestoneLogService.java
+++ b/src/main/java/idatt2106/systemutvikling/sparesti/service/MilestoneLogService.java
@@ -5,13 +5,11 @@ import idatt2106.systemutvikling.sparesti.repository.MilestoneLogRepository;
 import idatt2106.systemutvikling.sparesti.repository.MilestoneRepository;
 import idatt2106.systemutvikling.sparesti.repository.UserRepository;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
-import idatt2106.systemutvikling.sparesti.service.JWTService;
 import idatt2106.systemutvikling.sparesti.dao.MilestoneLogDAO;
-import idatt2106.systemutvikling.sparesti.dao.UserDAO;
-import idatt2106.systemutvikling.sparesti.dao.MilestoneDAO;
-import idatt2106.systemutvikling.sparesti.repository.MilestoneRepository;
-import idatt2106.systemutvikling.sparesti.repository.MilestoneLogRepository;
 import idatt2106.systemutvikling.sparesti.mapper.MilestoneMapper;
 
 import java.util.ArrayList;
@@ -49,6 +47,29 @@ public class MilestoneLogService {
   }
 
 
+  /**
+   * Method to get all milestones for a user.
+   *
+   * @param username The username of the user to get milestones for.
+   * @return List of MilestoneLogDAOs.
+   */
+  public Page<MilestoneDTO> getMilestoneLogsByUsernamePaginated(String username, Pageable pageable) {
+    try {
+      Page<MilestoneLogDAO> milestoneLogDAOs =
+              milestoneLogRepository.findMilestoneLogDAOByUserDAO_Username(username, pageable);
+
+      List<MilestoneDTO> milestoneDTOS = new ArrayList<>();
+      for (MilestoneLogDAO milestoneDAO : milestoneLogDAOs) {
+        milestoneDTOS.add(MilestoneMapper.DAOLogToDTO(milestoneDAO));
+      }
+
+      return new PageImpl<>(milestoneDTOS, pageable, milestoneLogDAOs.getTotalElements());
+    } catch (Exception e) {
+      logger.severe("Error when getting milestones: " + e.getMessage());
+      return null;
+    }
+  }
+
   /**
    * Method to get all milestones for a user.
    *
@@ -57,11 +78,14 @@ public class MilestoneLogService {
    */
   public List<MilestoneDTO> getMilestoneLogsByUsername(String username) {
     try {
-      List<MilestoneLogDAO> milestoneLogDAOs = milestoneLogRepository.findMilestoneLogDAOByUserDAO_Username(username);
+      List<MilestoneLogDAO> milestoneLogDAOs =
+              milestoneLogRepository.findMilestoneLogDAOByUserDAO_Username(username);
+
       List<MilestoneDTO> milestoneDTOS = new ArrayList<>();
       for (MilestoneLogDAO milestoneDAO : milestoneLogDAOs) {
         milestoneDTOS.add(MilestoneMapper.DAOLogToDTO(milestoneDAO));
       }
+
       return milestoneDTOS;
     } catch (Exception e) {
       logger.severe("Error when getting milestones: " + e.getMessage());
diff --git a/src/main/java/idatt2106/systemutvikling/sparesti/service/MilestoneService.java b/src/main/java/idatt2106/systemutvikling/sparesti/service/MilestoneService.java
index 18f49d7a4ec57444ae8565a6eee88f0c84d69636..aee09bc3ca6f044fee7ad057aca7a9fbc78795eb 100644
--- a/src/main/java/idatt2106/systemutvikling/sparesti/service/MilestoneService.java
+++ b/src/main/java/idatt2106/systemutvikling/sparesti/service/MilestoneService.java
@@ -7,6 +7,9 @@ import idatt2106.systemutvikling.sparesti.dto.MilestoneDTO;
 import idatt2106.systemutvikling.sparesti.mapper.MilestoneMapper;
 import idatt2106.systemutvikling.sparesti.service.JWTService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.Pageable;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
@@ -44,6 +47,27 @@ public class MilestoneService {
     this.milestoneLogService = milestoneLogService;
   }
 
+  /**
+   * Method to get all active milestones for a user.
+   *
+   * @param username The username of the user to get milestones for.
+   * @return List of MilestoneDTOs.
+   */
+  public Page<MilestoneDTO> getActiveMilestonesDTOsByUsernamePaginated(String username, Pageable pageable) {
+    try {
+      Page<MilestoneDAO> milestoneDAOs = milestoneRepository.findMilestoneDAOByUserDAO_Username(username, pageable);
+
+      List<MilestoneDTO> milestoneDTOS = new ArrayList<>();
+      for (MilestoneDAO milestoneDAO : milestoneDAOs) {
+        milestoneDTOS.add(MilestoneMapper.toDTO(milestoneDAO));
+      }
+      return new PageImpl<>(milestoneDTOS, pageable, milestoneDAOs.getTotalElements());
+    } catch (Exception e) {
+      logger.severe("Error when getting milestones: " + e.getMessage());
+      return null;
+    }
+  }
+
   /**
    * Method to get all active milestones for a user.
    *
@@ -53,6 +77,7 @@ public class MilestoneService {
   public List<MilestoneDTO> getActiveMilestonesDTOsByUsername(String username) {
     try {
       List<MilestoneDAO> milestoneDAOs = milestoneRepository.findMilestoneDAOByUserDAO_Username(username);
+
       List<MilestoneDTO> milestoneDTOS = new ArrayList<>();
       for (MilestoneDAO milestoneDAO : milestoneDAOs) {
         milestoneDTOS.add(MilestoneMapper.toDTO(milestoneDAO));