diff --git a/app/assets/javascripts/app/app.js b/app/assets/javascripts/app/app.js
index ce0b43118a787c9dee9879dcc6b52bd66f954039..2c2e219a57cd193864fc89dc8e243b60f1d773ef 100644
--- a/app/assets/javascripts/app/app.js
+++ b/app/assets/javascripts/app/app.js
@@ -40,6 +40,7 @@ var app = {
     this.setupHeader();
     this.setupBackboneLinks();
     this.setupGlobalViews();
+    this.setupDisabledLinks();
   },
 
   hasPreload : function(prop) {
@@ -107,7 +108,13 @@ var app = {
   instrument : function(type, name, object, callback) {
     if(!window.mixpanel) { return }
     window.mixpanel[type](name, object, callback)
-  }
+  },
+
+  setupDisabledLinks: function() {
+    $("a.disabled").click(function(event) {
+      event.preventDefault();
+    });
+  },
 };
 
 $(function() {
diff --git a/app/assets/javascripts/widgets/notifications.js b/app/assets/javascripts/widgets/notifications.js
index 797d94588b96a99717c03faef65ce64eb7370647..0e07bbff0dfb75e20fe5dcc5c814e98f2533fe21 100644
--- a/app/assets/javascripts/widgets/notifications.js
+++ b/app/assets/javascripts/widgets/notifications.js
@@ -22,7 +22,7 @@
           .next(".hidden")
           .removeClass("hidden");
       });
-      self.notificationMenu.find('a#mark_all_read_link').click(function() {
+      self.notificationMenu.find('a#mark_all_read_link').click(function(event) {
         $.ajax({
           url: "/notifications/read_all",
           type: "GET",
@@ -39,6 +39,7 @@
             self.resetCount();
           }
         });
+        $(event.target).addClass("disabled");
         return false;
       });
     });
diff --git a/app/assets/stylesheets/application.css.sass b/app/assets/stylesheets/application.css.sass
index 9ae450b9a165c02f6f5eac95b9860cbeaec7a845..46fbc22831bc144708a94d709210503979f83323 100644
--- a/app/assets/stylesheets/application.css.sass
+++ b/app/assets/stylesheets/application.css.sass
@@ -52,6 +52,13 @@ a
     :color $blue
     :text
       :decoration underline
+  &.disabled
+    :color $link-disabled-grey
+    :cursor default
+  &.disabled.button:hover
+    :color $link-disabled-grey
+    :cursor default
+    :background #f7f7f7
 
 p
   :word-wrap break-word
diff --git a/app/assets/stylesheets/colors.css.scss b/app/assets/stylesheets/colors.css.scss
index f1fa155b3886b05a30ad389869444b2c0f6e54d8..98f6d4fc0133aeb0f894fe9e7bcfb731ea9eb4cd 100644
--- a/app/assets/stylesheets/colors.css.scss
+++ b/app/assets/stylesheets/colors.css.scss
@@ -7,6 +7,7 @@ $border-grey: #DDDDDD;
 $background-grey: #EEEEEE;
 $header-grey: #939393;
 $link-grey: #777777;
+$link-disabled-grey: #999999;
 $text-grey: #999999;
 
 $white: white;
diff --git a/app/assets/stylesheets/header.css.scss b/app/assets/stylesheets/header.css.scss
index 890a57700c996ea85913d592acd7a5049182ad28..f69e1e9658fded46573573880dd25a5996f8d2f8 100644
--- a/app/assets/stylesheets/header.css.scss
+++ b/app/assets/stylesheets/header.css.scss
@@ -131,6 +131,10 @@ body > header {
       }
 
       a { color: $blue; }
+      a.disabled {
+        color: $link-disabled-grey;
+        cursor: default;
+      }
 
       .header {
         padding: 10px;
diff --git a/app/assets/templates/header_tpl.jst.hbs b/app/assets/templates/header_tpl.jst.hbs
index 92d3a35754dc8924ee1aa853089f7f35ce27aec4..5439cfab3a8a1121ccbcd8a95f93f02dba23d800 100644
--- a/app/assets/templates/header_tpl.jst.hbs
+++ b/app/assets/templates/header_tpl.jst.hbs
@@ -45,7 +45,7 @@
         <div class="header">
           <div class="right">
 
-            <a href="#" id="mark_all_read_link">
+            <a href="#" id="mark_all_read_link" class="{{#unless current_user.notifications_count}}disabled{{/unless}}">
               {{t "header.mark_all_as_read"}}
             </a>
             |
diff --git a/app/views/notifications/index.html.haml b/app/views/notifications/index.html.haml
index afbacb82ceedba5d627eb5f2ab5eb6aad5f79662..9bce83da02cfd749d561a52be9c130b0e391d055 100644
--- a/app/views/notifications/index.html.haml
+++ b/app/views/notifications/index.html.haml
@@ -5,7 +5,7 @@
         = @unread_notification_count
       = t('.notifications')
   .span-8.last
-    = link_to t('.mark_all_as_read'), notifications_read_all_path, :class => 'button'
+    = link_to t('.mark_all_as_read'), notifications_read_all_path, :class => "button #{'disabled' unless @unread_notification_count > 0}"
   .span-24.last
     .stream.notifications
       - @group_days.each do |day, notes|