diff --git a/Doc/c-api/conversion.rst b/Doc/c-api/conversion.rst
index 400fb2c..5a747ef 100644
--- a/Doc/c-api/conversion.rst
+++ b/Doc/c-api/conversion.rst
@@ -89,15 +89,15 @@
    
 .. cfunction:: char * PyOS_stricmp(char *s1, char *s2)
 
-   Case insensitive comparsion of strings. The functions works almost
-   identical to :cfunc:`strcmp` except that it ignores the case.
+   Case insensitive comparison of strings. The function works almost
+   identically to :cfunc:`strcmp` except that it ignores the case.
 
    .. versionadded:: 2.6
 
 
 .. cfunction:: char * PyOS_strnicmp(char *s1, char *s2, Py_ssize_t  size)
 
-   Case insensitive comparsion of strings. The functions works almost
-   identical to :cfunc:`strncmp` except that it ignores the case.
+   Case insensitive comparison of strings. The function works almost
+   identically to :cfunc:`strncmp` except that it ignores the case.
 
    .. versionadded:: 2.6
diff --git a/Doc/extending/windows.rst b/Doc/extending/windows.rst
index a0782a7..1811277 100644
--- a/Doc/extending/windows.rst
+++ b/Doc/extending/windows.rst
@@ -23,7 +23,7 @@
 
    This chapter mentions a number of filenames that include an encoded Python
    version number.  These filenames are represented with the version number shown
-   as ``XY``; in practive, ``'X'`` will be the major version number and ``'Y'``
+   as ``XY``; in practice, ``'X'`` will be the major version number and ``'Y'``
    will be the minor version number of the Python release you're working with.  For
    example, if you are using Python 2.2.1, ``XY`` will actually be ``22``.
 
diff --git a/Doc/library/__future__.rst b/Doc/library/__future__.rst
index e2349cc..d6f82a3 100644
--- a/Doc/library/__future__.rst
+++ b/Doc/library/__future__.rst
@@ -16,7 +16,7 @@
 
 * To document when incompatible changes were introduced, and when they will be
   --- or were --- made mandatory.  This is a form of executable documentation, and
-  can be inspected programatically via importing :mod:`__future__` and examining
+  can be inspected programmatically via importing :mod:`__future__` and examining
   its contents.
 
 Each statement in :file:`__future__.py` is of the form::
diff --git a/Doc/library/ftplib.rst b/Doc/library/ftplib.rst
index 728eeab..c5eabb4 100644
--- a/Doc/library/ftplib.rst
+++ b/Doc/library/ftplib.rst
@@ -316,7 +316,7 @@
 
    Send a ``QUIT`` command to the server and close the connection. This is the
    "polite" way to close a connection, but it may raise an exception of the server
-   reponds with an error to the ``QUIT`` command.  This implies a call to the
+   responds with an error to the ``QUIT`` command.  This implies a call to the
    :meth:`close` method which renders the :class:`FTP` instance useless for
    subsequent calls (see below).
 
diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst
index 6de9392..9586a34 100644
--- a/Doc/library/functions.rst
+++ b/Doc/library/functions.rst
@@ -1389,7 +1389,7 @@
 or use in modern Python programming.  They have been kept here to maintain
 backwards compatibility with programs written for older versions of Python.
 
-Python programmers, trainers, students and bookwriters should feel free to
+Python programmers, trainers, students and book writers should feel free to
 bypass these functions without concerns about missing something important.
 
 
diff --git a/Doc/library/imputil.rst b/Doc/library/imputil.rst
index 6a50b7a..09a41f6 100644
--- a/Doc/library/imputil.rst
+++ b/Doc/library/imputil.rst
@@ -108,7 +108,7 @@
 This code is intended to be read, not executed.  However, it does work
 -- all you need to do to enable it is "import knee".
 
-(The name is a pun on the klunkier predecessor of this module, "ni".)
+(The name is a pun on the clunkier predecessor of this module, "ni".)
 
 ::
 
diff --git a/Doc/library/macosa.rst b/Doc/library/macosa.rst
index 67475ed..250a923 100644
--- a/Doc/library/macosa.rst
+++ b/Doc/library/macosa.rst
@@ -6,10 +6,10 @@
 *********************
 
 This chapter describes the current implementation of the Open Scripting
-Architecure (OSA, also commonly referred to as AppleScript) for Python, allowing
-you to control scriptable applications from your Python program, and with a
-fairly pythonic interface. Development on this set of modules has stopped, and a
-replacement is expected for Python 2.5.
+Architecture (OSA, also commonly referred to as AppleScript) for Python,
+allowing you to control scriptable applications from your Python program,
+and with a fairly pythonic interface. Development on this set of modules has
+stopped, and a replacement is expected for Python 2.5.
 
 For a description of the various components of AppleScript and OSA, and to get
 an understanding of the architecture and terminology, you should read Apple's
diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst
index 697bfef..4b1196b 100644
--- a/Doc/library/multiprocessing.rst
+++ b/Doc/library/multiprocessing.rst
@@ -160,7 +160,7 @@
 
    The ``'d'`` and ``'i'`` arguments used when creating ``num`` and ``arr`` are
    typecodes of the kind used by the :mod:`array` module: ``'d'`` indicates a
-   double precision float and ``'i'`` inidicates a signed integer.  These shared
+   double precision float and ``'i'`` indicates a signed integer.  These shared
    objects will be process and thread safe.
 
    For more flexibility in using shared memory one can use the
@@ -784,7 +784,7 @@
 
    A bounded semaphore object: a clone of :class:`threading.BoundedSemaphore`.
 
-   (On Mac OSX this is indistiguishable from :class:`Semaphore` because
+   (On Mac OSX this is indistinguishable from :class:`Semaphore` because
    ``sem_getvalue()`` is not implemented on that platform).
 
 .. class:: Condition([lock])
@@ -893,8 +893,8 @@
 
 .. note::
 
-   Although it is posible to store a pointer in shared memory remember that this
-   will refer to a location in the address space of a specific process.
+   Although it is possible to store a pointer in shared memory remember that
+   this will refer to a location in the address space of a specific process.
    However, the pointer is quite likely to be invalid in the context of a second
    process and trying to dereference the pointer from the second process may
    cause a crash.
@@ -1776,7 +1776,7 @@
    handler which sends output to :data:`sys.stderr` using format
    ``'[%(levelname)s/%(processName)s] %(message)s'``.  (The logger allows use of
    the non-standard ``'%(processName)s'`` format.)  Message sent to this logger
-   will not by default propogate to the root logger.
+   will not by default propagate to the root logger.
 
    Note that on Windows child processes will only inherit the level of the
    parent process's logger -- any other customization of the logger will not be
diff --git a/Doc/library/operator.rst b/Doc/library/operator.rst
index 023bb74..4921898 100644
--- a/Doc/library/operator.rst
+++ b/Doc/library/operator.rst
@@ -630,7 +630,7 @@
 +-----------------------+-------------------------+---------------------------------+
 | Right Shift           | ``a >> b``              | ``rshift(a, b)``                |
 +-----------------------+-------------------------+---------------------------------+
-| Sequence Repitition   | ``seq * i``             | ``repeat(seq, i)``              |
+| Sequence Repetition   | ``seq * i``             | ``repeat(seq, i)``              |
 +-----------------------+-------------------------+---------------------------------+
 | Slice Assignment      | ``seq[i:j] = values``   | ``setslice(seq, i, j, values)`` |
 +-----------------------+-------------------------+---------------------------------+
diff --git a/Doc/library/select.rst b/Doc/library/select.rst
index 3fef993..5e079bb 100644
--- a/Doc/library/select.rst
+++ b/Doc/library/select.rst
@@ -338,7 +338,7 @@
    +---------------------------+---------------------------------------------+
    | :const:`KQ_EV_DISABLE`    | Disablesevent                               |
    +---------------------------+---------------------------------------------+
-   | :const:`KQ_EV_ONESHOT`    | Removes event after first occurence         |
+   | :const:`KQ_EV_ONESHOT`    | Removes event after first occurrence        |
    +---------------------------+---------------------------------------------+
    | :const:`KQ_EV_CLEAR`      | Reset the state after an event is retrieved |
    +---------------------------+---------------------------------------------+
@@ -373,7 +373,7 @@
    +============================+============================================+
    | :const:`KQ_NOTE_DELETE`    | *unlink()* was called                      |
    +----------------------------+--------------------------------------------+
-   | :const:`KQ_NOTE_WRITE`     | a write occured                            |
+   | :const:`KQ_NOTE_WRITE`     | a write occurred                           |
    +----------------------------+--------------------------------------------+
    | :const:`KQ_NOTE_EXTEND`    | the file was extended                      |
    +----------------------------+--------------------------------------------+
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index 2da9f9f..4dd8f58 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -1543,7 +1543,7 @@
    .. method:: isdisjoint(other)
 
       Return True if the set has no elements in common with *other*.  Sets are
-      disjoint if and only if their interesection is the empty set.
+      disjoint if and only if their intersection is the empty set.
 
       .. versionadded:: 2.6
 
diff --git a/Doc/library/string.rst b/Doc/library/string.rst
index fa953f2..be9bccb 100644
--- a/Doc/library/string.rst
+++ b/Doc/library/string.rst
@@ -293,7 +293,7 @@
 
    "noses     "
    
-Which is subsitituted into the string, yielding::
+Which is substituted into the string, yielding::
    
    "A man with two noses     "
    
diff --git a/Doc/library/tix.rst b/Doc/library/tix.rst
index dea88fa..8b5355d 100644
--- a/Doc/library/tix.rst
+++ b/Doc/library/tix.rst
@@ -310,8 +310,8 @@
 .. \ulink{FileEntry}{http://tix.sourceforge.net/dist/current/demos/samples/FileEnt.tcl}
 
 
-Hierachical ListBox
-^^^^^^^^^^^^^^^^^^^
+Hierarchical ListBox
+^^^^^^^^^^^^^^^^^^^^
 
 
 .. class:: HList()
diff --git a/Doc/library/turtle.rst b/Doc/library/turtle.rst
index 9a6d49f..7b8ced7 100644
--- a/Doc/library/turtle.rst
+++ b/Doc/library/turtle.rst
@@ -1275,7 +1275,7 @@
    ...     left(10)
    ...
    >>> for _ in range(8):
-   ...     left(45); fd(2)   # a regular octogon
+   ...     left(45); fd(2)   # a regular octagon
 
 
 Animation control
@@ -1286,7 +1286,7 @@
    :param delay: positive integer
 
    Set or return the drawing *delay* in milliseconds.  (This is approximately
-   the time interval between two consecutived canvas updates.)  The longer the
+   the time interval between two consecutive canvas updates.)  The longer the
    drawing delay, the slower the animation.
 
    Optional argument:
diff --git a/Doc/library/urllib2.rst b/Doc/library/urllib2.rst
index 6cab787..18f5af7 100644
--- a/Doc/library/urllib2.rst
+++ b/Doc/library/urllib2.rst
@@ -923,7 +923,7 @@
 obtain the HTTP proxy's URL.
 
 This example replaces the default :class:`ProxyHandler` with one that uses
-programatically-supplied proxy URLs, and adds proxy authorization support with
+programmatically-supplied proxy URLs, and adds proxy authorization support with
 :class:`ProxyBasicAuthHandler`. ::
 
    proxy_handler = urllib2.ProxyHandler({'http': 'http://www.example.com:3128/'})
diff --git a/Doc/library/wsgiref.rst b/Doc/library/wsgiref.rst
index 91f5e87..a888bf9 100644
--- a/Doc/library/wsgiref.rst
+++ b/Doc/library/wsgiref.rst
@@ -415,7 +415,7 @@
       from wsgiref.validate import validator
       from wsgiref.simple_server import make_server
 
-      # Our callable object which is intentionally not compilant to the 
+      # Our callable object which is intentionally not compliant to the 
       # standard, so the validator is going to break
       def simple_app(environ, start_response):
           status = '200 OK' # HTTP Status
diff --git a/Doc/library/xmlrpclib.rst b/Doc/library/xmlrpclib.rst
index 84f662c..a227c47 100644
--- a/Doc/library/xmlrpclib.rst
+++ b/Doc/library/xmlrpclib.rst
@@ -379,7 +379,7 @@
    try:
        proxy.add(2, 5)
    except xmlrpclib.Fault, err:
-       print "A fault occured"
+       print "A fault occurred"
        print "Fault code: %d" % err.faultCode
        print "Fault string: %s" % err.faultString
 
@@ -426,7 +426,7 @@
    try:
        proxy.some_method()
    except xmlrpclib.ProtocolError, err:
-       print "A protocol error occured"
+       print "A protocol error occurred"
        print "URL: %s" % err.url
        print "HTTP/HTTPS headers: %s" % err.headers
        print "Error code: %d" % err.errcode
diff --git a/Doc/tutorial/stdlib2.rst b/Doc/tutorial/stdlib2.rst
index ed4c876..abcf96a 100644
--- a/Doc/tutorial/stdlib2.rst
+++ b/Doc/tutorial/stdlib2.rst
@@ -286,7 +286,7 @@
 performance trade-offs.
 
 The :mod:`array` module provides an :class:`array()` object that is like a list
-that stores only homogenous data and stores it more compactly.  The following
+that stores only homogeneous data and stores it more compactly.  The following
 example shows an array of numbers stored as two byte unsigned binary numbers
 (typecode ``"H"``) rather than the usual 16 bytes per entry for regular lists of
 python int objects::
diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst
index cd706a7..3c9b478 100644
--- a/Doc/using/windows.rst
+++ b/Doc/using/windows.rst
@@ -188,7 +188,7 @@
 startup.
 
 You can also make all ``.py`` scripts execute with :program:`pythonw.exe`,
-setting this through the usual facilites, for example (might require
+setting this through the usual facilities, for example (might require
 administrative rights):
 
 #. Launch a command prompt.
@@ -217,7 +217,7 @@
 
 The `PyWin32 <http://python.net/crew/mhammond/win32/>`_ module by Mark Hammond
 is a collection of modules for advanced Windows-specific support.  This includes
-utilites for:
+utilities for:
 
 * `Component Object Model <http://www.microsoft.com/com/>`_ (COM)
 * Win32 API calls
diff --git a/Doc/whatsnew/2.6.rst b/Doc/whatsnew/2.6.rst
index df5ccb6..d40c8ca 100644
--- a/Doc/whatsnew/2.6.rst
+++ b/Doc/whatsnew/2.6.rst
@@ -529,7 +529,7 @@
 .. XXX I think this still needs help
 
 :mod:`multiprocessing` makes it easy to distribute work over multiple processes.
-Its API is similiar to that of :mod:`threading`.  For example::
+Its API is similar to that of :mod:`threading`.  For example::
 
     from multiprocessing import Process
 
