diff --git a/changelog.d/17114.doc b/changelog.d/17114.doc
new file mode 100644
index 0000000000000000000000000000000000000000..042bd89618696b32ceb80e06bc1cdd34d922f5a9
--- /dev/null
+++ b/changelog.d/17114.doc
@@ -0,0 +1 @@
+Fix various small typos throughout the docs.
diff --git a/docs/admin_api/room_membership.md b/docs/admin_api/room_membership.md
index 94bc95a8d5c030910759ed29b67fc4572c718380..6cbaba3dcc21859ff1448afb9c079f7a226d78ad 100644
--- a/docs/admin_api/room_membership.md
+++ b/docs/admin_api/room_membership.md
@@ -1,6 +1,6 @@
 # Edit Room Membership API
 
-This API allows an administrator to join an user account with a given `user_id`
+This API allows an administrator to join a user account with a given `user_id`
 to a room with a given `room_id_or_alias`. You can only modify the membership of
 local users. The server administrator must be in the room and have permission to
 invite users.
diff --git a/docs/message_retention_policies.md b/docs/message_retention_policies.md
index c64d1539b050f8259aed013ce8ddf8f053154e64..01f67c952a12192a6642140dfc826fd576428fb1 100644
--- a/docs/message_retention_policies.md
+++ b/docs/message_retention_policies.md
@@ -51,8 +51,8 @@ clients.
 
 ## Server configuration
 
-Support for this feature can be enabled and configured by adding a the
-`retention` in the Synapse configuration file (see
+Support for this feature can be enabled and configured by adding the
+`retention` option in the Synapse configuration file (see
 [configuration manual](usage/configuration/config_documentation.md#retention)).
 
 To enable support for message retention policies, set the setting
@@ -117,7 +117,7 @@ In this example, we define three jobs:
   policy's `max_lifetime` is greater than a week.
 
 Note that this example is tailored to show different configurations and
-features slightly more jobs than it's probably necessary (in practice, a
+features slightly more jobs than is 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
 policy's `max_lifetime` is greater than 3 days).
diff --git a/docs/postgres.md b/docs/postgres.md
index 921bae9877547414ec5ad7f1bfaf186abe5b3eb1..ae34f7689becafa26811c73850b169521f7aa00d 100644
--- a/docs/postgres.md
+++ b/docs/postgres.md
@@ -128,7 +128,7 @@ can read more about that [here](https://www.postgresql.org/docs/10/kernel-resour
 ### Overview
 
 The script `synapse_port_db` allows porting an existing synapse server
-backed by SQLite to using PostgreSQL. This is done in as a two phase
+backed by SQLite to using PostgreSQL. This is done as a two phase
 process:
 
 1.  Copy the existing SQLite database to a separate location and run
diff --git a/docs/setup/installation.md b/docs/setup/installation.md
index 9126874d445b34d776b6f83a6728946c625b5489..ed3e59c470cfc8e3c9a1289bc7b4189da9c6f632 100644
--- a/docs/setup/installation.md
+++ b/docs/setup/installation.md
@@ -259,9 +259,9 @@ users, etc.) to the developers via the `--report-stats` argument.
 
 This command will generate you a config file that you can then customise, but it will
 also generate a set of keys for you. These keys will allow your homeserver to
-identify itself to other homeserver, so don't lose or delete them. It would be
+identify itself to other homeservers, so don't lose or delete them. It would be
 wise to back them up somewhere safe. (If, for whatever reason, you do need to
-change your homeserver's keys, you may find that other homeserver have the
+change your homeserver's keys, you may find that other homeservers have the
 old key cached. If you update the signing key, you should change the name of the
 key in the `<server name>.signing.key` file (the second word) to something
 different. See the [spec](https://matrix.org/docs/spec/server_server/latest.html#retrieving-server-keys) for more information on key management).
diff --git a/docs/usage/administration/admin_api/background_updates.md b/docs/usage/administration/admin_api/background_updates.md
index 9f6ac7d567844f042304330242279903e3d25c5e..7b75ee558708cf6023c1b2110e44d988d195e07b 100644
--- a/docs/usage/administration/admin_api/background_updates.md
+++ b/docs/usage/administration/admin_api/background_updates.md
@@ -44,7 +44,7 @@ For each update:
 
 ## Enabled
 
-This API allow pausing background updates.
+This API allows pausing background updates.
 
 Background updates should *not* be paused for significant periods of time, as
 this can affect the performance of Synapse.
diff --git a/docs/usage/administration/admin_faq.md b/docs/usage/administration/admin_faq.md
index 092dcc1c846cb1f0228b2b670565dc77c982292b..0d98f73fb19f283d04f2ec1101096aa533aa8380 100644
--- a/docs/usage/administration/admin_faq.md
+++ b/docs/usage/administration/admin_faq.md
@@ -241,7 +241,7 @@ in memory constrained environments, or increased if performance starts to
 degrade.
 
 However, degraded performance due to a low cache factor, common on
-machines with slow disks, often leads to explosions in memory use due
+machines with slow disks, often leads to explosions in memory use due to
 backlogged requests. In this case, reducing the cache factor will make
 things worse. Instead, try increasing it drastically. 2.0 is a good
 starting value.
diff --git a/docs/user_directory.md b/docs/user_directory.md
index 1271cfb8621c9dbd196887de27c08479fc9a74c3..be8664a0163dd914c6b24812f7c1831ce5c5a764 100644
--- a/docs/user_directory.md
+++ b/docs/user_directory.md
@@ -86,9 +86,9 @@ The search term is then split into words:
 * If unavailable, then runs of ASCII characters, numbers, underscores, and hyphens
   are considered words.
 
-The queries for PostgreSQL and SQLite are detailed below, by their overall goal
+The queries for PostgreSQL and SQLite are detailed below, but their overall goal
 is to find matching users, preferring users who are "real" (e.g. not bots,
-not deactivated). It is assumed that real users will have an display name and
+not deactivated). It is assumed that real users will have a display name and
 avatar set.
 
 ### PostgreSQL
diff --git a/docs/workers.md b/docs/workers.md
index 9a0cc9f2f4e21277a8bd323a27f199a1a9825127..82f4bfc1d11383e45ad6cc04444f3a4012126a85 100644
--- a/docs/workers.md
+++ b/docs/workers.md
@@ -634,7 +634,7 @@ worker application type.
 
 #### Push Notifications
 
-You can designate generic worker to sending push notifications to
+You can designate generic workers to send push notifications to
 a [push gateway](https://spec.matrix.org/v1.5/push-gateway-api/) such as
 [sygnal](https://github.com/matrix-org/sygnal) and email.