diff --git a/docs/dev/build.rst b/docs/dev/build.rst
index d6b6c3841bfad879d2296cbb347cb9553e1714a1..74b9aa11f2c49fe0baeb4df526e1d2f037081735 100644
--- a/docs/dev/build.rst
+++ b/docs/dev/build.rst
@@ -23,7 +23,7 @@ GLUON_SITE_FEED
     List of site feeds; defined in file *modules* in site config
 
 \*_REPO, \*_BRANCH, \*_COMMIT
-    Git repository URL, branch and and
+    Git repository URL, branch and
     commit ID of the feeds to use. The branch name may be omitted; the default
     branch will be used in this case.
 
@@ -79,7 +79,7 @@ patch.sh
     - updating all git submodules
 
     This solution with a temporary clone ensures that the timestamps of checked
-    out files are not changed by any intermedidate patch steps, but only when
+    out files are not changed by any intermediate patch steps, but only when
     updating the checkout with the final result. This avoids triggering unnecessary
     rebuilds.
 
diff --git a/docs/dev/debugging.rst b/docs/dev/debugging.rst
index 413f1c975aa9799a5376f45bd46b75303d84fd4a..5207342859b2205db5f34a169910b10feb9d7e25 100644
--- a/docs/dev/debugging.rst
+++ b/docs/dev/debugging.rst
@@ -7,7 +7,7 @@ Debugging
 Kernel Oops
 -----------
 
-Sometimes a running Linux kernel detects an error during runtime that canot
+Sometimes a running Linux kernel detects an error during runtime that can't
 be corrected.
 This usually generates a stack trace that points to the location in the code
 that caused the oops.
diff --git a/docs/dev/packages.rst b/docs/dev/packages.rst
index 418e2d9a45b00b80639434cd9fe1acefed99e93b..af047e2170d025f6746c896e284f5115299bdc70 100644
--- a/docs/dev/packages.rst
+++ b/docs/dev/packages.rst
@@ -85,7 +85,7 @@ packages when certain combinations of flags are set.
 Feature definitions use Lua syntax. The function *feature* has two arguments:
 
 * A logical expression composed of feature flag names (each prefixed with an underscore before the opening
-  quotation mark), logical operators (*and*, *or*, *not*) and parantheses
+  quotation mark), logical operators (*and*, *or*, *not*) and parentheses
 * A table with settings that are applied when the logical expression is
   satisfied:
 
diff --git a/docs/dev/wan.rst b/docs/dev/wan.rst
index b992146a07e416cce36b76b25138d9ce2f50c708..ec9d942b22502e327e29e0842a17e047f731f107 100644
--- a/docs/dev/wan.rst
+++ b/docs/dev/wan.rst
@@ -13,7 +13,7 @@ the mesh's DNS servers and use these for all other name resolution.
 
 If the device does not feature a WAN port, the LAN port is configured as WAN port.
 In case such a device has multiple LAN ports, all these can be used as WAN.
-Devices, which feature a "hybrid" port (labled as WAN/LAN), this port is used as WAN.
+Devices, which feature a "hybrid" port (labelled as WAN/LAN), this port is used as WAN.
 
 This behavior can be reversed using the ``single_as_lan`` site.conf option.
 
diff --git a/docs/features/vpn.rst b/docs/features/vpn.rst
index 81b6dfceb1c5efa910363da653f6b590680b7b69..8697baad89b822d161103a434fe86ff49b047076 100644
--- a/docs/features/vpn.rst
+++ b/docs/features/vpn.rst
@@ -47,7 +47,7 @@ The resulting firmware will allow users to choose between secure (encrypted) and
 .. image:: fastd_mode.gif
 
 **Unix socket:**
-To confirm whether the correct cipher is being used, fastds unix
+To confirm whether the correct cipher is being used, fastd's unix
 socket can be interrogated, after installing for example `socat`.
 
 ::
diff --git a/docs/package/gluon-hoodselector.rst b/docs/package/gluon-hoodselector.rst
index 13054924a2117ea23867491cbf977dcad3a349a1..23fd8f4182c22011a6e83ada18650163171c4851 100644
--- a/docs/package/gluon-hoodselector.rst
+++ b/docs/package/gluon-hoodselector.rst
@@ -66,7 +66,7 @@ and others which contain shapes.
 
 * **default domain**
 
-The default domain doesn’t hold any shapes and represents the inverted area of
+The default domain doesn't hold any shapes and represents the inverted area of
 all other shapes held by other domains with geo coordinates. It will only be
 entered if a node could not be matched to a geo domain. A suggested approach is
 to define the "old" network as default domain and gradually migrate nodes from
diff --git a/docs/releases/v2015.1.rst b/docs/releases/v2015.1.rst
index 1e6d3396e9acea1e0d49a5647247505ab01cb789..2fd694c121e8317c1a86c87fdd8346e7176d6fb7 100644
--- a/docs/releases/v2015.1.rst
+++ b/docs/releases/v2015.1.rst
@@ -19,7 +19,7 @@ ar71xx-generic
 
   - DIR-615 (C1)
 
-* GL-Inet
+* GL.iNet
 
   - 6408A (v1)
   - 6416A (v1)
diff --git a/docs/releases/v2018.2.1.rst b/docs/releases/v2018.2.1.rst
index 92c729a11d5ca35d168d22ca1816abf9dd6bf717..3f02f8882bc0008a81ddb0c066e3864d1fd01366 100644
--- a/docs/releases/v2018.2.1.rst
+++ b/docs/releases/v2018.2.1.rst
@@ -21,7 +21,7 @@ ramips-mt7620
 ramips-mt76x8
 ^^^^^^^^^^^^^
 
-* Gl.iNet
+* GL.iNet
 
   - MT300N (v2) [#noibss]_
 
diff --git a/docs/releases/v2020.1.1.rst b/docs/releases/v2020.1.1.rst
index b6ad1831096ee00ba3da2d5fb611027de9a0fc6a..f18d1133a248a6181d8fa0cd5e8c6c8d0d369caa 100644
--- a/docs/releases/v2020.1.1.rst
+++ b/docs/releases/v2020.1.1.rst
@@ -10,7 +10,7 @@ Bugfixes
 - Fixed non-working LEDs on TP-Link Archer C5 v1 and Archer C7 v2 after an upgrade to Gluon 2020.1.
 
 - Fixed an issue which leads to AVM FRITZ!WLAN Repeater 450E devices being stuck in failsafe mode
-  ater an upgrade to Gluon 2020.1.
+  after an upgrade to Gluon 2020.1.
 
 Other changes
 -------------
diff --git a/docs/releases/v2020.1.2.rst b/docs/releases/v2020.1.2.rst
index fa25c655795e82304d316a4b7bab49f686f4c497..37adb6a1698c49dd2fe1dc508ef1c03afd7fa328 100644
--- a/docs/releases/v2020.1.2.rst
+++ b/docs/releases/v2020.1.2.rst
@@ -37,7 +37,7 @@ Other changes
 Internals
 ---------
 
-- OpenWrt 19.07 introduced the urgnd entropy daemon that serves the same function as the haveged service, which we have been recommending. To not have two redundant entropy daemons in this release we remove urngd in favor of haveged in the v2020.1 release series.
+- OpenWrt 19.07 introduced the urngd entropy daemon that serves the same function as the haveged service, which we have been recommending. To not have two redundant entropy daemons in this release we remove urngd in favor of haveged in the v2020.1 release series.
 
 Known issues
 ------------
diff --git a/docs/releases/v2020.2.rst b/docs/releases/v2020.2.rst
index 6975c243f0d18f53acf344c869c9d1dc238ca5cb..0c1d572b2f6bf77507c289fd4f894bf5c6cfa670 100644
--- a/docs/releases/v2020.2.rst
+++ b/docs/releases/v2020.2.rst
@@ -129,7 +129,7 @@ Bugfixes
 
 - Disabling outdoor mode and enabling meshing in the config mode can now be performed in a single step.
 
-- Fixed section visiblity with enabled outdoor mode in config mode.
+- Fixed section visibility with enabled outdoor mode in config mode.
 
 
 Site changes
diff --git a/docs/user/site.rst b/docs/user/site.rst
index feeacdaf14f589f25dc45c7878a44cf22c5b9e31..bb634afa8f81c05c619c5671478aa46256509984 100644
--- a/docs/user/site.rst
+++ b/docs/user/site.rst
@@ -176,7 +176,7 @@ wifi24 \: optional
 .. _user-site-wifi5:
 
 wifi5 \: optional
-    Same as `wifi24` but for the 5Ghz radio.
+    Same as `wifi24` but for the 5 GHz radio.
 
     Additionally a range of channels that are safe to use outsides on the 5 GHz band can
     be set up through ``outdoor_chanlist``, which allows for a space-separated list of
@@ -326,7 +326,7 @@ mesh_vpn
     implementation.
 
     **Note:** It may be interesting to include the package *gluon-iptables-clamp-mss-to-pmtu*
-    in the build when using *gluon-mesh-babel* to work around icmp blackholes on the internet.
+    in the build when using *gluon-mesh-babel* to work around ICMP blackholes on the internet.
 
     ::