diff --git a/changelog.d/12863.doc b/changelog.d/12863.doc
new file mode 100644
index 0000000000000000000000000000000000000000..94f7b8371a5e89ae2140c172c79ecf331fff26c2
--- /dev/null
+++ b/changelog.d/12863.doc
@@ -0,0 +1 @@
+Fix typos in documentation.
\ No newline at end of file
diff --git a/docs/message_retention_policies.md b/docs/message_retention_policies.md
index 9214d6d7e98b2f521b185e20975f9058551f2a09..b52c4aaa2425a785707cd2f47790d1a941c63722 100644
--- a/docs/message_retention_policies.md
+++ b/docs/message_retention_policies.md
@@ -117,7 +117,7 @@ In this example, we define three jobs:
 Note that this example is tailored to show different configurations and
 features slightly more jobs than it's probably necessary (in practice, a
 server admin would probably consider it better to replace the two last
-jobs with one that runs once a day and handles rooms which which
+jobs with one that runs once a day and handles rooms which
 policy's `max_lifetime` is greater than 3 days).
 
 Keep in mind, when configuring these jobs, that a purge job can become
diff --git a/docs/structured_logging.md b/docs/structured_logging.md
index a6667e1a11e6bd1c3bcf6fd82f8da6821e2a08ae..d43dc9eb6ee88e5387c7e1c3ee09b413e23756e2 100644
--- a/docs/structured_logging.md
+++ b/docs/structured_logging.md
@@ -43,7 +43,7 @@ loggers:
 The above logging config will set Synapse as 'INFO' logging level by default,
 with the SQL layer at 'WARNING', and will log to a file, stored as JSON.
 
-It is also possible to figure Synapse to log to a remote endpoint by using the
+It is also possible to configure Synapse to log to a remote endpoint by using the
 `synapse.logging.RemoteHandler` class included with Synapse. It takes the
 following arguments:
 
diff --git a/docs/workers.md b/docs/workers.md
index 779069b8177f4a24c95931049283c01b4b328e29..5033722098bbd7bb96eddbfb99db55b065c1985b 100644
--- a/docs/workers.md
+++ b/docs/workers.md
@@ -1,6 +1,6 @@
 # Scaling synapse via workers
 
-For small instances it recommended to run Synapse in the default monolith mode.
+For small instances it is recommended to run Synapse in the default monolith mode.
 For larger instances where performance is a concern it can be helpful to split
 out functionality into multiple separate python processes. These processes are
 called 'workers', and are (eventually) intended to scale horizontally