diff --git a/contrib/tsm_system_time/tsm_system_time.c b/contrib/tsm_system_time/tsm_system_time.c
index efb127c1d573374cfd110e283cc4f91a91298b9f..9af9e749216a7c710b56ea1019ae0535ce09a249 100644
--- a/contrib/tsm_system_time/tsm_system_time.c
+++ b/contrib/tsm_system_time/tsm_system_time.c
@@ -267,7 +267,7 @@ tsm_system_time_cost(PG_FUNCTION_ARGS)
 							  NULL);
 
 	/*
-	 * Assumption here is that we'll never read less then 1% of table pages,
+	 * Assumption here is that we'll never read less than 1% of table pages,
 	 * this is here mainly because it is much less bad to overestimate than
 	 * underestimate and using just spc_random_page_cost will probably lead
 	 * to underestimations in general.
diff --git a/doc/src/sgml/logicaldecoding.sgml b/doc/src/sgml/logicaldecoding.sgml
index 00f6eeee35ff4e8a9aa057d62110e4c9f745e06d..5fa2f77ea893e8012a43c4456e6efdfeb7b07cfc 100644
--- a/doc/src/sgml/logicaldecoding.sgml
+++ b/doc/src/sgml/logicaldecoding.sgml
@@ -649,7 +649,7 @@ OutputPluginWrite(ctx, true);
    <title>Synchronous Replication Support for Logical Decoding</title>
 
    <para>
-    Logical decoding can be used to to build
+    Logical decoding can be used to build
     <link linkend="synchronous-replication">synchronous
     replication</link> solutions with the same user interface as synchronous
     replication for <link linkend="streaming-replication">streaming
diff --git a/doc/src/sgml/ref/pg_dumpall.sgml b/doc/src/sgml/ref/pg_dumpall.sgml
index fcf5f77a6dbfb047b37f389e1b0e7e23797c08ae..0444f09aa419c5d5c8e28477ebd0e06d0bc847fb 100644
--- a/doc/src/sgml/ref/pg_dumpall.sgml
+++ b/doc/src/sgml/ref/pg_dumpall.sgml
@@ -454,7 +454,7 @@ PostgreSQL documentation
       <term><option>--database=<replaceable>dbname</replaceable></option></term>
       <listitem>
        <para>
-         Specifies the name of the database to connect to to dump global
+         Specifies the name of the database to connect to dump global
          objects and discover what other databases should be dumped. If
          not specified, the <literal>postgres</literal> database will be used,
          and if that does not exist, <literal>template1</literal> will be used.
diff --git a/src/backend/access/gin/ginpostinglist.c b/src/backend/access/gin/ginpostinglist.c
index 6337b1a8fce27da9a5de1f09c4205e15a5c43e66..e6d7c1a07882a2fd2f8f6ef2cbc5fac9157ea339 100644
--- a/src/backend/access/gin/ginpostinglist.c
+++ b/src/backend/access/gin/ginpostinglist.c
@@ -23,7 +23,7 @@
 /*
  * For encoding purposes, item pointers are represented as 64-bit unsigned
  * integers. The lowest 11 bits represent the offset number, and the next
- * lowest 32 bits are the block number. That leaves 17 bits unused, ie.
+ * lowest 32 bits are the block number. That leaves 17 bits unused, i.e.
  * only 43 low bits are used.
  *
  * These 43-bit integers are encoded using varbyte encoding. In each byte,
@@ -51,16 +51,16 @@
  * Removing number is actually replacement of two numbers with their sum. We
  * have to prove that varbyte encoding of a sum can't be longer than varbyte
  * encoding of its summands. Sum of two numbers is at most one bit wider than
- * than the larger of the summands. Widening a number by one bit enlarges its
- * length in varbyte encoding by at most one byte. Therefore, varbyte encoding
- * of sum is at most one byte longer than varbyte encoding of larger summand.
- * Lesser summand is at least one byte, so the sum cannot take more space than
- * the summands, Q.E.D.
+ * the larger of the summands. Widening a number by one bit enlarges its length
+ * in varbyte encoding by at most one byte. Therefore, varbyte encoding of sum
+ * is at most one byte longer than varbyte encoding of larger summand. Lesser
+ * summand is at least one byte, so the sum cannot take more space than the
+ * summands, Q.E.D.
  *
  * This property greatly simplifies VACUUM, which can assume that posting
  * lists always fit on the same page after vacuuming. Note that even though
  * that holds for removing items from a posting list, you must also be
- * careful to not cause expansion e.g when merging uncompressed items on the
+ * careful to not cause expansion e.g. when merging uncompressed items on the
  * page into the compressed lists, when vacuuming.
  */
 
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index f0c2394e60079bc132d09ce6aaa9115103c3221b..c30a5b3cd1d1d11c9ae1f42e62154c09fc3f242e 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -7289,7 +7289,7 @@ ExtractReplicaIdentity(Relation relation, HeapTuple tp, bool key_changed, bool *
 		{
 			/*
 			 * The OID column can appear in an index definition, but that's
-			 * OK, becuse we always copy the OID if present (see below). Other
+			 * OK, because we always copy the OID if present (see below). Other
 			 * system columns may not.
 			 */
 			if (attno == ObjectIdAttributeNumber)
diff --git a/src/backend/access/nbtree/README b/src/backend/access/nbtree/README
index 5c0bc7948480c911009b0aec73a776f7a6bfc2aa..7055c242d20a9ff1925d647c625cd0e4d7a83d4f 100644
--- a/src/backend/access/nbtree/README
+++ b/src/backend/access/nbtree/README
@@ -470,7 +470,7 @@ not be seen under normal circumstances; only if insertion to the parent
 has failed for some reason.
 
 We flag the left page, even though it's the right page that's missing the
-downlink, beacuse it's more convenient to know already when following the
+downlink, because it's more convenient to know already when following the
 right-link from the left page to the right page that it will need to have
 its downlink inserted to the parent.
 
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index a8f78d637624e5015156109c20ed761bb4ac4073..f6009e07473a32f081c4c07632ecb887b4768151 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -2005,7 +2005,7 @@ CommitTransaction(void)
 	if (!is_parallel_worker)
 	{
 		/*
-		 * We need to mark our XIDs as commited in pg_clog.  This is where we
+		 * We need to mark our XIDs as committed in pg_clog.  This is where we
 		 * durably commit.
 		 */
 		latestXid = RecordTransactionCommit();
@@ -2764,7 +2764,7 @@ CommitTransactionCommand(void)
 			/*
 			 * Here we are in the middle of a transaction block but one of the
 			 * commands caused an abort so we do nothing but remain in the
-			 * abort state.  Eventually we will get a ROLLBACK comand.
+			 * abort state.  Eventually we will get a ROLLBACK command.
 			 */
 		case TBLOCK_ABORT:
 		case TBLOCK_SUBABORT:
diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c
index c878f629854120f8678356a98977ffe5ebee675e..ea25cf050cf75d5816279b18760e0c823b710776 100644
--- a/src/backend/replication/logical/snapbuild.c
+++ b/src/backend/replication/logical/snapbuild.c
@@ -832,7 +832,7 @@ SnapBuildAddCommittedTxn(SnapBuild *builder, TransactionId xid)
 
 /*
  * Remove knowledge about transactions we treat as committed that are smaller
- * than ->xmin. Those won't ever get checked via the ->commited array but via
+ * than ->xmin. Those won't ever get checked via the ->committed array but via
  * the clog machinery, so we don't need to waste memory on them.
  */
 static void
diff --git a/src/backend/tsearch/dict_synonym.c b/src/backend/tsearch/dict_synonym.c
index 26725a86b2840adbfe74212ca70e66ca122f6ccf..ee7e6cdbbb72c21f84286d987776d96dbf24dda6 100644
--- a/src/backend/tsearch/dict_synonym.c
+++ b/src/backend/tsearch/dict_synonym.c
@@ -37,7 +37,7 @@ typedef struct
  * Returns a pointer to the first character of the word, and a pointer
  * to the next byte after the last character in the word (in *end).
  * Character '*' at the end of word will not be threated as word
- * charater if flags is not null.
+ * character if flags is not null.
  */
 static char *
 findwrd(char *in, char **end, uint16 *flags)
diff --git a/src/backend/utils/adt/jsonfuncs.c b/src/backend/utils/adt/jsonfuncs.c
index 3dfdbf9d56fed69aee6f851d984b83df7b39df12..9987c73784cf12f5d1f6355bbac87e4e2ede8624 100644
--- a/src/backend/utils/adt/jsonfuncs.c
+++ b/src/backend/utils/adt/jsonfuncs.c
@@ -3577,7 +3577,7 @@ IteratorConcat(JsonbIterator **it1, JsonbIterator **it2,
 		int			level = 1;
 
 		/*
-		 * Append the all tokens from v1 to res, exept last WJB_END_OBJECT
+		 * Append the all tokens from v1 to res, except last WJB_END_OBJECT
 		 * (because res will not be finished yet).
 		 */
 		(void) pushJsonbValue(state, r1, NULL);
diff --git a/src/test/regress/expected/event_trigger.out b/src/test/regress/expected/event_trigger.out
index 24335df88c4c9b79a34e5496425a6f92787aa0ee..e70c315383a7a614d5dadba97e397d5f0b0de6f5 100644
--- a/src/test/regress/expected/event_trigger.out
+++ b/src/test/regress/expected/event_trigger.out
@@ -38,7 +38,7 @@ create event trigger regress_event_trigger2 on ddl_command_start
    when tag in ('sandwhich')
    execute procedure test_event_trigger();
 ERROR:  filter value "sandwhich" not recognized for filter variable "tag"
--- should fail, create skunkcabbage is not a valid comand tag
+-- should fail, create skunkcabbage is not a valid command tag
 create event trigger regress_event_trigger2 on ddl_command_start
    when tag in ('create table', 'create skunkcabbage')
    execute procedure test_event_trigger();
diff --git a/src/test/regress/sql/event_trigger.sql b/src/test/regress/sql/event_trigger.sql
index 9f9646c4dc862273d58864d3f22d594644f8f515..ec220fc7ecdbddbb4ce9f16d097f1ef875006ebe 100644
--- a/src/test/regress/sql/event_trigger.sql
+++ b/src/test/regress/sql/event_trigger.sql
@@ -40,7 +40,7 @@ create event trigger regress_event_trigger2 on ddl_command_start
    when tag in ('sandwhich')
    execute procedure test_event_trigger();
 
--- should fail, create skunkcabbage is not a valid comand tag
+-- should fail, create skunkcabbage is not a valid command tag
 create event trigger regress_event_trigger2 on ddl_command_start
    when tag in ('create table', 'create skunkcabbage')
    execute procedure test_event_trigger();