diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini
index a4e777fa1..329dd34d7 100644
--- a/custom/conf/app.example.ini
+++ b/custom/conf/app.example.ini
@@ -1238,6 +1238,10 @@ LEVEL = Info
 ;; Whether to only show relevant repos on the explore page when no keyword is specified and default sorting is used.
 ;; A repo is considered irrelevant if it's a fork or if it has no metadata (no description, no icon, no topic).
 ;ONLY_SHOW_RELEVANT_REPOS = false
+;;
+;; Change the sort type of the explore pages.
+;; Default is "recentupdate", but you also have "alphabetically", "reverselastlogin", "newest", "oldest".
+;EXPLORE_PAGING_DEFAULT_SORT = recentupdate
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/docs/content/administration/config-cheat-sheet.en-us.md b/docs/content/administration/config-cheat-sheet.en-us.md
index 401da352c..2da6bd3ff 100644
--- a/docs/content/administration/config-cheat-sheet.en-us.md
+++ b/docs/content/administration/config-cheat-sheet.en-us.md
@@ -229,8 +229,9 @@ The following configuration set `Content-Type: application/vnd.android.package-a
     add it to this config.
 - `DEFAULT_SHOW_FULL_NAME`: **false**: Whether the full name of the users should be shown where possible. If the full name isn't set, the username will be used.
 - `SEARCH_REPO_DESCRIPTION`: **true**: Whether to search within description at repository search on explore page.
-- `ONLY_SHOW_RELEVANT_REPOS`: **false** Whether to only show relevant repos on the explore page when no keyword is specified and default sorting is used.
+- `ONLY_SHOW_RELEVANT_REPOS`: **false**: Whether to only show relevant repos on the explore page when no keyword is specified and default sorting is used.
     A repo is considered irrelevant if it's a fork or if it has no metadata (no description, no icon, no topic).
+- `EXPLORE_PAGING_DEFAULT_SORT`: **recentupdate**: Change the sort type of the explore pages. Valid values are "recentupdate", "alphabetically", "reverselastlogin", "newest" and "oldest"
 
 ### UI - Admin (`ui.admin`)
 
diff --git a/modules/setting/ui.go b/modules/setting/ui.go
index 231698bf6..31042d3ee 100644
--- a/modules/setting/ui.go
+++ b/modules/setting/ui.go
@@ -33,6 +33,7 @@ var UI = struct {
 	CustomEmojisMap       map[string]string `ini:"-"`
 	SearchRepoDescription bool
 	OnlyShowRelevantRepos bool
+	ExploreDefaultSort    string `ini:"EXPLORE_PAGING_DEFAULT_SORT"`
 
 	Notification struct {
 		MinTimeout            time.Duration
diff --git a/routers/web/admin/orgs.go b/routers/web/admin/orgs.go
index ab44f8048..00131c9e2 100644
--- a/routers/web/admin/orgs.go
+++ b/routers/web/admin/orgs.go
@@ -24,7 +24,7 @@ func Organizations(ctx *context.Context) {
 	ctx.Data["PageIsAdminOrganizations"] = true
 
 	if ctx.FormString("sort") == "" {
-		ctx.SetFormString("sort", explore.UserSearchDefaultAdminSort)
+		ctx.SetFormString("sort", UserSearchDefaultAdminSort)
 	}
 
 	explore.RenderUserSearch(ctx, &user_model.SearchUserOptions{
diff --git a/routers/web/admin/users.go b/routers/web/admin/users.go
index 630d73983..58120818b 100644
--- a/routers/web/admin/users.go
+++ b/routers/web/admin/users.go
@@ -37,6 +37,9 @@ const (
 	tplUserEdit base.TplName = "admin/user/edit"
 )
 
+// UserSearchDefaultAdminSort is the default sort type for admin view
+const UserSearchDefaultAdminSort = "alphabetically"
+
 // Users show all the users
 func Users(ctx *context.Context) {
 	ctx.Data["Title"] = ctx.Tr("admin.users")
@@ -56,7 +59,7 @@ func Users(ctx *context.Context) {
 
 	sortType := ctx.FormString("sort")
 	if sortType == "" {
-		sortType = explore.UserSearchDefaultAdminSort
+		sortType = UserSearchDefaultAdminSort
 		ctx.SetFormString("sort", sortType)
 	}
 	ctx.PageData["adminUserListSearchForm"] = map[string]any{
diff --git a/routers/web/explore/org.go b/routers/web/explore/org.go
index e37bce6b4..dc1318bee 100644
--- a/routers/web/explore/org.go
+++ b/routers/web/explore/org.go
@@ -25,7 +25,7 @@ func Organizations(ctx *context.Context) {
 	}
 
 	if ctx.FormString("sort") == "" {
-		ctx.SetFormString("sort", UserSearchDefaultSortType)
+		ctx.SetFormString("sort", setting.UI.ExploreDefaultSort)
 	}
 
 	RenderUserSearch(ctx, &user_model.SearchUserOptions{
diff --git a/routers/web/explore/repo.go b/routers/web/explore/repo.go
index e5f7977ab..0446edebe 100644
--- a/routers/web/explore/repo.go
+++ b/routers/web/explore/repo.go
@@ -57,8 +57,13 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) {
 		orderBy db.SearchOrderBy
 	)
 
-	ctx.Data["SortType"] = ctx.FormString("sort")
-	switch ctx.FormString("sort") {
+	sortOrder := ctx.FormString("sort")
+	if sortOrder == "" {
+		sortOrder = setting.UI.ExploreDefaultSort
+	}
+	ctx.Data["SortType"] = sortOrder
+
+	switch sortOrder {
 	case "newest":
 		orderBy = db.SearchOrderByNewest
 	case "oldest":
diff --git a/routers/web/explore/user.go b/routers/web/explore/user.go
index c76000408..09d31f95e 100644
--- a/routers/web/explore/user.go
+++ b/routers/web/explore/user.go
@@ -23,12 +23,6 @@ const (
 	tplExploreUsers base.TplName = "explore/users"
 )
 
-// UserSearchDefaultSortType is the default sort type for user search
-const (
-	UserSearchDefaultSortType  = "recentupdate"
-	UserSearchDefaultAdminSort = "alphabetically"
-)
-
 var nullByte = []byte{0x00}
 
 func isKeywordValid(keyword string) bool {
@@ -60,8 +54,13 @@ func RenderUserSearch(ctx *context.Context, opts *user_model.SearchUserOptions,
 
 	// we can not set orderBy to `models.SearchOrderByXxx`, because there may be a JOIN in the statement, different tables may have the same name columns
 
-	ctx.Data["SortType"] = ctx.FormString("sort")
-	switch ctx.FormString("sort") {
+	sortOrder := ctx.FormString("sort")
+	if sortOrder == "" {
+		sortOrder = setting.UI.ExploreDefaultSort
+	}
+	ctx.Data["SortType"] = sortOrder
+
+	switch sortOrder {
 	case "newest":
 		orderBy = "`user`.id DESC"
 	case "oldest":
@@ -134,7 +133,7 @@ func Users(ctx *context.Context) {
 	ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled
 
 	if ctx.FormString("sort") == "" {
-		ctx.SetFormString("sort", UserSearchDefaultSortType)
+		ctx.SetFormString("sort", setting.UI.ExploreDefaultSort)
 	}
 
 	RenderUserSearch(ctx, &user_model.SearchUserOptions{