diff --git a/Tools/freeze/checkextensions_win32.py b/Tools/freeze/checkextensions_win32.py
index e5a8b29..8c6444c 100644
--- a/Tools/freeze/checkextensions_win32.py
+++ b/Tools/freeze/checkextensions_win32.py
@@ -3,7 +3,7 @@
 Under Windows it is unlikely the .obj files are of use, as special compiler options
 are needed (primarily to toggle the behavior of "public" symbols.
 
-I dont consider it worth parsing the MSVC makefiles for compiler options.  Even if
+I don't consider it worth parsing the MSVC makefiles for compiler options.  Even if
 we get it just right, a specific freeze application may have specific compiler
 options anyway (eg, to enable or disable specific functionality)
 
@@ -14,7 +14,7 @@
   your own).
 * This description can include:
   - The MSVC .dsp file for the extension.  The .c source file names
-    are extraced from there.
+    are extracted from there.
   - Specific compiler/linker options
   - Flag to indicate if Unicode compilation is expected.
 
diff --git a/Tools/freeze/makefreeze.py b/Tools/freeze/makefreeze.py
index 1208b67..c0f5056 100644
--- a/Tools/freeze/makefreeze.py
+++ b/Tools/freeze/makefreeze.py
@@ -62,7 +62,7 @@
         outfp.write('\t{"%s", M_%s, %d},\n' % (mod, mangled, size))
     outfp.write('\n')
     # The following modules have a NULL code pointer, indicating
-    # that the prozen program should not search for them on the host
+    # that the frozen program should not search for them on the host
     # system. Importing them will *always* raise an ImportError.
     # The zero value size is never used.
     for mod in fail_import:
diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py
index e12769d..b4bfdcc 100644
--- a/Tools/gdb/libpython.py
+++ b/Tools/gdb/libpython.py
@@ -617,7 +617,7 @@
     def iteritems(self):
         '''
         Yields a sequence of (PyObjectPtr key, PyObjectPtr value) pairs,
-        analagous to dict.iteritems()
+        analogous to dict.iteritems()
         '''
         for i in safe_range(self.field('ma_mask') + 1):
             ep = self.field('ma_table') + i
diff --git a/Tools/i18n/msgfmt.py b/Tools/i18n/msgfmt.py
index 8c9b9dc..2502a10 100755
--- a/Tools/i18n/msgfmt.py
+++ b/Tools/i18n/msgfmt.py
@@ -144,7 +144,7 @@
         # This is a message with plural forms
         elif l.startswith('msgid_plural'):
             if section != ID:
-                print >> sys.stderr, 'msgid_plural not preceeded by msgid on %s:%d' %\
+                print >> sys.stderr, 'msgid_plural not preceded by msgid on %s:%d' %\
                     (infile, lno)
                 sys.exit(1)
             l = l[12:]
diff --git a/Tools/msi/msilib.py b/Tools/msi/msilib.py
index e02a3e2..760471c 100644
--- a/Tools/msi/msilib.py
+++ b/Tools/msi/msilib.py
@@ -305,7 +305,7 @@
         t.create(db)
     # Fill the validation table
     add_data(db, "_Validation", schema._Validation_records)
-    # Initialize the summary information, allowing atmost 20 properties
+    # Initialize the summary information, allowing at most 20 properties
     si = db.GetSummaryInformation(20)
     si.SetProperty(PID_TITLE, "Installation Database")
     si.SetProperty(PID_SUBJECT, ProductName)
diff --git a/Tools/pybench/CommandLine.py b/Tools/pybench/CommandLine.py
index 6601be5..fde3178 100644
--- a/Tools/pybench/CommandLine.py
+++ b/Tools/pybench/CommandLine.py
@@ -458,7 +458,7 @@
                 handler = getattr(self, handlername)
             except AttributeError:
                 if value == '':
-                    # count the number of occurances
+                    # count the number of occurrences
                     if values.has_key(optionname):
                         values[optionname] = values[optionname] + 1
                     else:
diff --git a/Tools/pybench/systimes.py b/Tools/pybench/systimes.py
index 013add2..db1210d 100644
--- a/Tools/pybench/systimes.py
+++ b/Tools/pybench/systimes.py
@@ -5,7 +5,7 @@
 
     This module implements various different strategies for measuring
     performance timings. It tries to choose the best available method
-    based on the platforma and available tools.
+    based on the platform and available tools.
 
     On Windows, it is recommended to have the Mark Hammond win32
     package installed. Alternatively, the Thomas Heller ctypes
diff --git a/Tools/pynche/DetailsViewer.py b/Tools/pynche/DetailsViewer.py
index 11a99a6..fb597b5 100644
--- a/Tools/pynche/DetailsViewer.py
+++ b/Tools/pynche/DetailsViewer.py
@@ -26,7 +26,7 @@
         other side.  Thus if red were at 238 and 25 were added to it, red
         would have the value 7.
 
-    Preseve Distance
+    Preserve Distance
         When the increment or decrement would send any of the tied variations
         out of bounds, all tied variations are wrapped as one, so as to
         preserve the distance between them.  Thus if green and blue were tied,
diff --git a/Tools/scripts/fixnotice.py b/Tools/scripts/fixnotice.py
index 0ae4872..e613b65 100755
--- a/Tools/scripts/fixnotice.py
+++ b/Tools/scripts/fixnotice.py
@@ -2,7 +2,7 @@
 
 """(Ostensibly) fix copyright notices in files.
 
-Actually, this sript will simply replace a block of text in a file from one
+Actually, this script will simply replace a block of text in a file from one
 string to another.  It will only do this once though, i.e. not globally
 throughout the file.  It writes a backup file and then does an os.rename()
 dance for atomicity.
diff --git a/Tools/scripts/ifdef.py b/Tools/scripts/ifdef.py
index 2ed7a66..5487f1a 100755
--- a/Tools/scripts/ifdef.py
+++ b/Tools/scripts/ifdef.py
@@ -9,11 +9,11 @@
 # options.  On standard output it writes a copy of the input file(s)
 # minus those code sections that are suppressed by the selected
 # combination of defined/undefined symbols.  The #if(n)def/#else/#else
-# lines themselfs (if the #if(n)def tests for one of the mentioned
+# lines themselves (if the #if(n)def tests for one of the mentioned
 # names) are removed as well.
 
 # Features: Arbitrary nesting of recognized and unrecognized
-# preprocesor statements works correctly.  Unrecognized #if* commands
+# preprocessor statements works correctly.  Unrecognized #if* commands
 # are left in place, so it will never remove too much, only too
 # little.  It does accept whitespace around the '#' character.
 
diff --git a/Tools/scripts/pathfix.py b/Tools/scripts/pathfix.py
index 7f6f191..850903a 100755
--- a/Tools/scripts/pathfix.py
+++ b/Tools/scripts/pathfix.py
@@ -135,7 +135,7 @@
     except os.error, msg:
         err('%s: rename failed (%r)\n' % (filename, msg))
         return 1
-    # Return succes
+    # Return success
     return 0
 
 def fixline(line):
