diff --git a/app/assets/stylesheets/sections/dashboard.scss b/app/assets/stylesheets/sections/dashboard.scss
index f70822c03973ad8f4d9e567c45e68a1f2d0763e1..99bbcbd2108a178c20e14380cff75c3eba66db26 100644
--- a/app/assets/stylesheets/sections/dashboard.scss
+++ b/app/assets/stylesheets/sections/dashboard.scss
@@ -100,3 +100,21 @@
     padding: 2px 5px;
   }
 }
+
+.project-access-icon {
+  margin-left: 10px;
+  float: left;
+  margin-right: 15px;
+  font-size: 20px;
+  margin-bottom: 15px;
+  border: 1px solid #EEE;
+  padding: 8px 12px;
+  border-radius: 50px;
+  background: #f5f5f5;
+  width: 16px;
+  text-align: center;
+
+  i {
+    color: #BBB;
+  }
+}
diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb
index 17715020f87656bff247576198a99d2237805705..045e5805bd0ad450b629b6354b128f605f54a434 100644
--- a/app/controllers/dashboard_controller.rb
+++ b/app/controllers/dashboard_controller.rb
@@ -40,6 +40,7 @@ class DashboardController < ApplicationController
                 end
 
     @projects = @projects.where(namespace_id: Group.find_by_name(params[:group])) if params[:group].present?
+    @projects = @projects.where(visibility_level: params[:visibility_level]) if params[:visibility_level].present?
     @projects = @projects.includes(:namespace).sorted_by_activity
 
     @labels = current_user.authorized_projects.tags_on(:labels)
diff --git a/app/views/dashboard/projects.html.haml b/app/views/dashboard/projects.html.haml
index 5ac90593c3a75e1b04092f126d9cb90b1968d55b..a0ef76c8f2cacd0c105137fa798505a28be9653a 100644
--- a/app/views/dashboard/projects.html.haml
+++ b/app/views/dashboard/projects.html.haml
@@ -26,6 +26,14 @@
           %span.pull-right
             = current_user.owned_projects.count
 
+    %fieldset
+      %legend Visibility
+      %ul.bordered-list.visibility-filter
+        - Gitlab::VisibilityLevel.values.each do |level|
+          %li{ class: (level.to_s == params[:visibility_level]) ? 'active' : 'light' }
+            = link_to projects_dashboard_path(visibility_level: level) do
+              = visibility_level_icon(level)
+              = visibility_level_label(level)
 
     - if @groups.present?
       %fieldset
@@ -56,12 +64,10 @@
       - @projects.each do |project|
         %li.my-project-row
           %h4.project-title
+            .project-access-icon
+              = visibility_level_icon(project.visibility_level)
             = link_to project_path(project), class: dom_class(project) do
               = project.name_with_namespace
-            - unless project.private?
-              %small.access-icon
-                = visibility_level_icon(project.visibility_level)
-                = visibility_level_label(project.visibility_level)
 
             - if current_user.can_leave_project?(project)
               .pull-right