diff --git a/cgit.css b/cgit.css
index 1d4634c..092883f 100644
--- a/cgit.css
+++ b/cgit.css
@@ -687,6 +687,24 @@ div#cgit span.msg-avail {
 	border-radius: 5px;
 }
 
+div#cgit span.msg-avail span.msg-tooltip {
+	color: #000;
+	margin: 0px 0.5em;
+	padding: 0px 0.25em;
+	background-color: #f0f0f0;
+	border: solid 1px #777777;
+	border-radius: 5px;
+	box-shadow: 2px 2px 7px rgba(100,100,100,0.75);
+	visibility: hidden;
+	position: absolute;
+	white-space: pre;
+	z-index: 1;
+}
+
+div#cgit span.msg-avail:hover span.msg-tooltip {
+	visibility: visible;
+}
+
 div#cgit a.branch-deco {
 	color: #000;
 	margin: 0px 0.5em;
diff --git a/ui-log.c b/ui-log.c
index faec658..4193831 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -243,8 +243,11 @@ static void print_commit(struct commit *commit, struct rev_info *revs)
 	}
 	cgit_commit_link(info->subject, NULL, NULL, ctx.qry.head,
 			 oid_to_hex(&commit->object.oid), ctx.qry.vpath);
-	if (!ctx.qry.showmsg && info->msg && *(info->msg))
-		html("<span class='msg-avail'>...</span>");
+	if (!ctx.qry.showmsg && info->msg && *(info->msg)) {
+		html("<span class='msg-avail'>...<span class='msg-tooltip'>");
+		html_txt(info->msg);
+		html("</span></span>");
+	}
 	show_commit_decorations(commit);
 	html("</td><td>");
 	cgit_open_filter(ctx.repo->email_filter, info->author_email, "log");