diff --git a/modules/context/pagination.go b/modules/context/pagination.go
index 617b472f0d..8cd3c1d5a4 100644
--- a/modules/context/pagination.go
+++ b/modules/context/pagination.go
@@ -19,10 +19,11 @@ type Pagination struct {
 	urlParams []string
 }
 
-// NewPagination creates a new instance of the Pagination struct
-func NewPagination(total, page, issueNum, numPages int) *Pagination {
+// NewPagination creates a new instance of the Pagination struct.
+// "pagingNum" is "page size" or "limit", "current" is "page"
+func NewPagination(total, pagingNum, current, numPages int) *Pagination {
 	p := &Pagination{}
-	p.Paginater = paginator.New(total, page, issueNum, numPages)
+	p.Paginater = paginator.New(total, pagingNum, current, numPages)
 	return p
 }
 
diff --git a/routers/web/repo/branch.go b/routers/web/repo/branch.go
index 6085fd8693..bc7f87451a 100644
--- a/routers/web/repo/branch.go
+++ b/routers/web/repo/branch.go
@@ -9,6 +9,7 @@ import (
 	"errors"
 	"fmt"
 	"net/http"
+	"net/url"
 	"strings"
 
 	"code.gitea.io/gitea/models"
@@ -66,21 +67,17 @@ func Branches(ctx *context.Context) {
 	if page <= 1 {
 		page = 1
 	}
+	pageSize := setting.Git.BranchesRangeSize
 
-	limit := ctx.FormInt("limit")
-	if limit <= 0 || limit > setting.Git.BranchesRangeSize {
-		limit = setting.Git.BranchesRangeSize
-	}
-
-	skip := (page - 1) * limit
-	log.Debug("Branches: skip: %d limit: %d", skip, limit)
-	defaultBranchBranch, branches, branchesCount := loadBranches(ctx, skip, limit)
+	skip := (page - 1) * pageSize
+	log.Debug("Branches: skip: %d limit: %d", skip, pageSize)
+	defaultBranchBranch, branches, branchesCount := loadBranches(ctx, skip, pageSize)
 	if ctx.Written() {
 		return
 	}
 	ctx.Data["Branches"] = branches
 	ctx.Data["DefaultBranchBranch"] = defaultBranchBranch
-	pager := context.NewPagination(branchesCount, setting.Git.BranchesRangeSize, page, 5)
+	pager := context.NewPagination(branchesCount, pageSize, page, 5)
 	pager.SetDefaultParams(ctx)
 	ctx.Data["Page"] = pager
 
@@ -166,7 +163,7 @@ func RestoreBranchPost(ctx *context.Context) {
 
 func redirect(ctx *context.Context) {
 	ctx.JSON(http.StatusOK, map[string]interface{}{
-		"redirect": ctx.Repo.RepoLink + "/branches",
+		"redirect": ctx.Repo.RepoLink + "/branches?page=" + url.QueryEscape(ctx.FormString("page")),
 	})
 }
 
diff --git a/templates/repo/branch/list.tmpl b/templates/repo/branch/list.tmpl
index 3702410df5..acb73f71d0 100644
--- a/templates/repo/branch/list.tmpl
+++ b/templates/repo/branch/list.tmpl
@@ -81,9 +81,9 @@
 									<td class="three wide right aligned">
 										{{if not .LatestPullRequest}}
 											{{if .IsIncluded}}
-												<a class="ui tooltip orange large label" data-content="{{$.locale.Tr "repo.branch.included_desc"}}" data-position="top right">
+												<span class="ui tooltip orange large label" data-content="{{$.locale.Tr "repo.branch.included_desc"}}" data-position="top right">
 													{{svg "octicon-git-pull-request"}} {{$.locale.Tr "repo.branch.included"}}
-												</a>
+												</span>
 											{{else if and (not .IsDeleted) $.AllowsPulls (gt .CommitsAhead 0)}}
 											<a href="{{$.RepoLink}}/compare/{{PathEscapeSegments $.DefaultBranch}}...{{if ne $.Repository.Owner.Name $.Owner.Name}}{{PathEscape $.Owner.Name}}:{{end}}{{PathEscapeSegments .Name}}">
 												<button id="new-pull-request" class="ui compact basic button mr-0">{{if $.CanPull}}{{$.locale.Tr "repo.pulls.compare_changes"}}{{else}}{{$.locale.Tr "action.compare_branch"}}{{end}}</button>
@@ -123,13 +123,13 @@
 										{{end}}
 										{{if and $.IsWriter (not $.IsMirror) (not $.Repository.IsArchived) (not .IsProtected)}}
 											{{if .IsDeleted}}
-												<button class="ui basic jump button icon tooltip undo-button" data-url="{{$.Link}}/restore?branch_id={{.DeletedBranch.ID}}&name={{.DeletedBranch.Name}}" data-content="{{$.locale.Tr "repo.branch.restore" (.Name)}}" data-position="top right">
+												<button class="ui basic jump button icon tooltip undo-button" data-url="{{$.Link}}/restore?branch_id={{.DeletedBranch.ID}}&name={{.DeletedBranch.Name}}&page={{$.Page.Paginater.Current}}" data-content="{{$.locale.Tr "repo.branch.restore" (.Name)}}" data-position="top right">
 													<span class="text blue">
 														{{svg "octicon-reply"}}
 													</span>
 												</button>
 											{{else}}
-												<button class="ui basic jump button icon tooltip delete-button delete-branch-button" data-url="{{$.Link}}/delete?name={{.Name}}" data-content="{{$.locale.Tr "repo.branch.delete" (.Name)}}" data-position="top right" data-name="{{.Name}}">
+												<button class="ui basic jump button icon tooltip delete-button delete-branch-button" data-url="{{$.Link}}/delete?name={{.Name}}&page={{$.Page.Paginater.Current}}" data-content="{{$.locale.Tr "repo.branch.delete" (.Name)}}" data-position="top right" data-name="{{.Name}}">
 													{{svg "octicon-trash"}}
 												</button>
 											{{end}}