diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index 7ea227b8c1..9b9e25ba81 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -1275,3 +1275,6 @@ unread = Unread
 read = Read
 no_unread = You have no unread notifications.
 no_read = You have no read notifications.
+pin = Pin
+mark_as_read = Mark as read
+mark_as_unread = Mark as unread
diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini
index 4893a7644d..0623fbb135 100644
--- a/options/locale/locale_pt-BR.ini
+++ b/options/locale/locale_pt-BR.ini
@@ -1205,3 +1205,6 @@ unread = Não lidas
 read = Lidas
 no_unread = Você não possui notificações não lidas.
 no_read = Você não possui notificações lidas.
+pin = Fixar
+mark_as_read = Marcar como lida
+mark_as_unread = Marcar como não lida
diff --git a/public/css/index.css b/public/css/index.css
index c569209e49..7c84cf8517 100644
--- a/public/css/index.css
+++ b/public/css/index.css
@@ -2712,12 +2712,15 @@ footer .ui.language .menu {
   float: left;
   margin-left: 7px;
 }
-.user.notification .buttons-panel button {
-  padding: 3px;
-}
-.user.notification .buttons-panel form {
+.user.notification table form {
   display: inline-block;
 }
+.user.notification table button {
+  padding: 3px 3px 3px 5px;
+}
+.user.notification table tr {
+  cursor: pointer;
+}
 .user.notification .octicon-issue-opened,
 .user.notification .octicon-git-pull-request {
   color: #21ba45;
diff --git a/public/js/index.js b/public/js/index.js
index bd22442e5f..8674993261 100644
--- a/public/js/index.js
+++ b/public/js/index.js
@@ -1243,6 +1243,11 @@ $(document).ready(function () {
         $($(this).data('target')).slideToggle(100);
     });
 
+    // make table <tr> element clickable like a link
+    $('tr[data-href]').click(function(event) {
+        window.location = $(this).data('href');
+    });
+
     // Highlight JS
     if (typeof hljs != 'undefined') {
         hljs.initHighlightingOnLoad();
diff --git a/public/less/_user.less b/public/less/_user.less
index 38b73f7853..d63b9b3de9 100644
--- a/public/less/_user.less
+++ b/public/less/_user.less
@@ -85,14 +85,18 @@
             margin-left: 7px;
         }
 
-        .buttons-panel {
-            button {
-                padding: 3px;
-            }
-
+        table {
             form {
                 display: inline-block;
             }
+
+            button {
+                padding: 3px 3px 3px 5px;
+            }
+
+            tr {
+                cursor: pointer;
+            }
         }
 
         .octicon-issue-opened, .octicon-git-pull-request {
diff --git a/routers/user/notification.go b/routers/user/notification.go
index 74a33f7e2c..7bc2da18db 100644
--- a/routers/user/notification.go
+++ b/routers/user/notification.go
@@ -73,8 +73,8 @@ func Notifications(c *context.Context) {
 	}
 
 	title := c.Tr("notifications")
-	if count := len(notifications); count > 0 {
-		title = fmt.Sprintf("(%d) %s", count, title)
+	if status == models.NotificationStatusUnread && total > 0 {
+		title = fmt.Sprintf("(%d) %s", total, title)
 	}
 	c.Data["Title"] = title
 	c.Data["Keyword"] = keyword
diff --git a/templates/base/head.tmpl b/templates/base/head.tmpl
index e230436209..176dd51cc0 100644
--- a/templates/base/head.tmpl
+++ b/templates/base/head.tmpl
@@ -82,7 +82,7 @@
 
 								{{if .IsSigned}}
 									<div class="right menu">
-										<a href="{{$.AppSubUrl}}/notifications" class="ui head link jump item poping up" data-content='{{.i18n.Tr "notifications"}}' data-variation="tiny inverted">
+										<a href="{{AppSubUrl}}/notifications" class="ui head link jump item poping up" data-content='{{.i18n.Tr "notifications"}}' data-variation="tiny inverted">
 											<span class="text">
 												<i class="octicon octicon-inbox"><span class="sr-only">{{.i18n.Tr "notifications"}}</span></i>
 
diff --git a/templates/user/notification/notification.tmpl b/templates/user/notification/notification.tmpl
index 3e5c0b7104..04f3bf5a08 100644
--- a/templates/user/notification/notification.tmpl
+++ b/templates/user/notification/notification.tmpl
@@ -2,23 +2,20 @@
 
 <div class="user notification">
 	<div class="ui container">
-		<h1 class="ui header">{{.i18n.Tr "notification.notifications"}}</h1>
+		<h1 class="ui dividing header">{{.i18n.Tr "notification.notifications"}}</h1>
 
 		<div class="ui top attached tabular menu">
-			<a href="{{$.AppSubUrl}}/notifications?q=unread">
+			<a href="{{AppSubUrl}}/notifications?q=unread">
 				<div class="{{if eq .Status 1}}active{{end}} item">
 					{{.i18n.Tr "notification.unread"}}
-					{{if eq .Status 1}}
-						<div class="ui label">{{len .Notifications}}</div>
+					{{if .NotificationUnreadCount}}
+						<div class="ui label">{{.NotificationUnreadCount}}</div>
 					{{end}}
 				</div>
 			</a>
-			<a href="{{$.AppSubUrl}}/notifications?q=read">
+			<a href="{{AppSubUrl}}/notifications?q=read">
 				<div class="{{if eq .Status 2}}active{{end}} item">
 					{{.i18n.Tr "notification.read"}}
-					{{if eq .Status 2}}
-						<div class="ui label">{{len .Notifications}}</div>
-					{{end}}
 				</div>
 			</a>
 		</div>
@@ -30,68 +27,76 @@
 					{{.i18n.Tr "notification.no_read"}}
 				{{end}}
 			{{else}}
-				<div class="ui relaxed divided selection list">
-					{{range $notification := .Notifications}}
-						{{$issue := $notification.GetIssue}}
-						{{$repo := $notification.GetRepo}}
-						{{$repoOwner := $repo.MustOwner}}
+				<table class="ui unstackable striped very compact small selectable table">
+					<tbody>
+						{{range $notification := .Notifications}}
+							{{$issue := $notification.GetIssue}}
+							{{$repo := $notification.GetRepo}}
+							{{$repoOwner := $repo.MustOwner}}
 
-						<a class="item" href="{{$.AppSubUrl}}/{{$repoOwner.Name}}/{{$repo.Name}}/issues/{{$issue.Index}}">
-							<div class="buttons-panel right floated content">
-								{{if ne $notification.Status 3}}
-									<form action="{{$.AppSubUrl}}/notifications/status" method="POST">
-										{{$.CsrfTokenHtml}}
-										<input type="hidden" name="notification_id" value="{{$notification.ID}}" />
-										<input type="hidden" name="status" value="pinned" />
-										<button class="ui button" title="Pin notification">
-											<i class="octicon octicon-pin"></i>
-										</button>
-									</form>
-								{{end}}
-								{{if or (eq $notification.Status 1) (eq $notification.Status 3)}}
-									<form action="{{$.AppSubUrl}}/notifications/status" method="POST">
-										{{$.CsrfTokenHtml}}
-										<input type="hidden" name="notification_id" value="{{$notification.ID}}" />
-										<input type="hidden" name="status" value="read" />
-										<button class="ui button" title="Mark as read">
-											<i class="octicon octicon-check"></i>
-										</button>
-									</form>
-								{{else if eq $notification.Status 2}}
-									<form action="{{$.AppSubUrl}}/notifications/status" method="POST">
-										{{$.CsrfTokenHtml}}
-										<input type="hidden" name="notification_id" value="{{$notification.ID}}" />
-										<input type="hidden" name="status" value="unread" />
-										<button class="ui button" title="Mark as unread">
-											<i class="octicon octicon-bell"></i>
-										</button>
-									</form>
-								{{end}}
-							</div>
-
-							{{if eq $notification.Status 3}}
-								<i class="blue octicon octicon-pin"></i>
-							{{else if $issue.IsPull}}
-								{{if $issue.IsClosed}}
-									<i class="octicon octicon-git-merge"></i>
-								{{else}}
-									<i class="octicon octicon-git-pull-request"></i>
-								{{end}}
-							{{else}}
-								{{if $issue.IsClosed}}
-									<i class="octicon octicon-issue-closed"></i>
-								{{else}}
-									<i class="octicon octicon-issue-opened"></i>
-								{{end}}
-							{{end}}
-
-							<div class="content">
-								<div class="header">{{$repoOwner.Name}}/{{$repo.Name}}</div>
-								<div class="description">#{{$issue.Index}} - {{$issue.Title}}</div>
-							</div>
-						</a>
-					{{end}}
-				</div>
+							<tr data-href="{{AppSubUrl}}/{{$repoOwner.Name}}/{{$repo.Name}}/issues/{{$issue.Index}}">
+								<td class="collapsing">
+									{{if eq $notification.Status 3}}
+										<i class="blue octicon octicon-pin"></i>
+									{{else if $issue.IsPull}}
+										{{if $issue.IsClosed}}
+											<i class="octicon octicon-git-merge"></i>
+										{{else}}
+											<i class="octicon octicon-git-pull-request"></i>
+										{{end}}
+									{{else}}
+										{{if $issue.IsClosed}}
+											<i class="octicon octicon-issue-closed"></i>
+										{{else}}
+											<i class="octicon octicon-issue-opened"></i>
+										{{end}}
+									{{end}}
+								</td>
+								<td class="twelve wide">
+									<a class="item" href="{{AppSubUrl}}/{{$repoOwner.Name}}/{{$repo.Name}}/issues/{{$issue.Index}}">
+										#{{$issue.Index}} - {{$issue.Title}}
+									</a>
+								</td>
+								<td>
+									{{$repoOwner.Name}}/{{$repo.Name}}
+								</td>
+								<td class="collapsing">
+									{{if ne $notification.Status 3}}
+										<form action="{{AppSubUrl}}/notifications/status" method="POST">
+											{{$.CsrfTokenHtml}}
+											<input type="hidden" name="notification_id" value="{{$notification.ID}}" />
+											<input type="hidden" name="status" value="pinned" />
+											<button class="ui mini button" title='{{$.i18n.Tr "notification.pin"}}'>
+												<i class="octicon octicon-pin"></i>
+											</button>
+										</form>
+									{{end}}
+								</td>
+								<td class="collapsing">
+									{{if or (eq $notification.Status 1) (eq $notification.Status 3)}}
+										<form action="{{AppSubUrl}}/notifications/status" method="POST">
+											{{$.CsrfTokenHtml}}
+											<input type="hidden" name="notification_id" value="{{$notification.ID}}" />
+											<input type="hidden" name="status" value="read" />
+											<button class="ui mini button" title='{{$.i18n.Tr "notification.mark_as_read"}}'>
+												<i class="octicon octicon-check"></i>
+											</button>
+										</form>
+									{{else if eq $notification.Status 2}}
+										<form action="{{AppSubUrl}}/notifications/status" method="POST">
+											{{$.CsrfTokenHtml}}
+											<input type="hidden" name="notification_id" value="{{$notification.ID}}" />
+											<input type="hidden" name="status" value="unread" />
+											<button class="ui mini button" title='{{$.i18n.Tr "notification.mark_as_unread"}}'>
+												<i class="octicon octicon-bell"></i>
+											</button>
+										</form>
+									{{end}}
+								</td>
+							</tr>
+						{{end}}
+					</tbody>
+				</table>
 			{{end}}
 		</div>