diff --git a/models/repo_list.go b/models/repo_list.go
index df6b81cb8d..b1527b73c9 100644
--- a/models/repo_list.go
+++ b/models/repo_list.go
@@ -152,6 +152,10 @@ const (
 	SearchOrderBySizeReverse                         = "size DESC"
 	SearchOrderByID                                  = "id ASC"
 	SearchOrderByIDReverse                           = "id DESC"
+	SearchOrderByStars                               = "num_stars ASC"
+	SearchOrderByStarsReverse                        = "num_stars DESC"
+	SearchOrderByForks                               = "num_forks ASC"
+	SearchOrderByForksReverse                        = "num_forks DESC"
 )
 
 // SearchRepositoryByName takes keyword and part of repository name to search,
diff --git a/models/user.go b/models/user.go
index 8f5ee6e5a7..d642054979 100644
--- a/models/user.go
+++ b/models/user.go
@@ -1272,7 +1272,7 @@ func GetUser(user *User) (bool, error) {
 type SearchUserOptions struct {
 	Keyword       string
 	Type          UserType
-	OrderBy       string
+	OrderBy       SearchOrderBy
 	Page          int
 	PageSize      int // Can be smaller than or equal to setting.UI.ExplorePagingNum
 	IsActive      util.OptionalBool
@@ -1322,7 +1322,7 @@ func SearchUsers(opts *SearchUserOptions) (users []*User, _ int64, _ error) {
 	users = make([]*User, 0, opts.PageSize)
 	return users, count, x.Where(cond).
 		Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).
-		OrderBy(opts.OrderBy).
+		OrderBy(opts.OrderBy.String()).
 		Find(&users)
 }
 
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index 49c03a9e14..0520300189 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -693,6 +693,10 @@ issues.filter_sort.recentupdate = Recently updated
 issues.filter_sort.leastupdate = Least recently updated
 issues.filter_sort.mostcomment = Most commented
 issues.filter_sort.leastcomment = Least commented
+issues.filter_sort.moststars = Most stars
+issues.filter_sort.feweststars = Fewest stars
+issues.filter_sort.mostforks = Most forks
+issues.filter_sort.fewestforks = Fewest forks
 issues.action_open = Open
 issues.action_close = Close
 issues.action_label = Label
@@ -1359,6 +1363,7 @@ repos.name = Name
 repos.private = Private
 repos.watches = Watches
 repos.stars = Stars
+repos.forks = Forks
 repos.issues = Issues
 repos.size = Size
 
diff --git a/routers/home.go b/routers/home.go
index 4810eb4e6f..5bb353c7e1 100644
--- a/routers/home.go
+++ b/routers/home.go
@@ -104,6 +104,14 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) {
 		orderBy = models.SearchOrderBySizeReverse
 	case "size":
 		orderBy = models.SearchOrderBySize
+	case "moststars":
+		orderBy = models.SearchOrderByStarsReverse
+	case "feweststars":
+		orderBy = models.SearchOrderByStars
+	case "mostforks":
+		orderBy = models.SearchOrderByForksReverse
+	case "fewestforks":
+		orderBy = models.SearchOrderByForks
 	default:
 		ctx.Data["SortType"] = "recentupdate"
 		orderBy = models.SearchOrderByRecentUpdated
@@ -164,26 +172,26 @@ func RenderUserSearch(ctx *context.Context, opts *models.SearchUserOptions, tplN
 		users   []*models.User
 		count   int64
 		err     error
-		orderBy string
+		orderBy models.SearchOrderBy
 	)
 
 	ctx.Data["SortType"] = ctx.Query("sort")
 	switch ctx.Query("sort") {
 	case "newest":
-		orderBy = "id DESC"
+		orderBy = models.SearchOrderByIDReverse
 	case "oldest":
-		orderBy = "id ASC"
+		orderBy = models.SearchOrderByID
 	case "recentupdate":
-		orderBy = "updated_unix DESC"
+		orderBy = models.SearchOrderByRecentUpdated
 	case "leastupdate":
-		orderBy = "updated_unix ASC"
+		orderBy = models.SearchOrderByLeastUpdated
 	case "reversealphabetically":
-		orderBy = "name DESC"
+		orderBy = models.SearchOrderByAlphabeticallyReverse
 	case "alphabetically":
-		orderBy = "name ASC"
+		orderBy = models.SearchOrderByAlphabetically
 	default:
 		ctx.Data["SortType"] = "alphabetically"
-		orderBy = "name ASC"
+		orderBy = models.SearchOrderByAlphabetically
 	}
 
 	opts.Keyword = strings.Trim(ctx.Query("q"), " ")
diff --git a/routers/user/profile.go b/routers/user/profile.go
index 6f8b8fe897..fb731e715c 100644
--- a/routers/user/profile.go
+++ b/routers/user/profile.go
@@ -125,6 +125,14 @@ func Profile(ctx *context.Context) {
 		orderBy = models.SearchOrderByAlphabeticallyReverse
 	case "alphabetically":
 		orderBy = models.SearchOrderByAlphabetically
+	case "moststars":
+		orderBy = models.SearchOrderByStarsReverse
+	case "feweststars":
+		orderBy = models.SearchOrderByStars
+	case "mostforks":
+		orderBy = models.SearchOrderByForksReverse
+	case "fewestforks":
+		orderBy = models.SearchOrderByForks
 	default:
 		ctx.Data["SortType"] = "recentupdate"
 		orderBy = models.SearchOrderByRecentUpdated
diff --git a/templates/admin/base/search.tmpl b/templates/admin/base/search.tmpl
index 7d23e51c89..b817a8ad79 100644
--- a/templates/admin/base/search.tmpl
+++ b/templates/admin/base/search.tmpl
@@ -12,8 +12,6 @@
 			<a class="{{if eq .SortType "reversealphabetically"}}active{{end}} item" href="{{$.Link}}?sort=reversealphabetically&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.label.filter_sort.reverse_alphabetically"}}</a>
 			<a class="{{if eq .SortType "recentupdate"}}active{{end}} item" href="{{$.Link}}?sort=recentupdate&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.filter_sort.recentupdate"}}</a>
 			<a class="{{if eq .SortType "leastupdate"}}active{{end}} item" href="{{$.Link}}?sort=leastupdate&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.filter_sort.leastupdate"}}</a>
-			<a class="{{if eq .SortType "size"}}active{{end}} item" href="{{$.Link}}?sort=size&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.label.filter_sort.by_size"}}</a>
-			<a class="{{if eq .SortType "reversesize"}}active{{end}} item" href="{{$.Link}}?sort=reversesize&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.label.filter_sort.reverse_by_size"}}</a>
 		</div>
 	</div>
 </div>
diff --git a/templates/admin/repo/list.tmpl b/templates/admin/repo/list.tmpl
index 86d6b80426..f706eaa1c8 100644
--- a/templates/admin/repo/list.tmpl
+++ b/templates/admin/repo/list.tmpl
@@ -7,7 +7,7 @@
 			{{.i18n.Tr "admin.repos.repo_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}})
 		</h4>
 		<div class="ui attached segment">
-			{{template "admin/base/search" .}}
+			{{template "admin/repo/search" .}}
 		</div>
 		<div class="ui attached table segment">
 			<table class="ui very basic striped table">
@@ -19,6 +19,7 @@
 						<th>{{.i18n.Tr "admin.repos.private"}}</th>
 						<th>{{.i18n.Tr "admin.repos.watches"}}</th>
 						<th>{{.i18n.Tr "admin.repos.stars"}}</th>
+						<th>{{.i18n.Tr "admin.repos.forks"}}</th>
 						<th>{{.i18n.Tr "admin.repos.issues"}}</th>
 						<th>{{.i18n.Tr "admin.repos.size"}}</th>
 						<th>{{.i18n.Tr "admin.users.created"}}</th>
@@ -34,6 +35,7 @@
 							<td><i class="fa fa{{if .IsPrivate}}-check{{end}}-square-o"></i></td>
 							<td>{{.NumWatches}}</td>
 							<td>{{.NumStars}}</td>
+							<td>{{.NumForks}}</td>
 							<td>{{.NumIssues}}</td>
 							<td>{{SizeFmt .Size}}</td>
 							<td><span title="{{.CreatedUnix.FormatLong}}">{{.CreatedUnix.FormatShort}}</span></td>
diff --git a/templates/admin/repo/search.tmpl b/templates/admin/repo/search.tmpl
new file mode 100644
index 0000000000..8e69f7c388
--- /dev/null
+++ b/templates/admin/repo/search.tmpl
@@ -0,0 +1,29 @@
+<div class="ui right floated secondary filter menu">
+	<!-- Sort -->
+	<div class="ui dropdown type jump item">
+		<span class="text">
+			{{.i18n.Tr "repo.issues.filter_sort"}}
+				<i class="dropdown icon"></i>
+		</span>
+		<div class="menu">
+			<a class="{{if or (eq .SortType "oldest") (not .SortType)}}active{{end}} item" href="{{$.Link}}?sort=oldest&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.filter_sort.oldest"}}</a>
+			<a class="{{if eq .SortType "newest"}}active{{end}} item" href="{{$.Link}}?sort=newest&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.filter_sort.latest"}}</a>
+			<a class="{{if eq .SortType "alphabetically"}}active{{end}} item" href="{{$.Link}}?sort=alphabetically&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.label.filter_sort.alphabetically"}}</a>
+			<a class="{{if eq .SortType "reversealphabetically"}}active{{end}} item" href="{{$.Link}}?sort=reversealphabetically&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.label.filter_sort.reverse_alphabetically"}}</a>
+			<a class="{{if eq .SortType "recentupdate"}}active{{end}} item" href="{{$.Link}}?sort=recentupdate&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.filter_sort.recentupdate"}}</a>
+			<a class="{{if eq .SortType "leastupdate"}}active{{end}} item" href="{{$.Link}}?sort=leastupdate&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.filter_sort.leastupdate"}}</a>
+			<a class="{{if eq .SortType "moststars"}}active{{end}} item" href="{{$.Link}}?sort=moststars&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.moststars"}}</a>
+			<a class="{{if eq .SortType "feweststars"}}active{{end}} item" href="{{$.Link}}?sort=feweststars&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.feweststars"}}</a>
+			<a class="{{if eq .SortType "mostforks"}}active{{end}} item" href="{{$.Link}}?sort=mostforks&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.mostforks"}}</a>
+			<a class="{{if eq .SortType "fewestforks"}}active{{end}} item" href="{{$.Link}}?sort=fewestforks&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.fewestforks"}}</a>
+			<a class="{{if eq .SortType "size"}}active{{end}} item" href="{{$.Link}}?sort=size&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.label.filter_sort.by_size"}}</a>
+			<a class="{{if eq .SortType "reversesize"}}active{{end}} item" href="{{$.Link}}?sort=reversesize&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.label.filter_sort.reverse_by_size"}}</a>
+		</div>
+	</div>
+</div>
+<form class="ui form ignore-dirty"  style="max-width: 90%">
+	<div class="ui fluid action input">
+		<input name="q" value="{{.Keyword}}" placeholder="{{.i18n.Tr "explore.search"}}..." autofocus>
+		<button class="ui blue button">{{.i18n.Tr "explore.search"}}</button>
+	</div>
+</form>
diff --git a/templates/explore/repo_search.tmpl b/templates/explore/repo_search.tmpl
new file mode 100644
index 0000000000..de0b63e077
--- /dev/null
+++ b/templates/explore/repo_search.tmpl
@@ -0,0 +1,29 @@
+<div class="ui right floated secondary filter menu">
+    <!-- Sort -->
+    <div class="ui right dropdown type jump item">
+		<span class="text">
+			{{.i18n.Tr "repo.issues.filter_sort"}}
+                <i class="dropdown icon"></i>
+		</span>
+        <div class="menu">
+            <a class="{{if eq .SortType "newest"}}active{{end}} item" href="{{$.Link}}?sort=newest&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.latest"}}</a>
+            <a class="{{if eq .SortType "oldest"}}active{{end}} item" href="{{$.Link}}?sort=oldest&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.oldest"}}</a>
+            <a class="{{if eq .SortType "alphabetically"}}active{{end}} item" href="{{$.Link}}?sort=alphabetically&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.label.filter_sort.alphabetically"}}</a>
+            <a class="{{if eq .SortType "reversealphabetically"}}active{{end}} item" href="{{$.Link}}?sort=reversealphabetically&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.label.filter_sort.reverse_alphabetically"}}</a>
+            <a class="{{if eq .SortType "recentupdate"}}active{{end}} item" href="{{$.Link}}?sort=recentupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.recentupdate"}}</a>
+            <a class="{{if eq .SortType "leastupdate"}}active{{end}} item" href="{{$.Link}}?sort=leastupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.leastupdate"}}</a>
+            <a class="{{if eq .SortType "moststars"}}active{{end}} item" href="{{$.Link}}?sort=moststars&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.moststars"}}</a>
+            <a class="{{if eq .SortType "feweststars"}}active{{end}} item" href="{{$.Link}}?sort=feweststars&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.feweststars"}}</a>
+            <a class="{{if eq .SortType "mostforks"}}active{{end}} item" href="{{$.Link}}?sort=mostforks&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.mostforks"}}</a>
+            <a class="{{if eq .SortType "fewestforks"}}active{{end}} item" href="{{$.Link}}?sort=fewestforks&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.fewestforks"}}</a>
+        </div>
+    </div>
+</div>
+<form class="ui form ignore-dirty" style="max-width: 90%">
+    <div class="ui fluid action input">
+        <input name="q" value="{{.Keyword}}" placeholder="{{.i18n.Tr "explore.search"}}..." autofocus>
+        <input type="hidden" name="tab" value="{{$.TabName}}">
+        <button class="ui blue button">{{.i18n.Tr "explore.search"}}</button>
+    </div>
+</form>
+<div class="ui divider"></div>
diff --git a/templates/explore/repos.tmpl b/templates/explore/repos.tmpl
index 9ca9879103..c728219d3e 100644
--- a/templates/explore/repos.tmpl
+++ b/templates/explore/repos.tmpl
@@ -2,7 +2,7 @@
 <div class="explore repositories">
 	{{template "explore/navbar" .}}
 	<div class="ui container">
-		{{template "explore/search" .}}
+		{{template "explore/repo_search" .}}
 		{{template "explore/repo_list" .}}
 		{{template "base/paginate" .}}
 	</div>
diff --git a/templates/user/profile.tmpl b/templates/user/profile.tmpl
index 837f8bd949..915da555be 100644
--- a/templates/user/profile.tmpl
+++ b/templates/user/profile.tmpl
@@ -100,12 +100,12 @@
 					</div>
 				{{else if eq .TabName "stars"}}
 					<div class="stars">
-						{{template "explore/search" .}}
+						{{template "explore/repo_search" .}}
 						{{template "explore/repo_list" .}}
 						{{template "base/paginate" .}}
 					</div>
 				{{else}}
-					{{template "explore/search" .}}
+					{{template "explore/repo_search" .}}
 					{{template "explore/repo_list" .}}
 					{{template "base/paginate" .}}
 				{{end}}