diff --git a/CMakeLists.txt b/CMakeLists.txt
index 57e1abe105322348aea572b4ca62bbe65ec75278..4cea098d8faca738ab7d1e8db5d88b6443677e70 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -379,7 +379,7 @@ if (NOT LWS_HAVE_inline)
 	endif()
 endif()
 
-# Put the libaries and binaries that get built into directories at the
+# Put the libraries and binaries that get built into directories at the
 # top of the build tree rather than in hard-to-find leaf directories. 
 SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
 SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib")
diff --git a/README.build.md b/README.build.md
index 0b8a90befcb6e096b41cd6e0388a46f6f76b378e..b11a487693e1c091f8e84fb9cbe1b6a1c80f59a1 100644
--- a/README.build.md
+++ b/README.build.md
@@ -225,11 +225,11 @@ Setting compile options
 -----------------------
 
 To set compile time flags you can either use one of the CMake gui applications
-or do it via command line.
+or do it via the command line.
 
 Command line
 ------------
-To list avaialable options (ommit the H if you don't want the help text):
+To list available options (omit the H if you don't want the help text):
 
 	cmake -LH ..
 
diff --git a/README.coding.md b/README.coding.md
index 84157646de3a089b8e5753d3856d25dd84a23a5e..9d5e87a308cd6d178ca7855c99735d290de94c00 100644
--- a/README.coding.md
+++ b/README.coding.md
@@ -21,7 +21,7 @@ allow up to that many connections, minus whatever other file descriptors are
 in use by the user code.
 
 If you want to restrict that allocation, or increase it, you can use ulimit or
-similar to change the avaiable number of file descriptors, and when restarted
+similar to change the available number of file descriptors, and when restarted
 **libwebsockets** will adapt accordingly.
 
 
diff --git a/README.lwsws.md b/README.lwsws.md
index cebc6b298db61bb7a9744f38a67a8009ceb7dafa..eb8df6b4571842f6d2a062596f27cfa432d41057 100644
--- a/README.lwsws.md
+++ b/README.lwsws.md
@@ -241,7 +241,7 @@ Note: currently only a fixed set of mimetypes are supported.
 Other mount options
 -------------------
 
-1) When using a cgi:// protcol origin at a mountpoint, you may also give cgi environment variables specific to the mountpoint like this
+1) When using a cgi:// protocol origin at a mountpoint, you may also give cgi environment variables specific to the mountpoint like this
 
 ```
        {
diff --git a/README.test-apps.md b/README.test-apps.md
index 3b76052a80dada5763f342c41d08db035a1fa098..b8ccc43ec35662a3d41eeb54a2c86e0c72a49136 100644
--- a/README.test-apps.md
+++ b/README.test-apps.md
@@ -84,7 +84,7 @@ The test client supports SSL too, use
 $ libwebsockets-test-client localhost --ssl -s
 ```
 
-the -s tells it to accept the default selfsigned cert from the server,
+the -s tells it to accept the default self-signed cert from the server,
 otherwise it will strictly fail the connection if there is no CA cert to
 validate the server's certificate.
 
@@ -141,7 +141,7 @@ To test SSL/WSS client action, just run the client test with
 $ libwebsockets-test-client localhost --ssl
 ```
 
-By default the client test applet is set to accept selfsigned
+By default the client test applet is set to accept self-signed
 certificates used by the test server, this is indicated by the
 `use_ssl` var being set to `2`.  Set it to `1` to reject any server
 certificate that it doesn't have a trusted CA cert for.
@@ -192,7 +192,7 @@ Before you can even use the PING opcode that is part of the
 standard, you must complete a handshake with a specified
 protocol.  By default lws-mirror-protocol is used which is
 supported by the test server.  But if you are using it on
-another server, you can specify the protcol to handshake with
+another server, you can specify the protocol to handshake with
 by `--protocol=protocolname`
 
 
@@ -350,7 +350,7 @@ Autobahn Test Notes
 -------------------
 
 1) Autobahn tests the user code + lws implementation.  So to get the same
-results, you need to follow test-echo.c in terms of user implmentation.
+results, you need to follow test-echo.c in terms of user implementation.
 
 2) Some of the tests make no sense for Libwebsockets to support and we fail them.
 
diff --git a/lib/http2.c b/lib/http2.c
index 2f3ea01a2b9d53415c81ef8380b9610a5db49f1f..ea949405c2ca93365d578210a6b43692de3c7072 100644
--- a/lib/http2.c
+++ b/lib/http2.c
@@ -479,7 +479,7 @@ int lws_http2_do_pps_send(struct lws_context *context, struct lws *wsi)
 			wsi->u.http.fd = LWS_INVALID_FILE;
 
 			if (lws_is_ssl(lws_http2_get_network_wsi(wsi))) {
-				lwsl_info("skipping nonexistant ssl upgrade headers\n");
+				lwsl_info("skipping nonexistent ssl upgrade headers\n");
 				break;
 			}
 
diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c
index 8562290306888b66ba4e97820e132372cd2ff66b..6c3598c00020f38c6113cf9d3e782a2749bfa8ec 100755
--- a/lib/libwebsockets.c
+++ b/lib/libwebsockets.c
@@ -1321,7 +1321,7 @@ lws_get_fops(struct lws_context *context)
 }
 
 /**
- * lws_get_context - Allow geting lws_context from a Websocket connection
+ * lws_get_context - Allow getting lws_context from a Websocket connection
  * instance
  *
  * With this function, users can access context in the callback function.
@@ -1735,7 +1735,7 @@ lws_create_basic_wsi(struct lws_context *context, int tsi)
 	new_wsi->pending_timeout = NO_PENDING_TIMEOUT;
 	new_wsi->rxflow_change_to = LWS_RXFLOW_ALLOW;
 
-	/* intialize the instance struct */
+	/* initialize the instance struct */
 
 	new_wsi->state = LWSS_CGI;
 	new_wsi->mode = LWSCM_CGI;
diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h
index 51830909bd4026fc5a94a4b44008a8294ea5ebf7..3b34ffd92087bf2912992502d4a12508549c6144 100644
--- a/lib/libwebsockets.h
+++ b/lib/libwebsockets.h
@@ -1012,7 +1012,7 @@ struct lws_extension;
  *
  *	LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS: if configured for
  *		including OpenSSL support, this callback allows your user code
- *		to load extra certifcates into the server which allow it to
+ *		to load extra certificates into the server which allow it to
  *		verify the validity of certificates returned by clients.  @user
  *		is the server's OpenSSL SSL_CTX*
  *
diff --git a/lib/lws-plat-unix.c b/lib/lws-plat-unix.c
index b430a78c4e4f10396e82ba3fdcae463d6fbb1d23..612426cc355714afaca3166d0a35e965da2acc36 100644
--- a/lib/lws-plat-unix.c
+++ b/lib/lws-plat-unix.c
@@ -538,7 +538,7 @@ lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr,
 	freeifaddrs(ifr);
 
 	if (rc == -1) {
-		/* check if bind to IP adddress */
+		/* check if bind to IP address */
 #ifdef LWS_USE_IPV6
 		if (inet_pton(AF_INET6, ifname, &addr6->sin6_addr) == 1)
 			rc = 0;
diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h
index 8102a73069cd585f4272944607f088c93acf27f9..dffecf415e57d7fb8cd400fa38bd2176457c5421 100644
--- a/lib/private-libwebsockets.h
+++ b/lib/private-libwebsockets.h
@@ -627,7 +627,7 @@ struct lws_context_per_thread {
  *   vhostwide SSL context
  *   vhostwide proxy
  *
- * heirarchy:
+ * hierarchy:
  *
  * context -> vhost -> wsi
  *
diff --git a/lib/server.c b/lib/server.c
index 2f49882bd33cc2fb0cef76b4a04645e2b3a50b15..e658b8e107ff69805adab5e1b8c9fd3e56b89ece 100644
--- a/lib/server.c
+++ b/lib/server.c
@@ -1189,7 +1189,7 @@ lws_create_new_server_wsi(struct lws_vhost *vhost)
 	new_wsi->pending_timeout = NO_PENDING_TIMEOUT;
 	new_wsi->rxflow_change_to = LWS_RXFLOW_ALLOW;
 
-	/* intialize the instance struct */
+	/* initialize the instance struct */
 
 	new_wsi->state = LWSS_HTTP;
 	new_wsi->mode = LWSCM_HTTP_SERVING;
@@ -1533,7 +1533,7 @@ lws_server_socket_service(struct lws_context *context, struct lws *wsi,
 		    wsi->state == LWSS_HTTP_ISSUING_FILE ||
 		    wsi->state == LWSS_HTTP_HEADERS) {
 			if (!wsi->u.hdr.ah)
-				/* no autoservice beacuse we will do it next */
+				/* no autoservice because we will do it next */
 				if (lws_header_table_attach(wsi, 0))
 					goto try_pollout;
 
diff --git a/lib/service.c b/lib/service.c
index f6ad73a2f7b07a7630b9c223372c25a745031ae3..1b3fc40e7e8b7c20e3a59b13b80b6d23c3bbc55e 100644
--- a/lib/service.c
+++ b/lib/service.c
@@ -923,7 +923,7 @@ drain:
 			lws_change_pollfd(wsi, LWS_POLLIN, 0);
 
 			/* let user code know, he'll usually ask for writeable
-			 * callback and drain / reenable it there
+			 * callback and drain / re-enable it there
 			 */
 			if (user_callback_handle_rxflow(
 					wsi->protocol->callback,
diff --git a/test-server/attack.sh b/test-server/attack.sh
index bf4823e765bea9f820c393dd91cec6abdd989508..19dff02354bc5ee097c336d7c6ac82b7d3f3e610 100755
--- a/test-server/attack.sh
+++ b/test-server/attack.sh
@@ -233,7 +233,7 @@ check default
 check
 
 echo
-echo "---- nonexistant file"
+echo "---- nonexistent file"
 rm -f /tmp/lwscap
 echo -e "GET /nope HTTP/1.1\x0d\x0a\x0d\x0a" | nc $SERVER $PORT | sed '1,/^\r$/d'> /tmp/lwscap
 check media
diff --git a/test-server/test-echo.c b/test-server/test-echo.c
index 75390f67aaf8315f9e16620734749424f353e195..992acef01a0c7195c795283f8180a01e41abab77 100644
--- a/test-server/test-echo.c
+++ b/test-server/test-echo.c
@@ -182,7 +182,7 @@ static struct lws_protocols protocols[] = {
 	/* first protocol must always be HTTP handler */
 
 	{
-		"",		/* name - can be overriden with -e */
+		"",		/* name - can be overridden with -e */
 		callback_echo,
 		sizeof(struct per_session_data__echo),	/* per_session_data_size */
 		MAX_ECHO_PAYLOAD,
diff --git a/test-server/test-ping.c b/test-server/test-ping.c
index 65ab942b22f594a76e8a5d9245a2b19a17ed4d00..d0be3705beeaac6b657fbb98f833b4fce19f866a 100644
--- a/test-server/test-ping.c
+++ b/test-server/test-ping.c
@@ -396,7 +396,7 @@ int main(int argc, char **argv)
 		case 'r':
 			clients = atoi(optarg);
 			if (clients > MAX_PING_CLIENTS || clients < 1) {
-				fprintf(stderr, "Max clients supportd = %d\n",
+				fprintf(stderr, "Max clients supported = %d\n",
 							      MAX_PING_CLIENTS);
 				return 1;
 			}
diff --git a/test-server/test-server-http.c b/test-server/test-server-http.c
index 215dc2262505946fda9c27e6d1b53abbb0dc9623..09a0de4fcf6442b68fc065c4f8102b8a5f4b90d0 100644
--- a/test-server/test-server-http.c
+++ b/test-server/test-server-http.c
@@ -279,7 +279,7 @@ int callback_http(struct lws *wsi, enum lws_callback_reasons reason, void *user,
 						     LWS_O_RDONLY);
 
 			if (pss->fd == LWS_INVALID_FILE) {
-				lwsl_err("faild to open file %s\n", leaf_path);
+				lwsl_err("failed to open file %s\n", leaf_path);
 				return -1;
 			}