diff --git a/routers/web/repo/helper.go b/routers/web/repo/helper.go
index 5e1e116018..6fa7579231 100644
--- a/routers/web/repo/helper.go
+++ b/routers/web/repo/helper.go
@@ -5,7 +5,7 @@ package repo
 
 import (
 	"net/url"
-	"sort"
+	"slices"
 
 	"code.gitea.io/gitea/models/user"
 	"code.gitea.io/gitea/modules/git"
@@ -14,12 +14,12 @@ import (
 
 func MakeSelfOnTop(doer *user.User, users []*user.User) []*user.User {
 	if doer != nil {
-		sort.Slice(users, func(i, j int) bool {
-			if users[i].ID == users[j].ID {
-				return false
-			}
-			return users[i].ID == doer.ID // if users[i] is self, put it before others, so less=true
+		doerIndex := slices.IndexFunc(users, func(user *user.User) bool {
+			return user.ID == doer.ID
 		})
+		if doerIndex != -1 {
+			return slices.Insert(slices.Delete(users, doerIndex, doerIndex+1), 0, doer)
+		}
 	}
 	return users
 }
diff --git a/routers/web/repo/helper_test.go b/routers/web/repo/helper_test.go
index 978758e77f..844ad5bf79 100644
--- a/routers/web/repo/helper_test.go
+++ b/routers/web/repo/helper_test.go
@@ -23,4 +23,15 @@ func TestMakeSelfOnTop(t *testing.T) {
 	users = MakeSelfOnTop(&user.User{ID: 2}, []*user.User{{ID: 2}, {ID: 1}})
 	assert.Len(t, users, 2)
 	assert.EqualValues(t, 2, users[0].ID)
+
+	users = MakeSelfOnTop(&user.User{ID: 2}, []*user.User{{ID: 1}})
+	assert.Len(t, users, 1)
+	assert.EqualValues(t, 1, users[0].ID)
+
+	users = MakeSelfOnTop(&user.User{ID: 2}, []*user.User{{ID: 1}, {ID: 2}, {ID: 3}, {ID: 4}})
+	assert.Len(t, users, 4)
+	assert.EqualValues(t, 2, users[0].ID)
+	assert.EqualValues(t, 1, users[1].ID)
+	assert.EqualValues(t, 3, users[2].ID)
+	assert.EqualValues(t, 4, users[3].ID)
 }