diff --git a/docs/README.md b/docs/README.md
index 2602a152254910544314cd8d7167724914359ecb..faf386710a0d5d1448d45c6d121938807f37be30 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -35,6 +35,6 @@ This can be achieved with:
     make MICROPY_PORT=<port_name> latexpdf
 
 but require rather complete install of LaTeX with various extensions. On
-Debiab/Ubuntu, try (500MB+ download):
+Debian/Ubuntu, try (500MB+ download):
 
     apt-get install texlive-latex-recommended texlive-latex-extra
diff --git a/docs/esp8266/general.rst b/docs/esp8266/general.rst
index 313e6074c12eb429e3e1049668ef407e11a324f4..3ffb2ff33997f0a96340919975d31c610f1cad45 100644
--- a/docs/esp8266/general.rst
+++ b/docs/esp8266/general.rst
@@ -52,7 +52,7 @@ For your convenience, some of technical specifications are provided below:
   external FlashROM, UART, deep sleep wake-up, etc.)
 * UART: One RX/TX UART (no hardware handshaking), one TX-only UART.
 * SPI: 2 SPI interfaces (one used for FlashROM).
-* I2C: No native extenal I2C (bitbang implementation available on any pins).
+* I2C: No native external I2C (bitbang implementation available on any pins).
 * I2S: 1.
 * Programming: using BootROM bootloader from UART. Due to external FlashROM
   and always-available BootROM bootloader, ESP8266 is not brickable.
diff --git a/docs/esp8266/tutorial/repl.rst b/docs/esp8266/tutorial/repl.rst
index 078f31357c52862cd35c7b16f482449f1ca4a25c..338e9fdd8f3c93b6f34429165f306da8c254535e 100644
--- a/docs/esp8266/tutorial/repl.rst
+++ b/docs/esp8266/tutorial/repl.rst
@@ -36,7 +36,7 @@ WebREPL - a prompt over WiFi
 WebREPL allows you to use the Python prompt over WiFi, connecting through a
 browser. The latest versions of Firefox and Chrome are supported.
 
-For your convinience, WebREPL client is hosted at
+For your convenience, WebREPL client is hosted at
 `<http://micropython.org/webrepl>`__ . Alternatively, you can install it
 locally from the the GitHub repository
 `<https://github.com/micropython/webrepl>`__ .
diff --git a/docs/library/builtins.rst b/docs/library/builtins.rst
index d99eadce3e8eed20463328a557ce342a5027f4b8..42768ab999a28d7662555758ca6441666eea359b 100644
--- a/docs/library/builtins.rst
+++ b/docs/library/builtins.rst
@@ -1,7 +1,7 @@
 Builtin Functions
 =================
 
-All builtin functions are described here. They are alse available via
+All builtin functions are described here. They are also available via
 ``builtins`` module.
 
 .. function:: abs()
diff --git a/docs/library/esp.rst b/docs/library/esp.rst
index 34d3c278d9fff0cb2a31fc4d3f15b1bfb3598a91..0836bba72edd55db5279ff58ac2464f535e2502a 100644
--- a/docs/library/esp.rst
+++ b/docs/library/esp.rst
@@ -15,7 +15,7 @@ Functions
     Get or set the sleep type.
 
     If the ``sleep_type`` parameter is provided, sets the sleep type to its
-    value. If the function is called wihout parameters, returns the current
+    value. If the function is called without parameters, returns the current
     sleep type.
 
     The possible sleep types are defined as constants:
diff --git a/docs/library/machine.Pin.rst b/docs/library/machine.Pin.rst
index fdada2f383f732ab74aac25a53c0a753f3a40b36..db25787f94dd26d1fab4fb34c5567df4034281ac 100644
--- a/docs/library/machine.Pin.rst
+++ b/docs/library/machine.Pin.rst
@@ -84,7 +84,7 @@ Methods
 
             - ``None`` - no pull up or down resistor.
             - ``Pin.PULL_UP`` - pull up resistor enabled.
-            - ``Pin.PULL_DOWN`` - pull down resitor enabled.
+            - ``Pin.PULL_DOWN`` - pull down resistor enabled.
 
          - ``drive`` can be one of:
 
diff --git a/docs/library/machine.RTC.rst b/docs/library/machine.RTC.rst
index b6e98e9d1f40719bc54f83bfb1e798cbcf01415e..6dc8b3e9abc7e3d502cb91e9f04a6bcdf0272045 100644
--- a/docs/library/machine.RTC.rst
+++ b/docs/library/machine.RTC.rst
@@ -39,7 +39,7 @@ Methods
 
 .. method:: RTC.alarm(id, time, /*, repeat=False)
 
-   Set the RTC alarm. Time might be either a milllisecond value to program the alarm to
+   Set the RTC alarm. Time might be either a millisecond value to program the alarm to
    current time + time_in_ms in the future, or a datetimetuple. If the time passed is in
    milliseconds, repeat can be set to ``True`` to make the alarm periodic.
 
diff --git a/docs/library/machine.SPI.rst b/docs/library/machine.SPI.rst
index f3c95181dc11f0ef013f27000317686e5644ecdc..73b3a3996dbf89a316952795740eac75721cac46 100644
--- a/docs/library/machine.SPI.rst
+++ b/docs/library/machine.SPI.rst
@@ -45,7 +45,7 @@ Methods
        respectively.
      - ``bits`` is the width of each transfer, accepted values are 8, 16 and 32.
      - ``firstbit`` can be ``SPI.MSB`` only.
-     - ``pins`` is an optional tupple with the pins to assign to the SPI bus.
+     - ``pins`` is an optional tuple with the pins to assign to the SPI bus.
 
 .. method:: SPI.deinit()
 
diff --git a/docs/library/machine.Timer.rst b/docs/library/machine.Timer.rst
index 344d1ea86e2c71c8ae4e85c947e3bc8bffdb67f8..12db58d5c41c5292017f5b76e31e0914564f33fc 100644
--- a/docs/library/machine.Timer.rst
+++ b/docs/library/machine.Timer.rst
@@ -104,7 +104,7 @@ Methods
        If only a channel identifier passed, then a previously initialized channel
        object is returned (or ``None`` if there is no previous channel).
 
-       Othwerwise, a TimerChannel object is initialized and returned.
+       Otherwise, a TimerChannel object is initialized and returned.
        
        The operating mode is is the one configured to the Timer object that was used to
        create the channel.
@@ -152,7 +152,7 @@ Methods
 
     .. method:: timerchannel.irq(\*, trigger, priority=1, handler=None)
 
-        The behavior of this callback is heaviliy dependent on the operating
+        The behavior of this callback is heavily dependent on the operating
         mode of the timer channel:
 
             - If mode is ``Timer.PERIODIC`` the callback is executed periodically
diff --git a/docs/library/machine.UART.rst b/docs/library/machine.UART.rst
index 27a8801900af3551f675e9b2ce46a8a1c9cfdbc8..f832cf46643022b1dde90ab2bf9902dbe345523e 100644
--- a/docs/library/machine.UART.rst
+++ b/docs/library/machine.UART.rst
@@ -167,7 +167,7 @@ Methods
     .. data:: UART.EVEN
     .. data:: UART.ODD
 
-        parity types (anlong with ``None``)
+        parity types (along with ``None``)
 
     .. data:: UART.RX_ANY
 
diff --git a/docs/library/machine.rst b/docs/library/machine.rst
index b103ec393dc667f6b7018680cc737b218bd6c498..0f361a7cb7cfbd02700463172a3f420004a77e9e 100644
--- a/docs/library/machine.rst
+++ b/docs/library/machine.rst
@@ -57,7 +57,7 @@ Power related functions
    Gates the clock to the CPU, useful to reduce power consumption at any time during
    short or long periods. Peripherals continue working and execution resumes as soon
    as any interrupt is triggered (on many ports this includes system timer
-   interrupt occuring at regular intervals on the order of millisecond).
+   interrupt occurring at regular intervals on the order of millisecond).
 
 .. function:: sleep()
 
@@ -96,7 +96,7 @@ Miscellaneous functions
 
 .. function:: unique_id()
 
-   Returns a byte string with a unique idenifier of a board/SoC. It will vary
+   Returns a byte string with a unique identifier of a board/SoC. It will vary
    from a board/SoC instance to another, if underlying hardware allows. Length
    varies by hardware (so use substring of a full value if you expect a short
    ID). In some MicroPython ports, ID corresponds to the network MAC address.
diff --git a/docs/library/network.rst b/docs/library/network.rst
index b183ef9a4bc3232a8689268f663d211d7212d731..0e18106aa8a5475fb12ec49a2cc26c7339476d46 100644
--- a/docs/library/network.rst
+++ b/docs/library/network.rst
@@ -237,7 +237,7 @@ For example::
         Get or set the PHY mode.
 
         If the ``mode`` parameter is provided, sets the mode to its value. If
-        the function is called wihout parameters, returns the current mode.
+        the function is called without parameters, returns the current mode.
 
         The possible modes are defined as constants:
             * ``MODE_11B`` -- IEEE 802.11b,
@@ -319,7 +319,7 @@ For example::
             * ``STAT_WRONG_PASSWORD`` -- failed due to incorrect password,
             * ``STAT_NO_AP_FOUND`` -- failed because no access point replied,
             * ``STAT_CONNECT_FAIL`` -- failed due to other problems,
-            * ``STAT_GOT_IP`` -- connection susccessful.
+            * ``STAT_GOT_IP`` -- connection successful.
 
     .. method:: wlan.isconnected()
 
@@ -329,7 +329,7 @@ For example::
 
     .. method:: wlan.ifconfig([(ip, subnet, gateway, dns)])
 
-       Get/set IP-level network interface paremeters: IP address, subnet mask,
+       Get/set IP-level network interface parameters: IP address, subnet mask,
        gateway and DNS server. When called with no arguments, this method returns
        a 4-tuple with the above information. To set the above values, pass a
        4-tuple with the required information.  For example::
@@ -343,8 +343,8 @@ For example::
        with additional parameters beyond standard IP configuration (as dealt with by
        ``wlan.ifconfig()``). These include network-specific and hardware-specific
        parameters. For setting parameters, keyword argument syntax should be used,
-       multiple parameters can be set at once. For querying, paremeters name should
-       be quoted as a string, and only one paramter can be queries at time::
+       multiple parameters can be set at once. For querying, parameters name should
+       be quoted as a string, and only one parameter can be queries at time::
 
         # Set WiFi access point name (formally known as ESSID) and WiFi channel
         ap.config(essid='My AP', channel=11)
@@ -397,7 +397,7 @@ For example::
     .. note::
 
        The ``WLAN`` constructor is special in the sense that if no arguments besides the id are given,
-       it will return the already exisiting ``WLAN`` instance without re-configuring it. This is
+       it will return the already existing ``WLAN`` instance without re-configuring it. This is
        because ``WLAN`` is a system feature of the WiPy. If the already existing instance is not
        initialized it will do the same as the other constructors an will initialize it with default
        values.
diff --git a/docs/library/pyb.ADC.rst b/docs/library/pyb.ADC.rst
index 2ffd4e16f590a5b449e9e4f252de65cf5022479a..51021fdc1aa8d49efafa92b0fbdac1d8a3cad9ca 100644
--- a/docs/library/pyb.ADC.rst
+++ b/docs/library/pyb.ADC.rst
@@ -13,7 +13,7 @@ class ADC -- analog to digital conversion
         adc = pyb.ADC(pin)              # create an analog object from a pin
         val = adc.read()                # read an analog value
     
-        adc = pyb.ADCAll(resolution)    # creale an ADCAll object
+        adc = pyb.ADCAll(resolution)    # create an ADCAll object
         val = adc.read_channel(channel) # read the given channel
         val = adc.read_core_temp()      # read MCU temperature
         val = adc.read_core_vbat()      # read MCU VBAT
diff --git a/docs/library/pyb.DAC.rst b/docs/library/pyb.DAC.rst
index 4b9651e27e0af5d40cef0fda6d8041654d454d16..fd786b63b6ca60ef7f9922d7b0eb62531aa5b948 100644
--- a/docs/library/pyb.DAC.rst
+++ b/docs/library/pyb.DAC.rst
@@ -79,7 +79,7 @@ Methods
 .. method:: DAC.triangle(freq)
 
    Generate a triangle wave.  The value on the DAC output changes at
-   the given frequency, and the frequence of the repeating triangle wave
+   the given frequency, and the frequency of the repeating triangle wave
    itself is 2048 times smaller.
 
 .. method:: DAC.write(value)
diff --git a/docs/library/pyb.ExtInt.rst b/docs/library/pyb.ExtInt.rst
index d8f4d92bb80c5e6ae77e863eeb446242d374c5dd..814217cef086382faf2ca6a319cd28fdceee8f01 100644
--- a/docs/library/pyb.ExtInt.rst
+++ b/docs/library/pyb.ExtInt.rst
@@ -7,7 +7,7 @@ class ExtInt -- configure I/O pins to interrupt on external events
 There are a total of 22 interrupt lines. 16 of these can come from GPIO pins
 and the remaining 6 are from internal sources.
 
-For lines 0 thru 15, a given line can map to the corresponding line from an
+For lines 0 through 15, a given line can map to the corresponding line from an
 arbitrary port. So line 0 can map to Px0 where x is A, B, C, ... and
 line 1 can map to Px1 where x is A, B, C, ... ::
 
@@ -27,7 +27,7 @@ explanation, along with various techniques for debouncing.
 Trying to register 2 callbacks onto the same pin will throw an exception.
 
 If pin is passed as an integer, then it is assumed to map to one of the
-internal interrupt sources, and must be in the range 16 thru 22.
+internal interrupt sources, and must be in the range 16 through 22.
 
 All other pin objects go through the pin mapper to come up with one of the
 gpio pins. ::
diff --git a/docs/library/pyb.I2C.rst b/docs/library/pyb.I2C.rst
index 210b4ccf21574c71c316cf3486395b057af7b189..67131feec011bc5519e2a8e65abe557384fdea0f 100644
--- a/docs/library/pyb.I2C.rst
+++ b/docs/library/pyb.I2C.rst
@@ -39,7 +39,7 @@ Printing the i2c object gives you information about its configuration.
 
     You can specify a timeout (in ms)::
 
-        i2c.send(b'123', timeout=2000)   # timout after 2 seconds
+        i2c.send(b'123', timeout=2000)   # timeout after 2 seconds
 
     A master must specify the recipient's address::
 
diff --git a/docs/library/pyb.Pin.rst b/docs/library/pyb.Pin.rst
index 154217ebb7c79ba5220e4b4255a5a36bce5b810f..4f589fff8985d83e900e0f69bf4fdec8bbf762c0 100644
--- a/docs/library/pyb.Pin.rst
+++ b/docs/library/pyb.Pin.rst
@@ -231,7 +231,7 @@ Constants
     class PinAF -- Pin Alternate Functions
     ======================================
     
-    A Pin represents a physical pin on the microcprocessor. Each pin
+    A Pin represents a physical pin on the microprocessor. Each pin
     can have a variety of functions (GPIO, I2C SDA, etc). Each PinAF
     object represents a particular function for a pin.
     
@@ -240,7 +240,7 @@ Constants
         x3 = pyb.Pin.board.X3
         x3_af = x3.af_list()
     
-    x3_af will now contain an array of PinAF objects which are availble on
+    x3_af will now contain an array of PinAF objects which are available on
     pin X3.
     
     For the pyboard, x3_af would contain:
diff --git a/docs/library/pyb.RTC.rst b/docs/library/pyb.RTC.rst
index 383ddf20c25bed200d85fdb6e2bbb0a078b1bff4..26285545263da7ad8a5935866128356c068b45d4 100644
--- a/docs/library/pyb.RTC.rst
+++ b/docs/library/pyb.RTC.rst
@@ -73,7 +73,7 @@ Methods
        value, which is an integer in the range [-511 : 512].  With one
        argument it sets the RTC calibration.
     
-       The RTC Smooth Calibration mechanism addjusts the RTC clock rate by
+       The RTC Smooth Calibration mechanism adjusts the RTC clock rate by
        adding or subtracting the given number of ticks from the 32768 Hz
        clock over a 32 second period (corresponding to 2^20 clock ticks.)
        Each tick added will speed up the clock by 1 part in 2^20, or 0.954
diff --git a/docs/library/pyb.Timer.rst b/docs/library/pyb.Timer.rst
index ffb092caa3c58e575be218dd31c8a553ea5a1966..052bce2efd6c110ae8e2f3d82bdd357592ff3818 100644
--- a/docs/library/pyb.Timer.rst
+++ b/docs/library/pyb.Timer.rst
@@ -78,7 +78,7 @@ Methods
        
        Keyword arguments:
        
-         - ``freq`` --- specifies the periodic frequency of the timer. You migh also
+         - ``freq`` --- specifies the periodic frequency of the timer. You might also
            view this as the frequency with which the timer goes through one complete cycle.
        
          - ``prescaler`` [0-0xffff] - specifies the value to be loaded into the
@@ -97,7 +97,7 @@ Methods
     
            - ``Timer.UP`` - configures the timer to count from 0 to ARR (default)
            - ``Timer.DOWN`` - configures the timer to count from ARR down to 0.
-           - ``Timer.CENTER`` - confgures the timer to count from 0 to ARR and
+           - ``Timer.CENTER`` - configures the timer to count from 0 to ARR and
              then back down to 0.
        
          - ``div`` can be one of 1, 2, or 4. Divides the timer clock to determine
@@ -109,7 +109,7 @@ Methods
            transitions on complimentary channels (both channels will be inactive)
            for this time). ``deadtime`` may be an integer between 0 and 1008, with
            the following restrictions: 0-128 in steps of 1. 128-256 in steps of
-           2, 256-512 in steps of 8, and 512-1008 in steps of 16. ``deadime``
+           2, 256-512 in steps of 8, and 512-1008 in steps of 16. ``deadtime``
            measures ticks of ``source_freq`` divided by ``div`` clock ticks.
            ``deadtime`` is only available on timers 1 and 8.
        
@@ -141,7 +141,7 @@ Methods
        If only a channel number is passed, then a previously initialized channel
        object is returned (or ``None`` if there is no previous channel).
        
-       Othwerwise, a TimerChannel object is initialized and returned.
+       Otherwise, a TimerChannel object is initialized and returned.
        
        Each channel can be configured to perform pwm, output compare, or
        input capture. All channels share the same underlying timer, which means
@@ -183,7 +183,7 @@ Methods
          - ``polarity`` can be one of:
     
            - ``Timer.HIGH`` - output is active high
-           - ``Timer.LOW`` - output is acive low
+           - ``Timer.LOW`` - output is active low
        
        Optional keyword arguments for Timer.IC modes:
        
diff --git a/docs/library/pyb.rst b/docs/library/pyb.rst
index 7be39a5d8e11067ba440482f7062e8e037967a66..2f3e7d36bd9818a3eb96cbde92558b03c25f1052 100644
--- a/docs/library/pyb.rst
+++ b/docs/library/pyb.rst
@@ -46,7 +46,7 @@ Time related functions
    Returns the number of milliseconds which have elapsed since ``start``.
    
    This function takes care of counter wrap, and always returns a positive
-   number. This means it can be used to measure periods upto about 12.4 days.
+   number. This means it can be used to measure periods up to about 12.4 days.
    
    Example::
 
@@ -59,7 +59,7 @@ Time related functions
    Returns the number of microseconds which have elapsed since ``start``.
    
    This function takes care of counter wrap, and always returns a positive
-   number. This means it can be used to measure periods upto about 17.8 minutes.
+   number. This means it can be used to measure periods up to about 17.8 minutes.
    
    Example::
 
diff --git a/docs/library/ubinascii.rst b/docs/library/ubinascii.rst
index 0a9adb50d4501197711f51e3737a609bd60ee717..4931f9048215910b32b3a11c103d275d3013aa44 100644
--- a/docs/library/ubinascii.rst
+++ b/docs/library/ubinascii.rst
@@ -17,7 +17,7 @@ Functions
    .. admonition:: Difference to CPython
       :class: attention
 
-      If additional argument, `sep` is supplied, it is used as a seperator
+      If additional argument, `sep` is supplied, it is used as a separator
       between hexadecimal values.
 
 .. function:: unhexlify(data)
diff --git a/docs/library/ucollections.rst b/docs/library/ucollections.rst
index c7ed068c7ef6898724123d5976c58c5c27f13a77..4e9de9ac672bd054ecfa7d40c43538d2a7d29cc4 100644
--- a/docs/library/ucollections.rst
+++ b/docs/library/ucollections.rst
@@ -13,10 +13,10 @@ Classes
 .. function:: namedtuple(name, fields)
 
     This is factory function to create a new namedtuple type with a specific
-    name and set of fields. A namedtyple is a subclass of tuple which allows
+    name and set of fields. A namedtuple is a subclass of tuple which allows
     to access its fields not just by numeric index, but also with an attribute
     access syntax using symbolic field names. Fields is a sequence of strings
-    specifying field names. For compatibily with CPython it can also be a
+    specifying field names. For compatibility with CPython it can also be a
     a string with space-separated field named (but this is less efficient).
     Example of use::
 
diff --git a/docs/library/uctypes.rst b/docs/library/uctypes.rst
index 630a3a36fbf7d4ff83e50b3bbf5c990727b141fa..2a9c4dd5c0776c5ad258dabd472d4af4948cabf6 100644
--- a/docs/library/uctypes.rst
+++ b/docs/library/uctypes.rst
@@ -118,7 +118,7 @@ Module contents
 
 .. data:: BIG_ENDIAN
 
-   Layour type for a big-endian packed structure.
+   Layout type for a big-endian packed structure.
 
 .. data:: NATIVE
 
@@ -184,7 +184,7 @@ Subscripting a pointer with other integer values but 0 are supported too,
 with the same semantics as in C.
 
 Summing up, accessing structure fields generally follows C syntax,
-except for pointer derefence, when you need to use ``[0]`` operator
+except for pointer dereference, when you need to use ``[0]`` operator
 instead of ``*``.
 
 Limitations
diff --git a/docs/library/uhashlib.rst b/docs/library/uhashlib.rst
index 5de4b6f7baba2a37829b29e0721dba265ea90551..223c72dfe7a82b784de211a116993a6c05c09f96 100644
--- a/docs/library/uhashlib.rst
+++ b/docs/library/uhashlib.rst
@@ -9,7 +9,7 @@
     This module implements binary data hashing algorithms. Currently, it
     implements SHA256 algorithm. Choosing SHA256 was a deliberate choice,
     as a modern, cryptographically secure algorithm. This means that a
-    single algorithm can cover both usecases of "any hash algorithm" and
+    single algorithm can cover both use cases of "any hash algorithm" and
     security-related usage, and thus save space omitting legacy algorithms
     like MD5 or SHA1.
 
@@ -53,7 +53,7 @@ Constructors
       
        Example::
       
-           hash = uhashlib.sha1('abcd1234', 1001)    # lenght of the initial piece is multiple of 4 bytes
+           hash = uhashlib.sha1('abcd1234', 1001)    # length of the initial piece is multiple of 4 bytes
            hash.update('1234')                       # also multiple of 4 bytes
            ...
            hash.update('12345')                      # last chunk may be of any length
@@ -68,7 +68,7 @@ Methods
 
 .. method:: hash.digest()
 
-   Return hash for all data passed thru hash, as a bytes object. After this
+   Return hash for all data passed through hash, as a bytes object. After this
    method is called, more data cannot be fed into hash any longer.
 
    .. only:: port_wipy
diff --git a/docs/library/uio.rst b/docs/library/uio.rst
index 1b3e2a0822891e3719eb97743dfd4093f6f83a05..1823df8c4c220d78c2b1e1035b19f3eb1a98c721 100644
--- a/docs/library/uio.rst
+++ b/docs/library/uio.rst
@@ -12,7 +12,7 @@ Functions
 
 .. function:: open(name, mode='r', **kwargs)
 
-    Open a file. Builtin ``open()`` function is alised to this function.
+    Open a file. Builtin ``open()`` function is aliased to this function.
     All ports (which provide access to file system) are required to support
     `mode` parameter, but support for other arguments vary by port.
 
diff --git a/docs/library/uos.rst b/docs/library/uos.rst
index bb95107c04fb9381d070b1b791e115c10ed83adb..77a61ca4499f55c14db48b2e7f54572a6b00a5ce 100644
--- a/docs/library/uos.rst
+++ b/docs/library/uos.rst
@@ -81,7 +81,7 @@ Functions
 
     .. function:: unmount(path)
 
-       Unmounts a prevoulsy mounted block device from the given path.
+       Unmounts a previously mounted block device from the given path.
 
     .. function:: mkfs(block_device or path)
 
diff --git a/docs/library/utime.rst b/docs/library/utime.rst
index 0bca4692ac99104c4e27dd405d209e364ab56567..83106738303d80622755473651f0327390c3887f 100644
--- a/docs/library/utime.rst
+++ b/docs/library/utime.rst
@@ -117,7 +117,7 @@ Functions
 .. function:: time()
 
    Returns the number of seconds, as an integer, since the Epoch, assuming that underlying
-   RTC is set and maintained as decsribed above. If an RTC is not set, this function returns
+   RTC is set and maintained as described above. If an RTC is not set, this function returns
    number of seconds since a port-specific reference point in time (for embedded boards without
    a battery-backed RTC, usually since power up or reset). If you want to develop portable
    MicroPython application, you should not rely on this function to provide higher than second
diff --git a/docs/pyboard/tutorial/timer.rst b/docs/pyboard/tutorial/timer.rst
index fee01e17b7c5db4466ce7d36664d7a37a17e1ec8..aedaaa13c53233c1fcb0a8641bda1b7517616939 100644
--- a/docs/pyboard/tutorial/timer.rst
+++ b/docs/pyboard/tutorial/timer.rst
@@ -95,7 +95,7 @@ We set up timer 2 as follows::
 
 The prescaler is set at 83, which makes this timer count at 1 MHz.
 This is because the CPU clock, running at 168 MHz, is divided by
-2 and then by prescaler+1, giving a freqency of 168 MHz/2/(83+1)=1 MHz
+2 and then by prescaler+1, giving a frequency of 168 MHz/2/(83+1)=1 MHz
 for timer 2.  The period is set to a large number so that the timer
 can count up to a large number before wrapping back around to zero.
 In this case it will take about 17 minutes before it cycles back to
diff --git a/docs/pyboard/tutorial/usb_mouse.rst b/docs/pyboard/tutorial/usb_mouse.rst
index 4c3a85e548bbe758978ab0fd91465b774390edd7..ac1de6e2752288112cf1b0468d97491954aed618 100644
--- a/docs/pyboard/tutorial/usb_mouse.rst
+++ b/docs/pyboard/tutorial/usb_mouse.rst
@@ -61,7 +61,7 @@ The first argument to the function ``osc`` is the number of mouse events to send
 and the second argument is the delay (in milliseconds) between events.  Try
 playing around with different numbers.
 
-**Excercise: make the mouse go around in a circle.**
+**Exercise: make the mouse go around in a circle.**
 
 Making a mouse with the accelerometer
 -------------------------------------
@@ -85,14 +85,14 @@ the [safe mode tutorial](tut-reset), but we repeat the instructions here:
 3. The LEDs will then cycle green to orange to green+orange and back again.
 4. Keep holding down USR until *only the orange LED is lit*, and then let
    go of the USR switch.
-5. The orange LED should flash quickly 4 times, and then turn off.  
+5. The orange LED should flash quickly 4 times, and then turn off.
 6. You are now in safe mode.
 
 In safe mode, the ``boot.py`` and ``main.py`` files are not executed, and so
 the pyboard boots up with default settings.  This means you now have access
 to the filesystem (the USB drive should appear), and you can edit ``main.py``.
 (Leave ``boot.py`` as-is, because we still want to go back to HID-mode after
-we finish editting ``main.py``.)
+we finish editing ``main.py``.)
 
 In ``main.py`` put the following code::
 
diff --git a/docs/reference/asm_thumb2_hints_tips.rst b/docs/reference/asm_thumb2_hints_tips.rst
index f0826e47ef880671b61de27d3519a067e552f224..062a3c8448c03f85affbaa3501093b63cf9002b4 100644
--- a/docs/reference/asm_thumb2_hints_tips.rst
+++ b/docs/reference/asm_thumb2_hints_tips.rst
@@ -129,7 +129,7 @@ Non-integer data types
 ~~~~~~~~~~~~~~~~~~~~~~
 
 These may be handled by means of arrays of the appropriate data type. For
-example, single precison floating point data may be processed as follows.
+example, single precision floating point data may be processed as follows.
 This code example takes an array of floats and replaces its contents with
 their squares.
 
@@ -172,7 +172,7 @@ thus:
 
 The const() construct causes MicroPython to replace the variable name
 with its value at compile time. If constants are declared in an outer
-Python scope they can be shared between mutiple assembler functions and
+Python scope they can be shared between multiple assembler functions and
 with Python code.
 
 Assembler code as class methods
diff --git a/docs/reference/asm_thumb2_label_branch.rst b/docs/reference/asm_thumb2_label_branch.rst
index 2c5e527185dc21801361b7901fce9a87355bf1bb..8c85e55f0e88135b3b92bae4ac32224393962653 100644
--- a/docs/reference/asm_thumb2_label_branch.rst
+++ b/docs/reference/asm_thumb2_label_branch.rst
@@ -23,7 +23,7 @@ specifiers:
 * ne Not equal
 * cs Carry set
 * cc Carry clear
-* mi Minus (negaive)
+* mi Minus (negative)
 * pl Plus (positive)
 * vs Overflow set
 * vc Overflow clear
diff --git a/docs/reference/isr_rules.rst b/docs/reference/isr_rules.rst
index 2be4243f9e54810eefcce59410451871c687f17c..b33e4dd6f2f7b3a6a4ce30766fc04722302da2fc 100644
--- a/docs/reference/isr_rules.rst
+++ b/docs/reference/isr_rules.rst
@@ -24,7 +24,7 @@ This summarises the points detailed below and lists the principal recommendation
 * Where an ISR returns multiple bytes use a pre-allocated ``bytearray``. If multiple integers are to be
   shared between an ISR and the main program consider an array (``array.array``).
 * Where data is shared between the main program and an ISR, consider disabling interrupts prior to accessing
-  the data in the main program and re-enabling them immediately afterwards (see Critcal Sections).
+  the data in the main program and re-enabling them immediately afterwards (see Critical Sections).
 * Allocate an emergency exception buffer (see below).
 
 
diff --git a/docs/reference/repl.rst b/docs/reference/repl.rst
index 8ca89a0d1a877e65a5995ffcdc86e3eef832e62d..7a683ca220c426ad38f2e41ee55239d90b4af810 100644
--- a/docs/reference/repl.rst
+++ b/docs/reference/repl.rst
@@ -50,7 +50,7 @@ Finally type ``print(i)``, press RETURN, press BACKSPACE and press RETURN again:
     >>>
 
 Auto-indent won't be applied if the previous two lines were all spaces.  This
-means that you can finish entering a compound statment by pressing RETURN
+means that you can finish entering a compound statement by pressing RETURN
 twice, and then a third press will finish and execute.
 
 Auto-completion
@@ -80,7 +80,7 @@ expansions:
 Interrupting a running program
 ------------------------------
 
-You can interupt a running program by pressing Ctrl-C. This will raise a KeyboardInterrupt
+You can interrupt a running program by pressing Ctrl-C. This will raise a KeyboardInterrupt
 which will bring you back to the REPL, providing your program doesn't intercept the
 KeyboardInterrupt exception.
 
@@ -184,8 +184,8 @@ variables no longer exist:
 The special variable _ (underscore)
 -----------------------------------
 
-When you use the REPL, you may perfom computations and see the results.
-MicroPython stores the results of the previous statment in the variable _ (underscore).
+When you use the REPL, you may perform computations and see the results.
+MicroPython stores the results of the previous statement in the variable _ (underscore).
 So you can use the underscore to save the result in a variable. For example:
 
     >>> 1 + 2 + 3 + 4 + 5
diff --git a/docs/wipy/general.rst b/docs/wipy/general.rst
index c1e9696601037bf46c795a28f88cfbeb10054c92..2f18e7a62f41f427e53e561189cc455ac8478aac 100644
--- a/docs/wipy/general.rst
+++ b/docs/wipy/general.rst
@@ -16,7 +16,7 @@ Before applying power
 
 .. warning:: 
 
-   The GPIO pins of the WiPy are NOT 5V tolerant, connecting them to voltages higer
+   The GPIO pins of the WiPy are NOT 5V tolerant, connecting them to voltages higher
    than 3.6V will cause irreparable damage to the board. ADC pins, when configured 
    in analog mode cannot withstand voltages above 1.8V. Keep these considerations in
    mind when wiring your electronics.
diff --git a/docs/wipy/quickref.rst b/docs/wipy/quickref.rst
index 6fd77a81bd7fcead9f8d1a81b5dc62b345fac13e..3ce7e013251f75d4db8ea45fdd87656771175c9b 100644
--- a/docs/wipy/quickref.rst
+++ b/docs/wipy/quickref.rst
@@ -205,7 +205,7 @@ See :ref:`network.Server <network.Server>` ::
     server = Server(login=('user', 'password'), timeout=60)
     server.timeout(300) # change the timeout
     server.timeout() # get the timeout
-    server.isrunning() # check wether the server is running or not
+    server.isrunning() # check whether the server is running or not
 
 Heart beat LED
 --------------
diff --git a/docs/wipy/tutorial/intro.rst b/docs/wipy/tutorial/intro.rst
index 7dc5f1c13d397a548a7456103664b66c6525820b..3acc0510f1376db0e6bdce78124ec5ff9e840c1d 100644
--- a/docs/wipy/tutorial/intro.rst
+++ b/docs/wipy/tutorial/intro.rst
@@ -17,7 +17,7 @@ Because the WiPy/expansion board does not have a housing it needs a bit of care:
     If you experience a lot of static electricity in your area (eg dry and cold
     climates), take extra care not to shock the WiPy.  If your WiPy came
     in a ESD bag, then this bag is the best way to store and carry the
-    WiPy as it will protect it agains static discharges.
+    WiPy as it will protect it against static discharges.
 
 As long as you take care of the hardware, you should be okay.  It's almost
 impossible to break the software on the WiPy, so feel free to play around