diff --git a/routers/repo/blame.go b/routers/repo/blame.go
index beed59ea977..00ef9a99eae 100644
--- a/routers/repo/blame.go
+++ b/routers/repo/blame.go
@@ -194,6 +194,12 @@ func RefBlame(ctx *context.Context) {
 		commitNames[c.ID.String()] = c
 	}
 
+	// Get Topics of this repo
+	renderRepoTopics(ctx)
+	if ctx.Written() {
+		return
+	}
+
 	renderBlame(ctx, blameParts, commitNames)
 
 	ctx.HTML(200, tplBlame)
diff --git a/routers/repo/view.go b/routers/repo/view.go
index 5bcf4dae3bb..9c9cdc06bfe 100644
--- a/routers/repo/view.go
+++ b/routers/repo/view.go
@@ -621,6 +621,17 @@ func renderLanguageStats(ctx *context.Context) {
 	ctx.Data["LanguageStats"] = langs
 }
 
+func renderRepoTopics(ctx *context.Context) {
+	topics, err := models.FindTopics(&models.FindTopicOptions{
+		RepoID: ctx.Repo.Repository.ID,
+	})
+	if err != nil {
+		ctx.ServerError("models.FindTopics", err)
+		return
+	}
+	ctx.Data["Topics"] = topics
+}
+
 func renderCode(ctx *context.Context) {
 	ctx.Data["PageIsViewCode"] = true
 
@@ -645,14 +656,10 @@ func renderCode(ctx *context.Context) {
 	}
 
 	// Get Topics of this repo
-	topics, err := models.FindTopics(&models.FindTopicOptions{
-		RepoID: ctx.Repo.Repository.ID,
-	})
-	if err != nil {
-		ctx.ServerError("models.FindTopics", err)
+	renderRepoTopics(ctx)
+	if ctx.Written() {
 		return
 	}
-	ctx.Data["Topics"] = topics
 
 	// Get current entry user currently looking at.
 	entry, err := ctx.Repo.Commit.GetTreeEntryByPath(ctx.Repo.TreePath)