diff --git a/src/main/kotlin/player/services/PlayerServiceImpl.kt b/src/main/kotlin/player/services/PlayerServiceImpl.kt
index 22f92a79e6374f8607d1379fac4ba07a36849927..57eb05aa5c4b5661f32b76bcade0c0780bc09c10 100644
--- a/src/main/kotlin/player/services/PlayerServiceImpl.kt
+++ b/src/main/kotlin/player/services/PlayerServiceImpl.kt
@@ -37,11 +37,17 @@ class PlayerServiceImpl(private val playerRepository: PlayerRepository) : Player
 
     override suspend fun getPlayersRanked(): List<PlayerInfoDTO> {
         val allPlayers = playerRepository.findAll()
+        var currentRank = 1
+        var previousPoints = 0
         return allPlayers.sortedByDescending { it.pointsNumber }.mapIndexed { index, player ->
+            if (previousPoints != player.pointsNumber) {
+                currentRank = index + 1
+            }
+            previousPoints = player.pointsNumber
             PlayerInfoDTO(
                 pseudo = player.pseudo,
                 pointsNumber = player.pointsNumber,
-                ranking = index + 1
+                ranking = currentRank,
             )
         }
 
diff --git a/src/test/kotlin/player/PlayerServiceTest.kt b/src/test/kotlin/player/PlayerServiceTest.kt
index e4aaa1421feb7f93179853ef875c8538b64fc455..38de6ebb68381f15eb2f914beb2ac962e83cce2b 100644
--- a/src/test/kotlin/player/PlayerServiceTest.kt
+++ b/src/test/kotlin/player/PlayerServiceTest.kt
@@ -102,6 +102,16 @@ class PlayerServiceTest {
         assertThat(result.last().ranking).isEqualTo(2)
     }
 
+    @Test
+    fun `when getting all players with two players with the same points number, should return the same rank`() {
+        val player2WithSamePoints = player2.copy(pointsNumber = 30)
+        val player3WithSamePoints = Player(pseudo = "Charlie", pointsNumber = 30)
+        coEvery { playerRepository.findAll() } returns listOf(player1, player2WithSamePoints, player3WithSamePoints)
+        val result = runBlocking { playerService.getPlayersRanked() }
+        assertThat(result.first().ranking).isEqualTo(result[1].ranking)
+        assertThat(result.last().ranking).isNotEqualTo(2)
+    }
+
     @Test
     fun `when deleting all players, should call the repository once`() {
         coEvery { playerRepository.deleteAllPlayers() } just runs