diff --git a/gajim/roster_window.py b/gajim/roster_window.py
index 9b686c5f271ba3ce05f5153d281990a06e6d36a5..cdf539489a2742f0b2f4a35631b041d141231f71 100644
--- a/gajim/roster_window.py
+++ b/gajim/roster_window.py
@@ -3065,6 +3065,25 @@ def on_groupchat_maximized(self, widget, jid, account):
         mw.set_active_tab(ctrl)
         self.remove_groupchat(jid, account, maximize=True)
 
+    def on_groupchat_rename(self, _widget, jid, account):
+        def _on_rename(new_name):
+            con = app.connections[account]
+            con.get_module('Bookmarks').modify(jid, name=new_name)
+
+        contact = app.contacts.get_first_contact_from_jid(account, jid)
+        name = contact.get_shown_name()
+
+        InputDialog(
+            _('Rename Group Chat'),
+            _('Rename Group Chat'),
+            _('Please enter a new name for this group chat'),
+            [DialogButton.make('Cancel'),
+             DialogButton.make('Accept',
+                               text=_('_Rename'),
+                               callback=_on_rename)],
+            input_str=name,
+            transient_for=self.window).show()
+
     def on_change_status_message_activate(self, widget, account):
         show = app.SHOW_LIST[app.connections[account].connected]
         def on_response(message, pep_dict):
@@ -5168,6 +5187,13 @@ def make_groupchat_menu(self, event, titer):
                 jid, account)
             menu.append(maximize_menuitem)
 
+            rename_menuitem = Gtk.MenuItem.new_with_mnemonic(_('Re_name'))
+            rename_menuitem.connect('activate',
+                                    self.on_groupchat_rename,
+                                    jid,
+                                    account)
+            menu.append(rename_menuitem)
+
         if not app.gc_connected[account].get(jid, False):
             connect_menuitem = Gtk.MenuItem.new_with_mnemonic(_(
                 '_Reconnect'))