diff --git a/briar-gtk/briar_gtk/actions/window.py b/briar-gtk/briar_gtk/actions/window.py
index f7cda09a6bf7431e57369605d3fbb7defbbfeab7..4d79ee07b56590aa7f9777dccc26d9b21d7b835f 100644
--- a/briar-gtk/briar_gtk/actions/window.py
+++ b/briar-gtk/briar_gtk/actions/window.py
@@ -23,6 +23,7 @@ class WindowActions(Actions):
 
     def _setup_actions(self):
         self._setup_back_to_sidebar_action()
+        self._setup_delete_all_messages_action()
         self._setup_delete_contact_action()
         self._setup_change_alias_contact_action()
         self._setup_open_about_page_action()
@@ -36,6 +37,10 @@ class WindowActions(Actions):
             f"{WINDOW_PREFIX}.back-to-sidebar", ["<Ctrl>w"]
         )
 
+    def _setup_delete_all_messages_action(self):
+        self._setup_action("delete-all-messages-dialog", None,
+                           self._delete_all_messages_dialog)
+
     def _setup_delete_contact_action(self):
         self._setup_action("delete-contact-dialog", None,
                            self._delete_contact_dialog)
@@ -62,6 +67,10 @@ class WindowActions(Actions):
         if isinstance(self.widget.current_container, MainWindowContainer):
             self.widget.current_container.show_sidebar()
 
+    # pylint: disable=unused-argument
+    def _delete_all_messages_dialog(self, action, parameter):
+        self.widget.current_container.open_delete_all_messages_dialog()
+
     # pylint: disable=unused-argument
     def _delete_contact_dialog(self, action, parameter):
         self.widget.current_container.open_delete_contact_dialog()
diff --git a/briar-gtk/briar_gtk/containers/main_window.py b/briar-gtk/briar_gtk/containers/main_window.py
index b9e0554e2d569ada4e91dc12fae22747429f23fb..d311c1acbb3bf87e21afac383018aec78a8f49c4 100644
--- a/briar-gtk/briar_gtk/containers/main_window.py
+++ b/briar-gtk/briar_gtk/containers/main_window.py
@@ -9,6 +9,7 @@ from gettext import gettext as _
 from gi.repository import Gio, GLib, Gtk
 
 from briar_wrapper.models.contacts import Contacts
+from briar_wrapper.models.private_chat import PrivateChat
 
 from briar_gtk.container import Container
 from briar_gtk.containers.private_chat import PrivateChatContainer
@@ -112,6 +113,24 @@ class MainWindowContainer(Container):
             self.contact_name_label.set_text(user_alias)
             self._refresh_contacts()
 
+    def open_delete_all_messages_dialog(self):
+        if self._current_contact_id == 0:
+            raise Exception("Can't delete all messages with contact ID 0")
+
+        confirmation_dialog = Gtk.MessageDialog(
+            transient_for=APP().window,
+            flags=Gtk.DialogFlags.MODAL,
+            message_type=Gtk.MessageType.WARNING,
+            buttons=Gtk.ButtonsType.OK_CANCEL,
+            text=_("Confirm Message Deletion"),
+        )
+        confirmation_dialog.format_secondary_text(
+            _("Are you sure that you want to delete all messages?")
+        )
+
+        confirmation_dialog.connect("response", self._delete_all_messages)
+        confirmation_dialog.show_all()
+
     def open_delete_contact_dialog(self):
         if self._current_contact_id == 0:
             raise Exception("Can't delete contact with ID 0")
@@ -131,6 +150,14 @@ class MainWindowContainer(Container):
         confirmation_dialog.connect("response", self._delete_contact)
         confirmation_dialog.show_all()
 
+    def _delete_all_messages(self, widget, response_id):
+        if response_id == Gtk.ResponseType.OK:
+            private_chat = PrivateChat(APP().api, self._current_contact_id)
+            private_chat.delete_all_messages()
+            self._refresh_contacts()
+            self.show_sidebar()
+        widget.destroy()
+
     def _delete_contact(self, widget, response_id):
         if response_id == Gtk.ResponseType.OK:
             Contacts(APP().api).delete(self._current_contact_id)
diff --git a/briar-gtk/data/ui/chat_menu.ui b/briar-gtk/data/ui/chat_menu.ui
index 471d119a40a05df977b98efa6095aaad8b6ed04b..3e3f789d2554851933c122b08937bddc6b2818b1 100755
--- a/briar-gtk/data/ui/chat_menu.ui
+++ b/briar-gtk/data/ui/chat_menu.ui
@@ -35,6 +35,20 @@
             <property name="position">0</property>
           </packing>
         </child>
+        <child>
+          <object class="GtkModelButton" id="delete-all-messages-menu-entry">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">False</property>
+            <property name="action_name">win.delete-all-messages-dialog</property>
+            <property name="text" translatable="yes">Delete all messages</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
         <child>
           <object class="GtkModelButton" id="delete-menu-entry">
             <property name="visible">True</property>
@@ -46,7 +60,7 @@
           <packing>
             <property name="expand">False</property>
             <property name="fill">True</property>
-            <property name="position">1</property>
+            <property name="position">2</property>
           </packing>
         </child>
       </object>