diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index 65dda101f5..25456d0493 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -1156,6 +1156,7 @@ video_not_supported_in_browser = Your browser does not support the HTML5 'video'
 audio_not_supported_in_browser = Your browser does not support the HTML5 'audio' tag.
 stored_lfs = Stored with Git LFS
 symbolic_link = Symbolic link
+executable_file = Executable File
 commit_graph = Commit Graph
 commit_graph.select = Select branches
 commit_graph.hide_pr_refs = Hide Pull Requests
diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go
index cf719c49f0..ad87bae9b8 100644
--- a/routers/web/repo/view.go
+++ b/routers/web/repo/view.go
@@ -390,6 +390,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
 	ctx.Data["IsRepresentableAsText"] = isRepresentableAsText
 	ctx.Data["IsDisplayingSource"] = isDisplayingSource
 	ctx.Data["IsDisplayingRendered"] = isDisplayingRendered
+	ctx.Data["IsExecutable"] = entry.IsExecutable()
 
 	isTextSource := fInfo.isTextFile || isDisplayingSource
 	ctx.Data["IsTextSource"] = isTextSource
diff --git a/templates/repo/file_info.tmpl b/templates/repo/file_info.tmpl
index 580966d35c..44256a0dcb 100644
--- a/templates/repo/file_info.tmpl
+++ b/templates/repo/file_info.tmpl
@@ -25,4 +25,9 @@
 			{{.LexerName}}
 		</div>
 	{{end}}
+	{{if .IsExecutable}}
+		<div class="file-info-entry">
+			{{.locale.Tr "repo.executable_file"}}
+		</div>
+	{{end}}
 </div>