diff --git a/CHANGELOG b/CHANGELOG
index 74bc366d2037bbb093ae29d92af0e518760c8cee..5d0a01519a5d915dd018fafb70f5e6324a2c77ff 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -62,6 +62,8 @@ v 8.5.0 (unreleased)
   - Replaces "Create merge request" link with one to the "Merge Request" when one exists
   - Fix CI builds badge, add a new link to builds badge, deprecate the old one
   - Fix broken link to project in build notification emails
+  - Add label description
+  - Show label row when filtering issues or merge requests by label
 
 v 8.4.4
   - Update omniauth-saml gem to 1.4.2
diff --git a/app/assets/stylesheets/pages/labels.scss b/app/assets/stylesheets/pages/labels.scss
index d1590e42fcbb9bb278565491e6d3254c2d8d14be..1c78aafdb873c9b9d7c3d3cd534faf74774333e1 100644
--- a/app/assets/stylesheets/pages/labels.scss
+++ b/app/assets/stylesheets/pages/labels.scss
@@ -9,7 +9,7 @@
   }
 }
 
-.manage-labels-list {
+.label-row {
   .label {
     padding: 9px;
     font-size: 14px;
diff --git a/app/controllers/admin/labels_controller.rb b/app/controllers/admin/labels_controller.rb
index 3b070e65d0db6b942fe076d64d97bd0b51168b25..d79ce2b10fedc36054d5092d2c31bb20f1f9056f 100644
--- a/app/controllers/admin/labels_controller.rb
+++ b/app/controllers/admin/labels_controller.rb
@@ -53,6 +53,6 @@ class Admin::LabelsController < Admin::ApplicationController
   end
 
   def label_params
-    params[:label].permit(:title, :color)
+    params[:label].permit(:title, :description, :color)
   end
 end
diff --git a/app/controllers/concerns/issues_action.rb b/app/controllers/concerns/issues_action.rb
index effd47219496a56036661fdfc8d869a9b4e87ec9..91b58c47dd9126a155c75dc3790d120faef2b87a 100644
--- a/app/controllers/concerns/issues_action.rb
+++ b/app/controllers/concerns/issues_action.rb
@@ -6,6 +6,8 @@ module IssuesAction
     @issues = @issues.page(params[:page]).per(ApplicationController::PER_PAGE)
     @issues = @issues.preload(:author, :project)
 
+    @label = Label.where(project: @projects).find_by(title: params[:label_name])
+
     respond_to do |format|
       format.html
       format.atom { render layout: false }
diff --git a/app/controllers/concerns/merge_requests_action.rb b/app/controllers/concerns/merge_requests_action.rb
index f7a25111db96d49c4d045cb1ed57a8c55a0fe2c1..da30477fb303c6fd6fe74b831e3e8687a366824b 100644
--- a/app/controllers/concerns/merge_requests_action.rb
+++ b/app/controllers/concerns/merge_requests_action.rb
@@ -5,5 +5,7 @@ module MergeRequestsAction
     @merge_requests = get_merge_requests_collection
     @merge_requests = @merge_requests.page(params[:page]).per(ApplicationController::PER_PAGE)
     @merge_requests = @merge_requests.preload(:author, :target_project)
+
+    @label = Label.where(project: @projects).find_by(title: params[:label_name])
   end
 end
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index 68244883803f7f4b5b3ef1bc9bc625831612c8c8..67faa1e4437f7bb1fd136612a369556163bb0679 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -32,6 +32,7 @@ class Projects::IssuesController < Projects::ApplicationController
     end
 
     @issues = @issues.page(params[:page]).per(PER_PAGE)
+    @label = @project.labels.find_by(title: params[:label_name])
 
     respond_to do |format|
       format.html
diff --git a/app/controllers/projects/labels_controller.rb b/app/controllers/projects/labels_controller.rb
index 86d6e3e0f6b5d47c1cb980e829205bd86450f555..ecac3c395ec1998d48ae104d2b9795a482819111 100644
--- a/app/controllers/projects/labels_controller.rb
+++ b/app/controllers/projects/labels_controller.rb
@@ -69,7 +69,7 @@ class Projects::LabelsController < Projects::ApplicationController
   end
 
   def label_params
-    params.require(:label).permit(:title, :color)
+    params.require(:label).permit(:title, :description, :color)
   end
 
   def label
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 9d588c370aabeff7a577f6168efe87272882bb5f..86b8e7bdf2e31a7d5b8d73cf449559f68fb08223 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -34,6 +34,8 @@ class Projects::MergeRequestsController < Projects::ApplicationController
     @merge_requests = @merge_requests.page(params[:page]).per(PER_PAGE)
     @merge_requests = @merge_requests.preload(:target_project)
 
+    @label = @project.labels.find_by(title: params[:label_name])
+
     respond_to do |format|
       format.html
       format.json do
diff --git a/app/models/label.rb b/app/models/label.rb
index 220da10a6abe86fabe7c9ec4b670f2e4a7166372..2257a69002e50535e2b9e4224c45280c436b709c 100644
--- a/app/models/label.rb
+++ b/app/models/label.rb
@@ -2,13 +2,14 @@
 #
 # Table name: labels
 #
-#  id         :integer          not null, primary key
-#  title      :string(255)
-#  color      :string(255)
-#  project_id :integer
-#  created_at :datetime
-#  updated_at :datetime
-#  template   :boolean          default(FALSE)
+#  id           :integer          not null, primary key
+#  title        :string(255)
+#  color        :string(255)
+#  project_id   :integer
+#  created_at   :datetime
+#  updated_at   :datetime
+#  template     :boolean          default(FALSE)
+#  description  :string(255)
 #
 
 class Label < ActiveRecord::Base
diff --git a/app/views/admin/labels/_form.html.haml b/app/views/admin/labels/_form.html.haml
index eaa94ed9e3631b5e4b4cd9a011dd1f31a50cd90d..8c6b389bf157ac2c103861ae794ffe631bd71f55 100644
--- a/app/views/admin/labels/_form.html.haml
+++ b/app/views/admin/labels/_form.html.haml
@@ -11,6 +11,10 @@
     = f.label :title, class: 'control-label'
     .col-sm-10
       = f.text_field :title, class: "form-control", required: true
+  .form-group
+    = f.label :description, class: 'control-label'
+    .col-sm-10
+      = f.text_field :description, class: "form-control js-quick-submit"
   .form-group
     = f.label :color, "Background color", class: 'control-label'
     .col-sm-10
diff --git a/app/views/admin/labels/_label.html.haml b/app/views/admin/labels/_label.html.haml
index e3ccbf6c3a84e6d7896b386dfe3c7a482c7cab67..5736a301910596866e63ae72392222419cec28ab 100644
--- a/app/views/admin/labels/_label.html.haml
+++ b/app/views/admin/labels/_label.html.haml
@@ -1,5 +1,7 @@
 %li{id: dom_id(label)}
-  = render_colored_label(label)
-  .pull-right
-    = link_to 'Edit', edit_admin_label_path(label), class: 'btn btn-sm'
-    = link_to 'Delete', admin_label_path(label), class: 'btn btn-sm btn-remove remove-row', method: :delete, remote: true, data: {confirm: "Delete this label? Are you sure?"}
+  .label-row
+    = render_colored_label(label)
+    = markdown(label.description, pipeline: :single_line)
+    .pull-right
+      = link_to 'Edit', edit_admin_label_path(label), class: 'btn btn-sm'
+      = link_to 'Delete', admin_label_path(label), class: 'btn btn-sm btn-remove remove-row', method: :delete, remote: true, data: {confirm: "Delete this label? Are you sure?"}
diff --git a/app/views/projects/labels/_form.html.haml b/app/views/projects/labels/_form.html.haml
index 5ce2a7b985d542f002e08ce5d8e295a3668f3f82..d63d3a3ec20744e41c9dad1ba75424bcb3cf5322 100644
--- a/app/views/projects/labels/_form.html.haml
+++ b/app/views/projects/labels/_form.html.haml
@@ -11,6 +11,10 @@
     = f.label :title, class: 'control-label'
     .col-sm-10
       = f.text_field :title, class: "form-control js-quick-submit", required: true, autofocus: true
+  .form-group
+    = f.label :description, class: 'control-label'
+    .col-sm-10
+      = f.text_field :description, class: "form-control js-quick-submit"
   .form-group
     = f.label :color, "Background color", class: 'control-label'
     .col-sm-10
diff --git a/app/views/projects/labels/_label.html.haml b/app/views/projects/labels/_label.html.haml
index b70a9fc9fe50ecf57526eb0c63a362fdac45568d..3d9118892ff9c5cee111028b280fbabbe471bc01 100644
--- a/app/views/projects/labels/_label.html.haml
+++ b/app/views/projects/labels/_label.html.haml
@@ -1,10 +1,2 @@
 %li{id: dom_id(label)}
-  = link_to_label(label)
-  .pull-right
-    %strong.append-right-20
-      = link_to_label(label) do
-        = pluralize label.open_issues_count, 'open issue'
-
-    - if can? current_user, :admin_label, @project
-      = link_to 'Edit', edit_namespace_project_label_path(@project.namespace, @project, label), class: 'btn btn-sm'
-      = link_to 'Delete', namespace_project_label_path(@project.namespace, @project, label), class: 'btn btn-sm btn-remove remove-row', method: :delete, remote: true, data: {confirm: "Remove this label? Are you sure?"}
+  = render "shared/label_row", label: label, editable: true
diff --git a/app/views/shared/_label_row.html.haml b/app/views/shared/_label_row.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..adfd4e02b2e3933c2049a07308923f41cf7956b2
--- /dev/null
+++ b/app/views/shared/_label_row.html.haml
@@ -0,0 +1,12 @@
+.label-row
+  = link_to_label(label)
+  = markdown(label.description, pipeline: :single_line)
+
+  .pull-right
+    %strong.append-right-20
+      = link_to_label(label) do
+        = pluralize label.open_issues_count, 'open issue'
+
+    - if defined?(editable) && editable && can?(current_user, :admin_label, @project)
+      = link_to 'Edit', edit_namespace_project_label_path(@project.namespace, @project, label), class: 'btn btn-sm'
+      = link_to 'Delete', namespace_project_label_path(@project.namespace, @project, label), class: 'btn btn-sm btn-remove remove-row', method: :delete, remote: true, data: {confirm: "Remove this label? Are you sure?"}
diff --git a/app/views/shared/issuable/_filter.html.haml b/app/views/shared/issuable/_filter.html.haml
index b7e350d27af97c2f371fed09df9084e4eff92f38..c5d61fe3bf069ed74f6393821969d2886c1c6ccc 100644
--- a/app/views/shared/issuable/_filter.html.haml
+++ b/app/views/shared/issuable/_filter.html.haml
@@ -41,6 +41,10 @@
           .filter-item.inline
             = button_tag "Update issues", class: "btn update_selected_issues btn-save"
 
+- if @label.present?
+  .gray-content-block.second-block
+    = render "shared/label_row", label: @label
+
 :javascript
   new UsersSelect();
   $('form.filter-form').on('submit', function (event) {
diff --git a/db/migrate/20160217100506_add_description_to_label.rb b/db/migrate/20160217100506_add_description_to_label.rb
new file mode 100644
index 0000000000000000000000000000000000000000..eed6d1f236aa16cc8032c94c01ecf57ae4f4d16b
--- /dev/null
+++ b/db/migrate/20160217100506_add_description_to_label.rb
@@ -0,0 +1,5 @@
+class AddDescriptionToLabel < ActiveRecord::Migration
+  def change
+    add_column :labels, :description, :string
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 689a8c3ecc529cbc7c098a8e587ee30a104026e1..0976058bd160d4894d5c669365ff6be66a5b8780 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 20160209130428) do
+ActiveRecord::Schema.define(version: 20160217100506) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"
@@ -442,7 +442,8 @@ ActiveRecord::Schema.define(version: 20160209130428) do
     t.integer  "project_id"
     t.datetime "created_at"
     t.datetime "updated_at"
-    t.boolean  "template",   default: false
+    t.boolean  "template",    default: false
+    t.string   "description"
   end
 
   add_index "labels", ["project_id"], name: "index_labels_on_project_id", using: :btree