diff --git a/CHANGELOG b/CHANGELOG
index 3bbf580b67eb4a76f031d8bb839c65588ad05862..30c8e801ea195516dce09b735724eda2559ebe8c 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -10,6 +10,7 @@ v 8.13.0 (unreleased)
   - Add a /wip slash command to toggle the Work In Progress status of a merge request. !6259 (tbalthazar)
   - Speed-up group milestones show page
   - Don't include archived projects when creating group milestones. !4940 (Jeroen Jacobs)
+  - Add tag shortcut from the Commit page. !6543
   - Keep refs for each deployment
   - Log LDAP lookup errors and don't swallow unrelated exceptions. !6103 (Markus Koller)
   - Add more tests for calendar contribution (ClemMakesApps)
diff --git a/app/views/projects/commit/_commit_box.html.haml b/app/views/projects/commit/_commit_box.html.haml
index 29d767e776967b2b01d960b1edb512bea203f64e..026910abb9089d8d07e6539f14a7f54026caef9e 100644
--- a/app/views/projects/commit/_commit_box.html.haml
+++ b/app/views/projects/commit/_commit_box.html.haml
@@ -24,6 +24,8 @@
             = revert_commit_link(@commit, namespace_project_commit_path(@project.namespace, @project, @commit.id), has_tooltip: false)
         %li.clearfix
           = cherry_pick_commit_link(@commit, namespace_project_commit_path(@project.namespace, @project, @commit.id), has_tooltip: false)
+        %li.clearfix
+          = link_to "Tag", new_namespace_project_tag_path(@project.namespace, @project, ref: @commit)
         %li.divider
         %li.dropdown-header
           Download
diff --git a/features/project/commits/commits.feature b/features/project/commits/commits.feature
index 8b0cb90765eccd30808ac6dfcbd1938db6cec970..1776c07e60e1d32245bd9e9a7ea368a563a40cfc 100644
--- a/features/project/commits/commits.feature
+++ b/features/project/commits/commits.feature
@@ -37,6 +37,11 @@ Feature: Project Commits
     Then I see commit info
     And I see side-by-side diff button
 
+  Scenario: I browse commit from list and create a new tag
+    Given I click on commit link
+    And I click on tag link
+    Then I see commit SHA pre-filled
+
   Scenario: I browse commit with ci from list
     Given commit has ci status
     And repository contains ".gitlab-ci.yml" file
diff --git a/features/steps/project/commits/commits.rb b/features/steps/project/commits/commits.rb
index bea9f9d198b5b0b34e5a5161de8048227f095838..b8264f976871b4b2c9468c737e1f3c5f5d14677d 100644
--- a/features/steps/project/commits/commits.rb
+++ b/features/steps/project/commits/commits.rb
@@ -24,6 +24,14 @@ class Spinach::Features::ProjectCommits < Spinach::FeatureSteps
     expect(body).to have_selector("entry summary", text: commit.description[0..10])
   end
 
+  step 'I click on tag link' do
+    click_link "Tag"
+  end
+
+  step 'I see commit SHA pre-filled' do
+    expect(page).to have_selector("input[value='#{sample_commit.id}']")
+  end
+
   step 'I click on commit link' do
     visit namespace_project_commit_path(@project.namespace, @project, sample_commit.id)
   end