diff --git a/changelog.d/11666.feature b/changelog.d/11666.feature
new file mode 100644
index 0000000000000000000000000000000000000000..6f6b127e227827860d09c4f1b8a2b23b34dfc4d2
--- /dev/null
+++ b/changelog.d/11666.feature
@@ -0,0 +1 @@
+Include the room topic in the stripped state included with invites and knocking.
diff --git a/docs/sample_config.yaml b/docs/sample_config.yaml
index 6696ed5d1ef9a360154f76d3ef2696462090491f..00dfd2c013128faa572e7bd37bb3e881c35811ff 100644
--- a/docs/sample_config.yaml
+++ b/docs/sample_config.yaml
@@ -1488,6 +1488,7 @@ room_prejoin_state:
    # - m.room.encryption
    # - m.room.name
    # - m.room.create
+   # - m.room.topic
    #
    # Uncomment the following to disable these defaults (so that only the event
    # types listed in 'additional_event_types' are shared). Defaults to 'false'.
diff --git a/synapse/config/api.py b/synapse/config/api.py
index b18044f9822a8a516f7be42c8984c6f1a2b0c29d..25538b82d555238729f714800c488b23f1427105 100644
--- a/synapse/config/api.py
+++ b/synapse/config/api.py
@@ -107,6 +107,8 @@ _DEFAULT_PREJOIN_STATE_TYPES = [
     EventTypes.Name,
     # Per MSC1772.
     EventTypes.Create,
+    # Per MSC3173.
+    EventTypes.Topic,
 ]
 
 
diff --git a/tests/federation/transport/test_knocking.py b/tests/federation/transport/test_knocking.py
index 663960ff534a1cf9f9dd489fe5984b0b8dfcf081..bfa156eebbe5f93f88fa3d8559fe83df5b8240fd 100644
--- a/tests/federation/transport/test_knocking.py
+++ b/tests/federation/transport/test_knocking.py
@@ -108,6 +108,15 @@ class KnockingStrippedStateEventHelperMixin(TestCase):
                         "state_key": "",
                     },
                 ),
+                (
+                    EventTypes.Topic,
+                    {
+                        "content": {
+                            "topic": "A really cool room",
+                        },
+                        "state_key": "",
+                    },
+                ),
             ]
         )