diff --git a/changelog.d/12344.removal b/changelog.d/12344.removal
new file mode 100644
index 0000000000000000000000000000000000000000..ecefa76d8ea5f81dbcc0e47d8efe61fae96cfece
--- /dev/null
+++ b/changelog.d/12344.removal
@@ -0,0 +1 @@
+The groups/communities feature in Synapse has been disabled by default.
diff --git a/docs/upgrade.md b/docs/upgrade.md
index f0c0a3998d9857506bc28b9eec231e991f610e09..3d518c81c3b0489f8567b05188eb034f1a31d37f 100644
--- a/docs/upgrade.md
+++ b/docs/upgrade.md
@@ -85,6 +85,13 @@ process, for example:
     dpkg -i matrix-synapse-py3_1.3.0+stretch1_amd64.deb
     ```
 
+# Upgrading to v1.58.0
+
+## Groups/communities feature has been disabled by default
+
+The non-standard groups/communities feature in Synapse has been disabled by default
+and will be removed in Synapse v1.61.0.
+
 # Upgrading to v1.57.0
 
 ## Changes to database schema for application services
diff --git a/synapse/config/experimental.py b/synapse/config/experimental.py
index 0772dce4117ca112545f2e0f551b6cd5bab32f46..979059e72386807eb59faf2c1dfaed6e2b34d4c3 100644
--- a/synapse/config/experimental.py
+++ b/synapse/config/experimental.py
@@ -74,7 +74,7 @@ class ExperimentalConfig(Config):
         self.msc3720_enabled: bool = experimental.get("msc3720_enabled", False)
 
         # The deprecated groups feature.
-        self.groups_enabled: bool = experimental.get("groups_enabled", True)
+        self.groups_enabled: bool = experimental.get("groups_enabled", False)
 
         # MSC2654: Unread counts
         self.msc2654_enabled: bool = experimental.get("msc2654_enabled", False)
diff --git a/tests/rest/admin/test_admin.py b/tests/rest/admin/test_admin.py
index 849d00ab4d94c42382f8bd32e72dca4e172dec26..40571b753a9a43fe527343d9abcadbf5e0cd5570 100644
--- a/tests/rest/admin/test_admin.py
+++ b/tests/rest/admin/test_admin.py
@@ -63,6 +63,7 @@ class DeleteGroupTestCase(unittest.HomeserverTestCase):
         self.other_user = self.register_user("user", "pass")
         self.other_user_token = self.login("user", "pass")
 
+    @unittest.override_config({"experimental_features": {"groups_enabled": True}})
     def test_delete_group(self) -> None:
         # Create a new group
         channel = self.make_request(