diff --git a/add_curve_sapling/utils.py b/add_curve_sapling/utils.py
index 4ec2cd839ed378e24398c98541863ad92f4cca05..3dbe53afe7b1c18488840ec3c7e6f641a3e6bbc7 100644
--- a/add_curve_sapling/utils.py
+++ b/add_curve_sapling/utils.py
@@ -1358,7 +1358,7 @@ def perform_pruning(baseSize, baseSplits, childP, cu, currentMax, currentMin, cu
                         stemsegL, lengthV[n], taperCrown, boneStep, rotate, rotateV
                         )
 
-        # If pruning is enabled then we must to the check to see if the end of the spline is within the evelope
+        # If pruning is enabled then we must check to see if the end of the spline is within the envelope
         if prune:
             # Check each endpoint to see if it is inside
             for s in splineList:
diff --git a/add_mesh_BoltFactory/createMesh.py b/add_mesh_BoltFactory/createMesh.py
index 71f22bf7f0ba1fa5f7dd77dcb506fc2382ff4a14..6c18eeef8c0c03ddc6c5c5f0a6fc526e30363a0a 100644
--- a/add_mesh_BoltFactory/createMesh.py
+++ b/add_mesh_BoltFactory/createMesh.py
@@ -233,20 +233,20 @@ def Mirror_Verts_Faces(VERTS, FACES, AXIS, FLIP_POINT=0):
 
 # Returns a list of faces that
 # make up an array of 4 point polygon.
-def Build_Face_List_Quads(OFFSET, COLUM, ROW, FLIP=0):
+def Build_Face_List_Quads(OFFSET, COLUMN, ROW, FLIP=0):
     Ret = []
     RowStart = 0
     for j in range(ROW):
-        for i in range(COLUM):
+        for i in range(COLUMN):
             Res1 = RowStart + i
-            Res2 = RowStart + i + (COLUM + 1)
-            Res3 = RowStart + i + (COLUM + 1) + 1
+            Res2 = RowStart + i + (COLUMN + 1)
+            Res3 = RowStart + i + (COLUMN + 1) + 1
             Res4 = RowStart + i + 1
             if FLIP:
                 Ret.append([OFFSET + Res1, OFFSET + Res2, OFFSET + Res3, OFFSET + Res4])
             else:
                 Ret.append([OFFSET + Res4, OFFSET + Res3, OFFSET + Res2, OFFSET + Res1])
-        RowStart += COLUM + 1
+        RowStart += COLUMN + 1
     return Ret
 
 
diff --git a/animation_add_corrective_shape_key.py b/animation_add_corrective_shape_key.py
index dcfd6811b300d12f84c81beac0d67ba68be6e74d..320acc830fa1b31304be666b30ded76226bdae55 100644
--- a/animation_add_corrective_shape_key.py
+++ b/animation_add_corrective_shape_key.py
@@ -50,12 +50,12 @@ Limitations and new delta option for 2.8
   it will be set to zero.
   
 - new "delta" option usage, when you hope to make new shape-key with keep currently visible other shape keys value.
- it can generate new shape key, with value as 1.00. then deform target shape as soruce shape  with keep other shape key values relative.
-  
-- If overwrite shape key,<select active shape key of target as non "base shape"> 
- current shape key value is ignored and turn as 1.00. 
- 
- then if active shape key was driven (bone rotation etc), you may get un-expected result. When transfer, I recommend, keep set active-shape key as base . so transfered shape key do not "overwrite". but generate new shape key. 
+ it can generate new shape key, with value as 1.00. then deform target shape as source shape with keep other shape key values relative.
+
+- If overwrite shape key,<select active shape key of target as non "base shape">
+ current shape key value is ignored and turn as 1.00.
+
+ then if active shape key was driven (bone rotation etc), you may get un-expected result. When transfer, I recommend, keep set active-shape key as base. so transferred shape key do not "overwrite". but generate new shape key.
  if active-shape key have no driver, you can overwrite it (but as 1.00 value )
 """
 
@@ -254,7 +254,7 @@ class add_corrective_pose_shape(bpy.types.Operator):
 class add_corrective_pose_shape_delta (bpy.types.Operator):
     """Adds first object as shape to second object for the current pose """ \
     """while maintaining modifiers and currently used other shape keys""" \
-    """with keep other shape key value, generate new shape key which deform to soruce shape """
+    """with keep other shape key value, generate new shape key which deform to source shape """
 
     bl_idname = "object.add_corrective_pose_shape_delta"
     bl_label = "Add object as corrective pose shape delta"
diff --git a/archimesh/achm_roof_maker.py b/archimesh/achm_roof_maker.py
index 1b446779eca22f3ae1f026dbd53895e74121f91f..c125eb84cbb0b130c72c0bc88dab1c64c51a5de0 100644
--- a/archimesh/achm_roof_maker.py
+++ b/archimesh/achm_roof_maker.py
@@ -172,7 +172,7 @@ def create_roof_mesh(self):
     bpy.context.view_layer.objects.active = myroof
     myroof.select_set(True)
 
-    # Thicknes
+    # Thickness
     if self.roof_thick > 0.0:
         set_modifier_solidify(myroof, self.roof_thick)
     # Subsurf
diff --git a/archipack/archipack_gl.py b/archipack/archipack_gl.py
index 172117873f11397d80533b77aa08ccf7aac87db0..f3ef034af9190d04d4b92ebcd88648f2f85a3867 100644
--- a/archipack/archipack_gl.py
+++ b/archipack/archipack_gl.py
@@ -584,7 +584,7 @@ class GlLine(GlBaseLine):
     def sized_normal(self, t, size):
         """
             GlLine perpendicular on plane defined by z_axis and of given size
-            positionned at t in current line
+            positioned at t in current line
             lie on the right side
             p1
             |--x
diff --git a/archipack/archipack_manipulator.py b/archipack/archipack_manipulator.py
index 2b9010d60cb832891720be027505f7f33c56fdf2..60a05738172bb3bb19d8a0cc2647495459074ac6 100644
--- a/archipack/archipack_manipulator.py
+++ b/archipack/archipack_manipulator.py
@@ -1073,7 +1073,7 @@ class SizeLocationManipulator(SizeManipulator):
 
         Also take care of moving linked objects too
         Changing size is not necessary as link does
-        allredy handle this and childs panels are
+        already handle this and childs panels are
         updated by base object.
     """
     def __init__(self, context, o, datablock, manipulator, handle_size, snap_callback=None):
@@ -1185,7 +1185,7 @@ class SnapSizeLocationManipulator(SizeLocationManipulator):
 
         Also take care of moving linked objects too
         Changing size is not necessary as link does
-        allredy handle this and childs panels are
+        already handle this and childs panels are
         updated by base object.
 
 
diff --git a/blenderkit/__init__.py b/blenderkit/__init__.py
index 4fbf3783efb4a8ead89c897ed8b5411cb48aedd1..6a2a68b352439d87aa44d05adea1a4ebc25556ea 100644
--- a/blenderkit/__init__.py
+++ b/blenderkit/__init__.py
@@ -274,7 +274,7 @@ class BlenderKitUIProps(PropertyGroup):
     thumb_size: IntProperty(name="Thumbnail Size", default=thumb_size_def, min=-1, max=256)
 
     margin: IntProperty(name="Margin", default=margin_def, min=-1, max=256)
-    highlight_margin: IntProperty(name="Higlight Margin", default=int(margin_def / 2), min=-10, max=256)
+    highlight_margin: IntProperty(name="Highlight Margin", default=int(margin_def / 2), min=-10, max=256)
 
     bar_height: IntProperty(name="Bar Height", default=thumb_size_def + 2 * margin_def, min=-1, max=2048)
     bar_x_offset: IntProperty(name="Bar X Offset", default=20, min=0, max=5000)
diff --git a/blenderkit/append_link.py b/blenderkit/append_link.py
index 8b399986b8626d099d4adccc8deec6aa699c897b..efbd1492875a5733314cdf088c407bfe7098b3cf 100644
--- a/blenderkit/append_link.py
+++ b/blenderkit/append_link.py
@@ -45,7 +45,7 @@ def append_material(file_name, matname=None, link=False, fake_user=True):
     '''append a material type asset'''
     # first, we have to check if there is a material with same name
     # in previous step there's check if the imported material
-    # is allready in the scene, so we know same name != same material
+    # is already in the scene, so we know same name != same material
 
     mats_before = bpy.data.materials.keys()
 
diff --git a/blenderkit/download.py b/blenderkit/download.py
index b0830a4eec147a1f19110267f85c5a1ca49a6778..ac43bc88c8e4f61cd8b74ae7999ffd3219f3313d 100644
--- a/blenderkit/download.py
+++ b/blenderkit/download.py
@@ -312,7 +312,7 @@ def append_asset(asset_data, **kwargs):  # downloaders=[], location=None,
             sprops.append_link = 'APPEND'
             sprops.import_as = 'INDIVIDUAL'
 
-        # set consistency for objects allready in scene, otherwise this literally breaks blender :)
+        # set consistency for objects already in scene, otherwise this literally breaks blender :)
         ain = asset_in_scene(asset_data)
         if ain is not False:
             if ain == 'LINKED':
@@ -382,7 +382,7 @@ def append_asset(asset_data, **kwargs):  # downloaders=[], location=None,
 
     elif asset_data['asset_type'] == 'brush':
 
-        # TODO if allready in scene, should avoid reappending.
+        # TODO if already in scene, should avoid reappending.
         inscene = False
         for b in bpy.data.brushes:
 
@@ -539,7 +539,7 @@ class Downloader(threading.Thread):
         get_download_url(asset_data, scene_id, api_key, tcom=tcom)
         if tcom.error:
             return
-        # only now we can check if the file allready exists. This should have 2 levels, for materials and for brushes
+        # only now we can check if the file already exists. This should have 2 levels, for materials and for brushes
         # different than for the non free content. delete is here when called after failed append tries.
         if check_existing(asset_data) and not tcom.passargs.get('delete'):
             # this sends the thread for processing, where another check should occur, since the file might be corrupted.
@@ -622,7 +622,7 @@ def download(asset_data, **kwargs):
 
 
 def check_downloading(asset_data, **kwargs):
-    ''' check if an asset is allready downloading, if yes, just make a progress bar with downloader object.'''
+    ''' check if an asset is already downloading, if yes, just make a progress bar with downloader object.'''
     global download_threads
 
     downloading = False
@@ -646,7 +646,7 @@ def check_existing(asset_data):
 
     file_names = paths.get_download_filenames(asset_data)
 
-    utils.p('check if file allready exists')
+    utils.p('check if file already exists')
     if len(file_names) == 2:
         # TODO this should check also for failed or running downloads.
         # If download is running, assign just the running thread. if download isn't running but the file is wrong size,
@@ -663,11 +663,11 @@ def check_existing(asset_data):
 
 
 def try_finished_append(asset_data, **kwargs):  # location=None, material_target=None):
-    ''' try to append asset, if not successfull delete source files.
+    ''' try to append asset, if not successfully delete source files.
      This means probably wrong download, so download should restart'''
     file_names = paths.get_download_filenames(asset_data)
     done = False
-    utils.p('try to append allready existing asset')
+    utils.p('try to append already existing asset')
     if len(file_names) > 0:
         if os.path.isfile(file_names[-1]):
             kwargs['name'] = asset_data['name']
@@ -688,7 +688,7 @@ def try_finished_append(asset_data, **kwargs):  # location=None, material_target
 
 
 def asset_in_scene(asset_data):
-    '''checks if the asset is allready in scene. If yes, modifies asset data so the asset can be reached again.'''
+    '''checks if the asset is already in scene. If yes, modifies asset data so the asset can be reached again.'''
     scene = bpy.context.scene
     au = scene.get('assets used', {})
 
@@ -746,7 +746,7 @@ def get_download_url(asset_data, scene_id, api_key, tcom=None):
     if r.status_code == 403:
         r = 'You need Full plan to get this item.'
         tcom.report = r
-        r1 = 'All materials and brushes are aviable for free. Only users registered to Standart plan can use all models.'
+        r1 = 'All materials and brushes are available for free. Only users registered to Standard plan can use all models.'
         tasks_queue.add_task((ui.add_report, (r1, 5, colors.RED)))
         tcom.error = True
 
@@ -764,7 +764,7 @@ def start_download(asset_data, **kwargs):
     '''
     check if file isn't downloading or doesn't exist, then start new download
     '''
-    # first check if the asset is allready in scene. We can use that asset without checking with server
+    # first check if the asset is already in scene. We can use that asset without checking with server
     quota_ok = asset_in_scene(asset_data) is not False
 
     # otherwise, check on server
@@ -774,7 +774,7 @@ def start_download(asset_data, **kwargs):
     # is the asseet being currently downloaded?
     downloading = check_downloading(asset_data, **kwargs)
     if not downloading:
-        # check if there are files allready. This check happens 2x once here(for free assets),
+        # check if there are files already. This check happens 2x once here(for free assets),
         # once in thread(for non-free)
         fexists = check_existing(asset_data)
 
@@ -823,7 +823,7 @@ class BlenderkitKillDownloadOperator(bpy.types.Operator):
 
 
 class BlenderkitDownloadOperator(bpy.types.Operator):
-    """Download and link asset to scene. Only link if asset allready available locally."""
+    """Download and link asset to scene. Only link if asset already available locally."""
     bl_idname = "scene.blenderkit_download"
     bl_label = "BlenderKit Asset Download"
     bl_options = {'REGISTER', 'UNDO'}
diff --git a/blenderkit/paths.py b/blenderkit/paths.py
index c2d2ab06b7b70148cbac9dd86c0632c5a637c8be..c3f9248449d169129fbeb1960df5fa147c41bd11 100644
--- a/blenderkit/paths.py
+++ b/blenderkit/paths.py
@@ -164,7 +164,7 @@ def get_download_filenames(asset_data):
     file_names = []
     # fn = asset_data['file_name'].replace('blend_', '')
     if asset_data.get('url') is not None:
-        # this means asset is allready in scene and we don't nedd to check
+        # this means asset is already in scene and we don't nedd to check
 
         fn = extract_filename_from_url(asset_data['url'])
         fn.replace('_blend', '')
@@ -236,7 +236,7 @@ def get_addon_thumbnail_path(name):
     # fpath = os.path.join(p, subpath)
     ext = name.split('.')[-1]
     next = ''
-    if not (ext == 'jpg' or ext == 'png'):  # allready has ext?
+    if not (ext == 'jpg' or ext == 'png'):  # already has ext?
         next = '.jpg'
     subpath = "thumbnails" + os.sep + name + next
     return os.path.join(script_path, subpath)
diff --git a/blenderkit/search.py b/blenderkit/search.py
index 468aaf8bfd9d20b2ce3f26c9ac4e9012481a99f8..dd7df440852ab2f40219ba8f72d4eff6da9bb219 100644
--- a/blenderkit/search.py
+++ b/blenderkit/search.py
@@ -92,7 +92,7 @@ def refresh_token_timer():
 def scene_load(context):
     wm = bpy.context.window_manager
     fetch_server_data()
-    # following doesn't necessarilly happen if version isn't checked yet or similar, first run.
+    # following doesn't necessarily happen if version isn't checked yet or similar, first run.
     # wm['bkit_update'] = version_checker.compare_versions(blenderkit)
     categories.load_categories()
     if not bpy.app.timers.is_registered(refresh_token_timer):
@@ -116,7 +116,7 @@ def fetch_server_data():
 def timer_update():  # TODO might get moved to handle all blenderkit stuff.
 
     global search_threads
-    # don't do anything while dragging - this could switch asset type during drag, and make results list lenght different,
+    # don't do anything while dragging - this could switch asset type during drag, and make results list length different,
     # causing a lot of throuble literally.
     if len(search_threads) == 0 or bpy.context.scene.blenderkitUI.dragging:
         return 1
@@ -803,7 +803,7 @@ class Searcher(threading.Thread):
         full_thbs = zip(thumb_full_filepaths, thumb_full_urls)
 
         # we save here because a missing thumbnail check is in the previous loop
-        # we can also prepend previous results. These have allready thumbnails downloaded...
+        # we can also prepend previous results. These have already thumbnails downloaded...
         if params['get_next']:
             rdata['results'][0:0] = origdata['results']
 
@@ -1149,12 +1149,12 @@ def unregister_search():
 
 
 '''
-search - 
+search -
 build query
 START THREAD
-send query (bg allready)
-get result - metadata, small thumbnails, big thumbnails paths (now genereate this?)
-write metadata, possibly to 
+send query (bg already)
+get result - metadata, small thumbnails, big thumbnails paths (now generate this?)
+write metadata, possibly to
 download small thumbnails first
 start big thumbnails download. these don't have to be there on updates, if they aren't the Image in image editor doesn't get updated.
 parse metadata, save it in json in the temp dir which gets read on each update of the search.
diff --git a/blenderkit/ui.py b/blenderkit/ui.py
index d58c489b78da222264b7af5047884044498a74b9..b03875f097df2353fe75a8811df2e1305696dcaf 100644
--- a/blenderkit/ui.py
+++ b/blenderkit/ui.py
@@ -977,7 +977,7 @@ def is_rating_possible():
             ad = ao.get('asset_data')
             if ad is not None:
                 rated = bpy.context.scene['assets rated'].get(ad['asset_base_id'])
-                # originally hidden for allready rated assets
+                # originally hidden for already rated assets
                 return True, rated, ao, ad
 
             # check also materials
@@ -1599,7 +1599,7 @@ class AssetBarOperator(bpy.types.Operator):
                 # this sends message to the originally running operator, so it quits, and then it ends this one too.
                 # If it initiated a search, the search will finish in a thread. The switch off procedure is run
                 # by the 'original' operator, since if we get here, it means
-                # same operator is allready running.
+                # same operator is already running.
                 ui_props.turn_off = True
                 # if there was an error, we need to turn off these props so we can restart after 2 clicks
                 ui_props.assetbar_on = False
diff --git a/blenderkit/upload.py b/blenderkit/upload.py
index 0910a666119ff8535de7a8eaee89b8db845f41fb..717e457e2693c51bed9e7a7ad040488551f8f215 100644
--- a/blenderkit/upload.py
+++ b/blenderkit/upload.py
@@ -631,7 +631,7 @@ def start_upload(self, context, asset_type, as_new, metadata_only):
                 json_metadata["verificationStatus"] = "uploading"
             r = requests.put(url, json=json_metadata, headers=headers, verify=True)  # files = files,
             props.upload_state = 'uploaded metadata'
-            # parse the reqest
+            # parse the request
             # print('uploaded metadata')
             # print(r.text)
         except requests.exceptions.RequestException as e:
@@ -714,7 +714,7 @@ class ModelUploadOperator(Operator):
 
     as_new: BoolProperty(
         name="upload as new",
-        description="delets asset id and uploads as new file",
+        description="deletes asset id and uploads as new file",
         default=False,
         options={'SKIP_SAVE'}
     )
diff --git a/blenderkit/utils.py b/blenderkit/utils.py
index b6e93e1db3eab51a335e20687a92636140381252..7c56ce8a9558502d368fe1fa29756e4dc5a10af5 100644
--- a/blenderkit/utils.py
+++ b/blenderkit/utils.py
@@ -184,7 +184,7 @@ def save_prefs(self, context):
     # first check context, so we don't do this on registration or blender startup
     if not bpy.app.background: #(hasattr kills blender)
         user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
-        # we test the api key for lenght, so not a random accidentaly typed sequence gets saved.
+        # we test the api key for length, so not a random accidentally typed sequence gets saved.
         lk = len(user_preferences.api_key)
         if 0 < lk < 25:
             # reset the api key in case the user writes some nonsense, e.g. a search string instead of the Key
diff --git a/io_anim_bvh/export_bvh.py b/io_anim_bvh/export_bvh.py
index a8b589df0afda526fdb6c5384f7889e3c31d9a36..f400a8fe36b2d42753460f9c76e32fb517264f13 100644
--- a/io_anim_bvh/export_bvh.py
+++ b/io_anim_bvh/export_bvh.py
@@ -161,7 +161,7 @@ def write_armature(
             "pose_mat",
             # Blender rest matrix (armature space).
             "rest_arm_mat",
-            # Blender rest batrix (local space).
+            # Blender rest matrix (local space).
             "rest_local_mat",
             # Pose_mat inverted.
             "pose_imat",
diff --git a/io_coat3D/tex.py b/io_coat3D/tex.py
index 75d50e72fe98dcda911dbdb8f859cc553b19465b..ddae543c676cad1e0d7ae7159595f10d423f1481 100644
--- a/io_coat3D/tex.py
+++ b/io_coat3D/tex.py
@@ -347,7 +347,7 @@ def readtexturefolder(objekti, mat_list, texturelist, is_new, udim_textures): #r
                 coat3D.remove_path = True
             createnodes(index_mat, texcoat, create_group_node, tile_list, objekti, ind, is_new)
 
-def createnodes(active_mat,texcoat, create_group_node, tile_list, objekti, ind, is_new): # Cretes new nodes and link textures into them
+def createnodes(active_mat,texcoat, create_group_node, tile_list, objekti, ind, is_new): # Creates new nodes and link textures into them
     bring_color = True # Meaning of these is to check if we can only update textures or do we need to create new nodes
     bring_metalness = True
     bring_roughness = True
@@ -366,7 +366,7 @@ def createnodes(active_mat,texcoat, create_group_node, tile_list, objekti, ind,
     main_material = coatMat.node_tree
     applink_group_node = False
 
-    # First go throug all image nodes and let's check if it starts with 3DC and reload if needed
+    # First go through all image nodes and let's check if it starts with 3DC and reload if needed
 
     for node in coatMat.node_tree.nodes:
         if (node.type == 'OUTPUT_MATERIAL'):
diff --git a/io_export_paper_model.py b/io_export_paper_model.py
index 39b65505e6de6ce5ea1a052bda1c8e96fbb2ebc0..4edbea429db8bed2c4fce85f97c2a05739ccfc2e 100644
--- a/io_export_paper_model.py
+++ b/io_export_paper_model.py
@@ -216,7 +216,7 @@ class Unfolder:
 
     def save(self, properties):
         """Export the document"""
-        # Note about scale: input is direcly in blender length
+        # Note about scale: input is directly in blender length
         # Mesh.scale_islands multiplies everything by a user-defined ratio
         # exporters (SVG or PDF) multiply everything by 1000 (output in millimeters)
         Exporter = SVG if properties.file_format == 'SVG' else PDF
@@ -438,7 +438,7 @@ class Mesh:
     def generate_stickers(self, default_width, do_create_numbers=True):
         """Add sticker faces where they are needed."""
         def uvedge_priority(uvedge):
-            """Retuns whether it is a good idea to stick something on this edge's face"""
+            """Returns whether it is a good idea to stick something on this edge's face"""
             # TODO: it should take into account overlaps with faces and with other stickers
             face = uvedge.uvface.face
             return face.calc_area() / face.calc_perimeter()
diff --git a/io_mesh_atomic/utility_panel.py b/io_mesh_atomic/utility_panel.py
index 7fb2d8faeba957c7628d248cec1a4113c9fb660d..cce9ba141d6af4a1d5b5dc59c66d5d976e45d154 100644
--- a/io_mesh_atomic/utility_panel.py
+++ b/io_mesh_atomic/utility_panel.py
@@ -390,7 +390,7 @@ def modify_objects(action_type,
                 break
 
 
-# Separating atoms from a dupliverts strucutre.
+# Separating atoms from a dupliverts structure.
 def separate_atoms(scn):
 
     # Get the mesh.
diff --git a/io_scene_fbx/export_fbx_bin.py b/io_scene_fbx/export_fbx_bin.py
index 762fb5b9d1b609f2952ee140f4d67e1a1965b5b5..35c17c3d1d6bbb6c38d68ac46a9b9a0b0cc1d905 100644
--- a/io_scene_fbx/export_fbx_bin.py
+++ b/io_scene_fbx/export_fbx_bin.py
@@ -2972,7 +2972,7 @@ def save_single(operator, scene, depsgraph, filepath="",
         path_mode,
         os.path.dirname(bpy.data.filepath),  # base_src
         os.path.dirname(filepath),  # base_dst
-        # Local dir where to put images (medias), using FBX conventions.
+        # Local dir where to put images (media), using FBX conventions.
         os.path.splitext(os.path.basename(filepath))[0] + ".fbm",  # subdir
         embed_textures,
         set(),  # copy_set
diff --git a/io_scene_gltf2/blender/com/gltf2_blender_material_helpers.py b/io_scene_gltf2/blender/com/gltf2_blender_material_helpers.py
index 53acb5620907225a57ac6a910e12fdb89998e581..ebb357a875dd4c7ef1aee70082c425b6be9ea3da 100755
--- a/io_scene_gltf2/blender/com/gltf2_blender_material_helpers.py
+++ b/io_scene_gltf2/blender/com/gltf2_blender_material_helpers.py
@@ -14,7 +14,7 @@
 
 
 def get_output_node(node_tree):
-    """Retrive output node."""
+    """Retrieve output node."""
     output = [node for node in node_tree.nodes if node.type == 'OUTPUT_MATERIAL'][0]
     return output
 
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py
index f1fc31a2c21251ada44cb11f394c363810500587..7780a9b24a91ca8497f5116516708b951e1c1b44 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py
@@ -239,7 +239,7 @@ def __gather_mesh(blender_object, export_settings):
 
         armature_modifiers = {}
         if export_settings[gltf2_blender_export_keys.SKINS]:
-            # temprorary disable Armature modifiers if exporting skins
+            # temporarily disable Armature modifiers if exporting skins
             for idx, modifier in enumerate(blender_object.modifiers):
                 if modifier.type == 'ARMATURE':
                     armature_modifiers[idx] = modifier.show_viewport
diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_animation_node.py b/io_scene_gltf2/blender/imp/gltf2_blender_animation_node.py
index 87e072464dc6e8f7f7352a4c8d5ec65af793164f..498cbc89b0ed7826a52ea8d840fbd436bb6bedc4 100755
--- a/io_scene_gltf2/blender/imp/gltf2_blender_animation_node.py
+++ b/io_scene_gltf2/blender/imp/gltf2_blender_animation_node.py
@@ -106,7 +106,7 @@ class BlenderNodeAnim():
             if channel.target.path in ['translation', 'rotation', 'scale']:
 
                 # There is an animation on object
-                # We can't remove Yup2Zup oject
+                # We can't remove Yup2Zup object
                 gltf.animation_object = True
 
                 if animation.samplers[channel.sampler].interpolation == "CUBICSPLINE":
diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_primitive.py b/io_scene_gltf2/blender/imp/gltf2_blender_primitive.py
index 24acd3c578273159f32cb701208331d70ecae01b..ec74294f056f66ad6adb0853440fd17278ff4205 100755
--- a/io_scene_gltf2/blender/imp/gltf2_blender_primitive.py
+++ b/io_scene_gltf2/blender/imp/gltf2_blender_primitive.py
@@ -131,7 +131,7 @@ class BlenderPrimitive():
                 elif gltf.import_settings['import_shading'] == "SMOOTH":
                     poly.use_smooth = True
                 else:
-                    pass  # Should not happend
+                    pass  # Should not happen
 
         offset = offset + pyprimitive.vertices_length
         return offset
diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_scene.py b/io_scene_gltf2/blender/imp/gltf2_blender_scene.py
index dc19a5494c33a6b5af3e6ea0fc16eb392ddb6628..479167c01867589018606f96b7545ed492457c22 100755
--- a/io_scene_gltf2/blender/imp/gltf2_blender_scene.py
+++ b/io_scene_gltf2/blender/imp/gltf2_blender_scene.py
@@ -159,7 +159,7 @@ class BlenderScene():
                     #bpy.context.scene.collection.objects.unlink(obj_rotation)
                     bpy.data.objects.remove(obj_rotation)
 
-                    # Restore collection hiden / disabled values
+                    # Restore collection hidden / disabled values
                     if gltf.blender_active_collection is not None:
                         bpy.data.collections[gltf.blender_active_collection].hide_viewport = gltf.collection_hide_viewport
                         # TODO restore visibility when expose in bpy
diff --git a/io_scene_gltf2/io/exp/gltf2_io_draco_compression_extension.py b/io_scene_gltf2/io/exp/gltf2_io_draco_compression_extension.py
index 6ae48fff9e565a07e3648294d80ceef14bc5a5ca..222aab3ac8a9692efc47d07cff913d0ffd639e1b 100644
--- a/io_scene_gltf2/io/exp/gltf2_io_draco_compression_extension.py
+++ b/io_scene_gltf2/io/exp/gltf2_io_draco_compression_extension.py
@@ -199,7 +199,7 @@ def __compress_primitive(primitive, dll, export_settings):
     # it can finally be compressed.
     if dll.compress(compressor):
 
-        # Compression was successfull.
+        # Compression was successful.
         # Move compressed data into a bytes object,
         # which is referenced by a 'gltf2_io_binary_data.BinaryData':
         #
diff --git a/io_scene_x3d/import_x3d.py b/io_scene_x3d/import_x3d.py
index e2f79ad0c520df5c8edccd5798bff01c05a3b195..ea591d7a2e3ee66a07aac01aa69b953a1742fb81 100644
--- a/io_scene_x3d/import_x3d.py
+++ b/io_scene_x3d/import_x3d.py
@@ -2896,7 +2896,7 @@ def importShape_LoadAppearance(vrmlname, appr, ancestry, node, is_vcol):
     USE on an Appearance node and USE on a Material node
     call for different approaches.
 
-    Tools generate repeating, idential material definitions.
+    Tools generate repeating, identical material definitions.
     Can't rely on USE alone. Repeating texture definitions
     are entirely possible, too.
 
diff --git a/mesh_auto_mirror.py b/mesh_auto_mirror.py
index 4407585de539a8047ef1b8e37b6b281df41c3a32..6ec0c059f434cda6054cd07a9af3bd27b2d836f3 100644
--- a/mesh_auto_mirror.py
+++ b/mesh_auto_mirror.py
@@ -1,7 +1,7 @@
 ######################################################################################################
-# An simple add-on to auto cut in two and mirror an object                                           #
-# Actualy partialy uncommented (see further version)                                                 #
-# Author: Lapineige, Bookyakuno                                                                                  #
+# A simple add-on to auto cut in two and mirror an object                                            #
+# Actually partially uncommented (see further version)                                               #
+# Author: Lapineige, Bookyakuno                                                                      #
 # License: GPL v3                                                                                    #
 ######################################################################################################
 # 2.8 update by Bookyakuno, meta-androcto
diff --git a/mesh_bsurfaces.py b/mesh_bsurfaces.py
index 11c80686e448f04b0b499c7fe50e2d7c8d2fdf7c..3291134f1e70a18304b107a41fc978a5fe6eca72 100644
--- a/mesh_bsurfaces.py
+++ b/mesh_bsurfaces.py
@@ -3457,8 +3457,8 @@ class GPENCIL_OT_SURFSK_add_surface(Operator):
 class GPENCIL_OT_SURFSK_init(Operator):
     bl_idname = "gpencil.surfsk_init"
     bl_label = "Bsurfaces initialize"
-    bl_description = "Bsurfaces initialiaze"
-    
+    bl_description = "Bsurfaces initialize"
+
     active_object: PointerProperty(type=bpy.types.Object)
 
     def execute(self, context):
diff --git a/mesh_inset/triquad.py b/mesh_inset/triquad.py
index b94da8b03847413bf696f6b97af22e566af69913..1a5c266f061921536af533a41d76b81fad160516 100644
--- a/mesh_inset/triquad.py
+++ b/mesh_inset/triquad.py
@@ -815,7 +815,7 @@ def _EMatch(er):
         return (er, er[1][1])
     i = random.randint(0, len(er) - 1)
     eri = (wi, _, tl, tr) = er[i]
-    # case a: include eri.  exlude other edges that touch tl or tr
+    # case a: include eri. exclude other edges that touch tl or tr
     a = _CopyExcluding(er, tl, tr)
     a.append(eri)
     (amatch, wa) = _DCMatch(a)
diff --git a/mesh_looptools.py b/mesh_looptools.py
index 383bbbed3cc03c9da7c8678d39b4852c13c1f27d..1190bfe72f4b936c3c5ad17e8ed7f0405d8cec7f 100644
--- a/mesh_looptools.py
+++ b/mesh_looptools.py
@@ -4207,7 +4207,7 @@ class Relax(Operator):
 class Space(Operator):
     bl_idname = "mesh.looptools_space"
     bl_label = "Space"
-    bl_description = "Space the vertices in a regular distrubtion on the loop"
+    bl_description = "Space the vertices in a regular distribution on the loop"
     bl_options = {'REGISTER', 'UNDO'}
 
     influence: FloatProperty(
diff --git a/mesh_snap_utilities_line/op_line.py b/mesh_snap_utilities_line/op_line.py
index 20d5f0b82ee96352df162fdb3c0f838544a20e53..685ebca404dff5bd3ce7c4b778a50e6822e6826b 100644
--- a/mesh_snap_utilities_line/op_line.py
+++ b/mesh_snap_utilities_line/op_line.py
@@ -210,7 +210,7 @@ class SnapUtilitiesLine(SnapUtilities, bpy.types.Operator):
     wait_for_input : bpy.props.BoolProperty(name="Wait for Input", default=True)
 
     def _exit(self, context):
-        #avoids unpredictable crashs
+        #avoids unpredictable crashes
         del self.main_snap_obj
         del self.main_bm
         del self.list_edges
diff --git a/mesh_tiny_cad/VTX.py b/mesh_tiny_cad/VTX.py
index 531b99b6bf265cc79eb9ec984a416ee86446e3ca..f98e85cb67c0d20dfcae157f2c6754271410ebec 100644
--- a/mesh_tiny_cad/VTX.py
+++ b/mesh_tiny_cad/VTX.py
@@ -122,7 +122,7 @@ def do_vtx_if_appropriate(bm, edges):
     if not coplanar:
         return {'NON_PLANAR_EDGES'}
 
-    # point must lie on an edge or the virtual extention of an edge
+    # point must lie on an edge or the virtual extension of an edge
     bm = perform_vtx(bm, point, edges, (p1, p2, p3, p4), vertex_indices)
     return bm
 
diff --git a/mesh_tissue/colors_groups_exchanger.py b/mesh_tissue/colors_groups_exchanger.py
index 00fd364965ff73b7ce67e28a94b2243e5bd83b15..b3ffe31fc59afb2196286b0aae2e5091459a96e2 100644
--- a/mesh_tissue/colors_groups_exchanger.py
+++ b/mesh_tissue/colors_groups_exchanger.py
@@ -18,10 +18,10 @@
 
 #-------------------------- COLORS / GROUPS EXCHANGER -------------------------#
 #                                                                              #
-# Vertex Color to Vertex Group allow you to convert colors channles to weight  #
+# Vertex Color to Vertex Group allow you to convert colors channels to weight  #
 # maps.                                                                        #
 # The main purpose is to use vertex colors to store information when importing #
-# files from other softwares. The script works with the active vertex color    #
+# files from other software. The script works with the active vertex color     #
 # slot.                                                                        #
 # For use the command "Vertex Clors to Vertex Groups" use the search bar       #
 # (space bar).                                                                 #
diff --git a/mesh_tissue/tessellate_numpy.py b/mesh_tissue/tessellate_numpy.py
index 52b50e6046da0169f74baaf3a75abe293ea0c2d1..00d0237cbc88beba07841bd4072c12154298d3a5 100644
--- a/mesh_tissue/tessellate_numpy.py
+++ b/mesh_tissue/tessellate_numpy.py
@@ -2964,7 +2964,7 @@ class TISSUE_PT_tessellate_object(Panel):
                 if props.bool_multi_components:
                     col2.enabled = False
 
-                # TRANFER DATA ### OFF
+                # TRANSFER DATA ### OFF
                 if props.fill_mode != 'PATCH' and False:
                     col = layout.column(align=True)
                     col.label(text="Component Data:")
diff --git a/mesh_tissue/utils.py b/mesh_tissue/utils.py
index f91861204e60dd2e4de53e36f178e4e68e83292d..8e343feaffd4a2d1d89e80dbe97392983a2833fe 100644
--- a/mesh_tissue/utils.py
+++ b/mesh_tissue/utils.py
@@ -78,7 +78,7 @@ def read_weight(_weight, vertex_group):
     #for t in processes: t.join()
     return weight
 
-#Recursivly transverse layer_collection for a particular name
+#Recursively transverse layer_collection for a particular name
 def recurLayerCollection(layerColl, collName):
     found = None
     if (layerColl.name == collName):
diff --git a/object_carver/carver_draw.py b/object_carver/carver_draw.py
index 1e8d636cbb1de79ce9e4d5a30002635fb3969806..be2b5a4d3384940d769bb79b00f7bcca26dd7950 100644
--- a/object_carver/carver_draw.py
+++ b/object_carver/carver_draw.py
@@ -63,7 +63,7 @@ def draw_string(self, color1, color2, left, bottom, text, max_option, divide = 1
 	line_height = (blf.dimensions(font_id, "gM")[1] * 1.45)
 	y_offset = 5
 
-	# Test if the text is a list formated like : ('option', 'key')
+	# Test if the text is a list formatted like : ('option', 'key')
 	if isinstance(text,list):
 		for string in text:
 			blf.position(font_id, (left), (bottom + y_offset), 0)
@@ -76,7 +76,7 @@ def draw_string(self, color1, color2, left, bottom, text, max_option, divide = 1
 			blf.draw(font_id, string[1])
 			y_offset += line_height
 	else:
-		# The text is formated like : ('option')
+		# The text is formatted like : ('option')
 		blf.position(font_id, left, (bottom + y_offset), 0)
 		blf.color(font_id, *color1)
 		blf.draw(font_id, text)
diff --git a/object_color_rules.py b/object_color_rules.py
index dfa835aa385c32dd7ecff134665c3ecf79a4d540..ad8d75f2fb23d45b736629ee912e1254aad35bd0 100644
--- a/object_color_rules.py
+++ b/object_color_rules.py
@@ -167,7 +167,7 @@ def object_colors_calc(rules, objects):
                 if is_set is False:
                     obj_color = color
                 else:
-                    # prevent mixing colors loosing saturation
+                    # prevent mixing colors losing saturation
                     obj_color_s = obj_color.s
                     obj_color = (obj_color * blend[0]) + (color * blend[1])
                     obj_color.s = (obj_color_s * blend[0]) + (color.s * blend[1])
diff --git a/object_fracture_cell/fracture_cell_setup.py b/object_fracture_cell/fracture_cell_setup.py
index 83f7cdd1fcad934a3b5966d3b59ac87e2289d077..cb72aa1f88d26081612d0d9858d90584a5757844 100644
--- a/object_fracture_cell/fracture_cell_setup.py
+++ b/object_fracture_cell/fracture_cell_setup.py
@@ -249,7 +249,7 @@ def cell_fracture_objects(context, obj,
             except RuntimeError:
                 import traceback
                 traceback.print_exc()
-        # Smooth faces will remain only inner faces, after appling boolean modifier.
+        # Smooth faces will remain only inner faces, after applying boolean modifier.
         if use_smooth_faces:
             for bm_face in bm.faces:
                 bm_face.smooth = True
diff --git a/rigify/__init__.py b/rigify/__init__.py
index 4374116f6ee92ac8d6bd41bed0ec0215de4370aa..000100f4db58a0d8e4f21e3862e9429f18d1bf0e 100644
--- a/rigify/__init__.py
+++ b/rigify/__init__.py
@@ -143,7 +143,7 @@ class RigifyPreferences(AddonPreferences):
             print('Reloading external metarigs...')
             metarig_menu.get_external_metarigs(set_list)
 
-            # Re-register rig paramaters
+            # Re-register rig parameters
             register_rig_parameters()
 
     legacy_mode: BoolProperty(
diff --git a/rigify/legacy/utils.py b/rigify/legacy/utils.py
index f74a7abfe8f2a37b2211bdf2df86d24c84c8e51e..6a92a961ac9e5c6ab389427604c31b0bf1b9dd3e 100644
--- a/rigify/legacy/utils.py
+++ b/rigify/legacy/utils.py
@@ -354,7 +354,7 @@ def obj_to_bone(obj, rig, bone_name):
 
 def create_circle_polygon(number_verts, axis, radius=1.0, head_tail=0.0):
     """ Creates a basic circle around of an axis selected.
-        number_verts: number of vertices of the poligon
+        number_verts: number of vertices of the polygon
         axis: axis normal to the circle
         radius: the radius of the circle
         head_tail: where along the length of the bone the circle is (0.0=head, 1.0=tail)
diff --git a/rigify/rig_ui_template.py b/rigify/rig_ui_template.py
index 3fbcf996590b06d8df5437b3a3b3a888754d0a0f..6180ad03636a289ff6470eb7bd8dbc85bcb2d240 100644
--- a/rigify/rig_ui_template.py
+++ b/rigify/rig_ui_template.py
@@ -526,7 +526,7 @@ def ik2fk_leg(obj, fk, ik):
 
     else:
         # Stretch
-        if 'stretch_lenght' in footi.keys() and 'stretch_lenght' in thigh.keys():
+        if 'stretch_length' in footi.keys() and 'stretch_length' in thigh.keys():
             # Kept for compat with legacy rigify Human
             footi['stretch_length'] = thigh['stretch_length']
 
diff --git a/rigify/utils/widgets.py b/rigify/utils/widgets.py
index 8f1e344240686cf2a6969edb815f327fe3e873eb..85b81cffb4cb7e4c0ee043c864ec03711cf997ba 100644
--- a/rigify/utils/widgets.py
+++ b/rigify/utils/widgets.py
@@ -98,7 +98,7 @@ def create_widget(rig, bone_name, bone_transform_name=None):
 
 def create_circle_polygon(number_verts, axis, radius=1.0, head_tail=0.0):
     """ Creates a basic circle around of an axis selected.
-        number_verts: number of vertices of the poligon
+        number_verts: number of vertices of the polygon
         axis: axis normal to the circle
         radius: the radius of the circle
         head_tail: where along the length of the bone the circle is (0.0=head, 1.0=tail)
diff --git a/space_view3d_align_tools.py b/space_view3d_align_tools.py
index 8a9212f667054658278468d4a0466de23d12f2ff..b8c02968bfea0bce1c897f1f97158d9ee0c377c9 100644
--- a/space_view3d_align_tools.py
+++ b/space_view3d_align_tools.py
@@ -141,7 +141,7 @@ def align_function(subject, active_too, consistent, self_or_active, loc_x, loc_y
 
         me = obj.data
         co_list = []
-        # let's get all the points coodinates
+        # let's get all the points coordinates
         if space == "global":
             ok = False
             obj_mtx = obj.matrix_world
@@ -626,7 +626,7 @@ class OBJECT_OT_align_tools(Operator):
             name="Selection reference",
             description="Moved objects reference point"
             )
-    # Active Oject Option:
+    # Active Object Option:
     ref2: EnumProperty(
             items=(("3", "Max", "Align to the maximum point"),
                    ("1", "Center", "Align to the center point"),
diff --git a/space_view3d_copy_attributes.py b/space_view3d_copy_attributes.py
index 7037354c6943714d904baa5a7022d80edb74c051..f75d185bebc098746275a7de92ed9ad1197f3183 100644
--- a/space_view3d_copy_attributes.py
+++ b/space_view3d_copy_attributes.py
@@ -144,7 +144,7 @@ def pLoopExec(self, context, funk):
         funk(bone, active, context)
 
 
-# The following functions are used o copy attributes from active to bone
+# The following functions are used to copy attributes from active to bone
 
 def pLocLocExec(bone, active, context):
     bone.location = active.location
@@ -316,7 +316,7 @@ def world_to_basis(active, ob, context):
     return(mat)
 
 
-# The following functions are used o copy attributes from
+# The following functions are used to copy attributes from
 # active to selected object
 
 def obLoc(ob, active, context):
diff --git a/space_view3d_math_vis/__init__.py b/space_view3d_math_vis/__init__.py
index 94d871d33153ffb5abf8f66a19f44755d80acebf..e110ac529d133afb35a7e8cd55a58fb02be73059 100644
--- a/space_view3d_math_vis/__init__.py
+++ b/space_view3d_math_vis/__init__.py
@@ -246,7 +246,7 @@ class MathVis(PropertyGroup):
     in_front: BoolProperty(
         name="Always In Front",
         default=True,
-        description="Draw Points and lines alwasy in front",
+        description="Draw Points and lines always in front",
         update=call_console_hook
     )