diff --git a/README.md b/README.md
index 2822c2224ea5a930a6baaa13a19eeda218a959d1..e4e54479c8323a2e5bf26f76f14b2406e543740a 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,7 @@ the requirements of community radio stations.
 
 ## Functionality
 
-In conjuction with other AURA components Engine provides several features:
+In conjunction with other AURA components Engine provides several features:
 
 - **Scheduler** to automatically broadcast your radio programme (see [AURA Dashboard](https://gitlab.servus.at/aura/dashboard) for an user interface to do scheduling)
 - **Analog input and outputs** provided by [Engine Core](https://gitlab.servus.at/aura/engine-core)
@@ -53,7 +53,7 @@ It's possible to schedules playlists with music or pre-recorded shows stored on
 
 The switching between types of audio source is handled automatically, with configured fadings applied.
 
-> Note: Any live sources or streams not specifing a length property, are automatically expanded to the left duration of the timeslot.
+> Note: Any live sources or streams not specifying a length property, are automatically expanded to the left duration of the timeslot.
 
 #### Default playlists
 
@@ -64,13 +64,13 @@ for schedules and shows:
     In case the timeslot doesn't have any specific playlist assigned, this playlist is broadcasted.
 
 - **Default Show Playlist**: This playlist can be assigned to some show. If neither the specific timeslot
-    playlist nor the default schedule playlist is specificed the *default show playlist* is broadcasted.
+    playlist nor the default schedule playlist is specified the *default show playlist* is broadcasted.
 
 If none of these playlists have been specified the *Auto DJ* feature of [Engine Core](https://gitlab.servus.at/aura/engine-core) takes over (optional).
 
 ### Heartbeat Monitoring
 
-Instead of checking all status properties, the Heartbeat only validates the vital ones required to run the engine. If all of those are valid, a network socket request is sent to a defined server. This heartbeat is sent continiously based on the configured `heartbeat_frequency`. The service receiving this heartbeat ticks can decide what to do with that information. One scenario could be switching to another Engine instance or any other custom failover scenario. Under `contrib/heartbeat-monitor` you'll find some sample application digesting these heartbeat signals.
+Instead of checking all status properties, the Heartbeat only validates the vital ones required to run the engine. If all of those are valid, a network socket request is sent to a defined server. This heartbeat is sent continuously based on the configured `heartbeat_frequency`. The service receiving this heartbeat ticks can decide what to do with that information. One scenario could be switching to another Engine instance or any other custom failover scenario. Under `contrib/heartbeat-monitor` you'll find some sample application digesting these heartbeat signals.
 
 ### Logging
 
diff --git a/docs/developer-guide.md b/docs/developer-guide.md
index fae3826001baa23b0496c73e1e571a920b9772d1..919042b4b77c4377f8da18635690c0a28b66e312 100644
--- a/docs/developer-guide.md
+++ b/docs/developer-guide.md
@@ -5,7 +5,7 @@ This page gives insights on extending Aura Engine internals or through the API.
 <!-- TOC -->
 
 1. [Aura Engine Development Guide](#aura-engine-development-guide)
-   1. [AURA Componentes](#aura-componentes)
+   1. [AURA Components](#aura-componentes)
    2. [Engine Components](#engine-components)
    3. [Running for Development](#running-for-development)
    4. [Testing](#testing)
@@ -16,7 +16,7 @@ This page gives insights on extending Aura Engine internals or through the API.
 
 <!-- /TOC -->
 
-## AURA Componentes
+## AURA Components
 
 AURA Engine as part of the AURA Radio Suite uses an modulear architecture based on a REST API. All external information is retrieved using JSON data-structures.
 
@@ -28,7 +28,7 @@ For example:
 
 - Steering, to get the main incredient of an play-out engine: schedules (or "timeslots" in Steering terms),
     which hold the actual information on playlists and their entries.
-- Dashboard, to have a neat interface, being able to programm the timeslots
+- Dashboard, to have a neat interface, being able to programme the timeslots
 - Tank, to get the references to audio files and other audio sources. Plus the actual files.
 
 If you need to test and develop against the Engine's API you'll also need to get the `engine-api` project running.
@@ -51,7 +51,7 @@ Ensure you have following other projects up and running:
 - engine-api
 - dashboard-clock (optional)
 
-The following steps espect you having done the bases configuration and set up a database as outlined in the [Native Installation](https://gitlab.servus.at/aura/engine/-/blob/master/docs/bare-metal-installation.md) document.
+The following steps expect you having done the bases configuration and set up a database as outlined in the [Native Installation](https://gitlab.servus.at/aura/engine/-/blob/master/docs/bare-metal-installation.md) document.
 
 If you don't have already, you'll need to create an virtual environment:
 
@@ -116,7 +116,7 @@ point in time and the involved phase before:
     in `engine.ini`). The actual start of the window is calcuated by (timeslot start - window start)
     and the end by (timeslot end - window end)
 
-    During the scheduling window, the external API Endpoints are pulled continiously, to
+    During the scheduling window, the external API Endpoints are pulled continuously, to
     check for updated timeslots and related playlists. Also, any changes to playlists and
     its entries are respected within that window (see `fetching_frequency` in `engine.ini`).
 
diff --git a/run.py b/run.py
index f50c6319f0fbefbc07a4d38557eee932f4050a0f..d2f036f903b2ecd456fa227ad6bbb22de072dd68 100755
--- a/run.py
+++ b/run.py
@@ -42,7 +42,7 @@ def configure_flask():
     app.config['BABEL_DEFAULT_LOCALE'] = 'de'
     app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
 
-# FIXME Instatiate SQLAlchemy without the need for Flask
+# FIXME Instantiate SQLAlchemy without the need for Flask
 app = Flask(__name__)
 configure_flask()
 DB = SQLAlchemy(app)
diff --git a/src/base/exceptions.py b/src/base/exceptions.py
index 9e14ae38dc209b04d80c766a37f77cfc76279ea1..da55ab28ecc0f8b9920148ac94722f7723159912 100644
--- a/src/base/exceptions.py
+++ b/src/base/exceptions.py
@@ -43,7 +43,7 @@ class NoActiveEntryException(Exception):
 
 
 
-# Liquidsoap Execeptions
+# Liquidsoap Exceptions
 
 class LQConnectionError(Exception):
     pass
diff --git a/src/base/utils.py b/src/base/utils.py
index 1239e04baf488a47e535f9d17b33b7995fc891e2..8bba00d75bb811aae7f0b1c47d7a0e4725134e8a 100644
--- a/src/base/utils.py
+++ b/src/base/utils.py
@@ -37,7 +37,7 @@ class SimpleUtil:
         This alters the input so you may wish to `copy` the dict first.
 
         Args:
-            data (dict):    The dicationary
+            data (dict):    The dictionary
 
         Returns:
             (dict): 
@@ -67,7 +67,7 @@ class SimpleUtil:
     @staticmethod
     def nano_to_seconds(nanoseconds):
         """
-        Converts nano-seconds to senconds
+        Converts nano-seconds to seconds
 
         Args:
             (Integer) nanoseconds
@@ -81,7 +81,7 @@ class SimpleUtil:
     @staticmethod
     def seconds_to_nano(seconds):
         """
-        Converts senconds to nano-seconds
+        Converts seconds to nano-seconds
 
         Args:
             (Integer) seconds
diff --git a/src/client/connector.py b/src/client/connector.py
index 78751ebe8523f04331ac187eb0b5faf7d17908c8..0662aa68ace4bbb510aa5be16543754e6cf1a7a2 100644
--- a/src/client/connector.py
+++ b/src/client/connector.py
@@ -136,7 +136,7 @@ class PlayerConnector():
                     self.disable_transaction(socket=self.client, force=True)
                     raise e
             else:
-                self.event_dispatcher.on_critical("Criticial Liquidsoap connection issue", \
+                self.event_dispatcher.on_critical("Critical Liquidsoap connection issue", \
                     "Could not connect to Liquidsoap after multiple attempts", e)
                 raise e
 
diff --git a/src/control.py b/src/control.py
index bdcd260d3c3ced1223376168b0d03cc3491476cc..2f81097b9e7ac95c596578f37b6fb3aa8d7ec083 100644
--- a/src/control.py
+++ b/src/control.py
@@ -73,7 +73,7 @@ class SocketControlInterface:
     Network socket server to control a running Engine from Liquidsoap.
 
     Note this server only allows a single connection at once. This
-    service is primarly utilized to store new playlogs.
+    service is primarily utilized to store new playlogs.
     """
     PORT = 1337
     ACTION_ON_METADATA = "on_metadata"
@@ -256,7 +256,7 @@ class EngineExecutor(Timer):
         """
         @private
 
-        Child timers are dependend on their parents. So let's wait until parents are done with their stuff => finished execution.
+        Child timers are dependent on their parents. So let's wait until parents are done with their stuff => finished execution.
         Checks the parent state to be finished every 0.2 seconds.
         """
         if self.parent_timer:
diff --git a/src/engine.py b/src/engine.py
index af8aebedbc9d0550c236fd58ccecefe457cbfc78..4aa5b366085f421efbf0e28eb0d62adf7cacdae6 100644
--- a/src/engine.py
+++ b/src/engine.py
@@ -215,7 +215,7 @@ class Player:
         Pre-Load the entry. This is required before the actual `play(..)` can happen.
 
         Be aware when using this method to queue a very short entry (shorter than ``) this may
-        result in sitations with incorrect timing. In this case bundle multiple short entries as
+        result in situations with incorrect timing. In this case bundle multiple short entries as
         one queue using `preload_playlist(self, entries)`.
 
         It's important to note, that his method is blocking until loading has finished. If this
@@ -297,7 +297,7 @@ class Player:
 
     def play(self, entry, transition):
         """
-        Plays a new `Entry`. In case of a new timeslot (or some intented, immediate transition),
+        Plays a new `Entry`. In case of a new timeslot (or some intended, immediate transition),
         a clean channel is selected and transitions between old and new channel is performed.
 
         This method expects that the entry is pre-loaded using `preload(..)` or `preload_group(self, entries)`
@@ -427,7 +427,7 @@ class Player:
             entry (Entry):  The entry to be pre-loaded
 
         Returns:
-            (Boolean):  `True` if successfull
+            (Boolean):  `True` if successful
         """
         self.stream_load(entry.channel, entry.source)
         time.sleep(1)
@@ -450,7 +450,7 @@ class Player:
     def stream_load(self, channel, url):
         """
         Preloads the stream URL on the given channel. Note this method is blocking
-        some serious amount of time; hence it's worth being called asynchroneously.
+        some serious amount of time; hence it's worth being called asynchronously.
 
         Args:
             channel (Channel): The stream channel
@@ -488,7 +488,7 @@ class Player:
     def stream_is_ready(self, channel, url):
         """
         Checks if the stream on the given channel is ready to play. Note this method is blocking
-        some serious amount of time even when successfull; hence it's worth being called asynchroneously.
+        some serious amount of time even when successful; hence it's worth being called asynchronously.
 
         Args:
             channel (Channel): The stream channel
diff --git a/src/events.py b/src/events.py
index c73ea27e5872a53f5faf82e47796e364d63a1a1c..826fd48f0aeadbe303230ef0c803e7273808154b 100644
--- a/src/events.py
+++ b/src/events.py
@@ -221,7 +221,7 @@ class EngineEventDispatcher():
     def on_play(self, entry):
         """
         Event Handler which is called by the engine when some play command to Liquidsoap is issued.
-        This does not indiciate that Liquidsoap started playing actually, only that the command has
+        This does not indicate that Liquidsoap started playing actually, only that the command has
         been issued. To get the metadata update issued by Liquidsoap use `on_metadata` instead.
 
         Args:
diff --git a/src/plugins/trackservice.py b/src/plugins/trackservice.py
index 44d41504b091a067404261843e621d7f263a01b2..df8140e2eca97721508bacd5c7f9292837fc134b 100644
--- a/src/plugins/trackservice.py
+++ b/src/plugins/trackservice.py
@@ -288,7 +288,7 @@ class Playlog:
         Any previous timeslot is stored to `self.previous_timeslot` and the following one
         to `self.next_timeslot`.
 
-        This method is protect by overwritting by multiple calls with the same timeslot.
+        This method is protect by overwriting by multiple calls with the same timeslot.
 
         Args:
             timeslot (Timeslot):    The current timeslot
diff --git a/src/resources.py b/src/resources.py
index d2126019428b35964ca5e5a1eaae417fa9c0b162..b1a1fd7f2dd348b25466e5ec5da1e5224e77a61d 100644
--- a/src/resources.py
+++ b/src/resources.py
@@ -192,7 +192,7 @@ class ResourceUtil(Enum):
 
         Args:
             uri (String):   The path to the audio source
-            cue_in (Float): The value in seconds wher the cue in should start
+            cue_in (Float): The value in seconds where the cue in should start
 
         Returns:
             (String):       The annotated URI
diff --git a/src/scheduling/api.py b/src/scheduling/api.py
index e566c1aa673c39331cd5eaaa56e2ea834d8aa9fd..bbed103821f72e502c4f3bc706bd70a94a0d67e3 100644
--- a/src/scheduling/api.py
+++ b/src/scheduling/api.py
@@ -286,7 +286,7 @@ class ApiFetcher(threading.Thread):
     def polish_timeslots(self, timeslots):
         """
         Removes all timeslots which are not relevant for further processing,
-        and transparent timeslot ID assigment for more expressive use.
+        and transparent timeslot ID assignment for more expressive use.
         """
         count_before = len(timeslots)
         timeslots = TimeslotFilter.filter_24h(timeslots)
diff --git a/src/scheduling/models.py b/src/scheduling/models.py
index f5a6b487e61aca67124071155197955511ef49b0..70921228375572c2218661a165e793919d38a3a7 100644
--- a/src/scheduling/models.py
+++ b/src/scheduling/models.py
@@ -88,7 +88,7 @@ class AuraDatabaseModel():
 
     def refresh(self):
         """
-        Refreshes the currect record
+        Refreshes the correct record
         """
         DB.session.expire(self)
         DB.session.refresh(self)
@@ -152,8 +152,8 @@ class Timeslot(DB.Model, AuraDatabaseModel):
         playlist (Playlist):            The specific playlist for this timeslot
         schedule_default (Playlist):    Some playlist played by default, when no specific playlist is assigned
         show_default (Playlist):        Some playlist played by default, when no default schedule playlist is assigned
-        schedule_fallback (Playlist):   Some playlist played as fallback, when no specific playlist is assigned or if it is errorneous (includes silence detection)
-        show_fallback (Playlist):       Some playlist played as fallback, when no schedule fallback playlist is assigned or if some specific playlist is errorneous (includes silence detection)
+        schedule_fallback (Playlist):   Some playlist played as fallback, when no specific playlist is assigned or if it is erroneous (includes silence detection)
+        show_fallback (Playlist):       Some playlist played as fallback, when no schedule fallback playlist is assigned or if some specific playlist is erroneous (includes silence detection)
         station_fallback (Playlist):    Defined in the original AURA API but not implemented, as station fallbacks are handled locally
     """
     __tablename__ = 'timeslot'
diff --git a/src/scheduling/utils.py b/src/scheduling/utils.py
index ed94f7e0497c6cf5b9e563e5ce69c9af3209930e..8f11c9187b5032a42f7104b43cec9eae6b481d3e 100644
--- a/src/scheduling/utils.py
+++ b/src/scheduling/utils.py
@@ -169,7 +169,7 @@ class M3UPlaylistProcessor():
 
 class TimeslotRenderer:
     """
-    Displays current and next timeslots in ASCII for maintainence and debugging.
+    Displays current and next timeslots in ASCII for maintenance and debugging.
     """
     logger = None
     scheduler = None