diff --git a/briar-gtk/briar_gtk/containers/private_chat.py b/briar-gtk/briar_gtk/containers/private_chat.py
index 9208995d8ad63bbd4a071cbc956299e350d49a1a..b91afa853381c5226c3c76c87296b3a3551e79db 100644
--- a/briar-gtk/briar_gtk/containers/private_chat.py
+++ b/briar-gtk/briar_gtk/containers/private_chat.py
@@ -26,6 +26,7 @@ class PrivateChatContainer(Container):
         self._signals = list()
         self._contact_name = contact_name
         self._contact_id = contact_id
+        self._previous_message = dict()
 
         self._setup_view()
         self._load_content()
@@ -100,7 +101,12 @@ class PrivateChatContainer(Container):
     def _add_message(self, message):
         if self._is_not_message(message):
             return
-        message_widget = PrivateMessageWidget(self._contact_name, message)
+        message_widget = PrivateMessageWidget(
+            self._contact_name,
+            message,
+            self._previous_message
+        )
+        self._previous_message = message
         self._messages_box.add(message_widget)
 
     @staticmethod
diff --git a/briar-gtk/briar_gtk/widgets/private_message.py b/briar-gtk/briar_gtk/widgets/private_message.py
index 9563fc0203b06050e7a6cf0c7b8e033a9ca87aa1..73d40a60820a8aa562331b23d68e00d523d9f37a 100644
--- a/briar-gtk/briar_gtk/widgets/private_message.py
+++ b/briar-gtk/briar_gtk/widgets/private_message.py
@@ -13,13 +13,12 @@ from gi.repository import Gtk
 
 class PrivateMessageWidget(Gtk.ListBoxRow):
 
-    def __init__(self, contact_name, message):
+    def __init__(self, contact_name, message, previous_message):
         super().__init__()
-        self._setup_view(contact_name, message)
+        self._setup_view(contact_name, message, previous_message)
 
-    def _setup_view(self, contact_name, message):
+    def _setup_view(self, contact_name, message, previous_message):
         self.set_selectable(False)
-        self.set_margin_top(12)
 
         username = contact_name
         username_style_class = "username"
@@ -37,12 +36,15 @@ class PrivateMessageWidget(Gtk.ListBoxRow):
             message["text"])
         body = PrivateMessageWidget._create_body(body_content)
 
-        content = PrivateMessageWidget._create_content(info, body)
-        message_box = PrivateMessageWidget._create_message_box(content)
-
         event_box = Gtk.EventBox()
-        event_box.add(message_box)
+        if self._should_include_info(message, previous_message):
+            self.set_margin_top(12)
+            content = PrivateMessageWidget._create_content(info, body)
+            message_box = PrivateMessageWidget._create_message_box(content)
+        else:
+            message_box = PrivateMessageWidget._create_message_box(body)
 
+        event_box.add(message_box)
         self.add(event_box)
         self.show_all()
 
@@ -109,3 +111,16 @@ class PrivateMessageWidget(Gtk.ListBoxRow):
         message_box = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 10)
         message_box.pack_start(content, True, True, 0)
         return message_box
+
+    @staticmethod
+    def _should_include_info(message, previous_message):
+        if "local" not in previous_message:
+            return True
+        if message["local"] != previous_message["local"]:
+            return True
+
+        time = datetime.fromtimestamp(message.get("timestamp", 0) / 1000)
+        previous_time = datetime.fromtimestamp(
+            previous_message.get("timestamp", 0) / 1000)
+        time_difference = time - previous_time
+        return time_difference.total_seconds() > 60