diff --git a/core/lib/Drupal/Component/Gettext/PoStreamReader.php b/core/lib/Drupal/Component/Gettext/PoStreamReader.php
index bbdd8e8ae6a24f3e62f85999ad703a4066585062..9b444260668435b8fd89968ae6c3c28ca0a37a24 100644
--- a/core/lib/Drupal/Component/Gettext/PoStreamReader.php
+++ b/core/lib/Drupal/Component/Gettext/PoStreamReader.php
@@ -438,7 +438,7 @@ private function readLine() {
           return FALSE;
         }
 
-        // Remove 'msgstr' and trim away away whitespaces.
+        // Remove 'msgstr' and trim away whitespaces.
         $line = trim(substr($line, 6));
 
         // Only the msgstr string is left, parse it.
diff --git a/core/lib/Drupal/Core/Database/Query/SelectInterface.php b/core/lib/Drupal/Core/Database/Query/SelectInterface.php
index 14edb16c7817eb492d61f88a72a87cbb1bd48abc..449d0b64d3c2862e2091012253463a6ef18ff17d 100644
--- a/core/lib/Drupal/Core/Database/Query/SelectInterface.php
+++ b/core/lib/Drupal/Core/Database/Query/SelectInterface.php
@@ -332,7 +332,7 @@ public function leftJoin($table, $alias = NULL, $condition = NULL, $arguments =
    * fields on which to join.
    *
    * @param $type
-   *   The type of join. Typically one one of INNER, LEFT OUTER, and RIGHT OUTER.
+   *   The type of join. Typically one of INNER, LEFT OUTER, and RIGHT OUTER.
    * @param $table
    *   The table against which to join. May be a string or another SelectQuery
    *   object. If a query object is passed, it will be used as a subselect.
diff --git a/core/lib/Drupal/Core/Database/database.api.php b/core/lib/Drupal/Core/Database/database.api.php
index 890f36bd9a5cc32110a44a8cfe6bca1eb2159937..aed2448bdf2e4978d77d1531997619fb13466104 100644
--- a/core/lib/Drupal/Core/Database/database.api.php
+++ b/core/lib/Drupal/Core/Database/database.api.php
@@ -162,7 +162,7 @@
  * remains in scope; when $transaction is destroyed, the transaction will be
  * committed. If your transaction is nested inside of another then Drupal will
  * track each transaction and only commit the outer-most transaction when the
- * last transaction object goes out out of scope (when all relevant queries have
+ * last transaction object goes out of scope (when all relevant queries have
  * completed successfully).
  *
  * Example:
diff --git a/core/lib/Drupal/Core/Entity/EntityStorageBase.php b/core/lib/Drupal/Core/Entity/EntityStorageBase.php
index 6f970268090c1423ae5271f334b6bd7ae424bc8f..ce9e78c53a3e4b4d0a4335ba381d09d135ab2c9e 100644
--- a/core/lib/Drupal/Core/Entity/EntityStorageBase.php
+++ b/core/lib/Drupal/Core/Entity/EntityStorageBase.php
@@ -83,7 +83,7 @@ abstract class EntityStorageBase extends EntityHandlerBase implements EntityStor
   protected $memoryCache;
 
   /**
-   * The memory cache cache tag.
+   * The memory cache tag.
    *
    * @var string
    */
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php
index d337350983ef493bb3b180991c155ec52fc0e1f2..8f95e07b538e21f124d852959f95008bfbc41bb5 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php
@@ -80,7 +80,7 @@ class EntityReferenceEntityFormatter extends EntityReferenceFormatterBase {
    * @param string $view_mode
    *   The view mode.
    * @param array $third_party_settings
-   *   Any third party settings settings.
+   *   Any third party settings.
    * @param \Drupal\Core\Logger\LoggerChannelFactoryInterface $logger_factory
    *   The logger factory.
    * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/LanguageFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/LanguageFormatter.php
index 6f3c7cac44f195e2383473535c9d3a739199c0b0..6acabfa696029f264f1e941fa04947b6c160de99 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/LanguageFormatter.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/LanguageFormatter.php
@@ -46,7 +46,7 @@ class LanguageFormatter extends StringFormatter {
    * @param string $view_mode
    *   The view mode.
    * @param array $third_party_settings
-   *   Any third party settings settings.
+   *   Any third party settings.
    * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
    *   The entity type manager.
    * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/StringFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/StringFormatter.php
index 96f18958405b812a3fad9b6e5887b34ac57b1d37..c46a97b22d3344520c6f55db304524583bcf4699 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/StringFormatter.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/StringFormatter.php
@@ -51,7 +51,7 @@ class StringFormatter extends FormatterBase {
    * @param string $view_mode
    *   The view mode.
    * @param array $third_party_settings
-   *   Any third party settings settings.
+   *   Any third party settings.
    * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
    *   The entity type manager.
    */
diff --git a/core/lib/Drupal/Core/Queue/QueueInterface.php b/core/lib/Drupal/Core/Queue/QueueInterface.php
index 83f3ef709841992050a1ec3d8859991f073316b4..449ad6a0dd05b9cbe4f15274f72435732ad97b94 100644
--- a/core/lib/Drupal/Core/Queue/QueueInterface.php
+++ b/core/lib/Drupal/Core/Queue/QueueInterface.php
@@ -62,7 +62,7 @@ public function numberOfItems();
    *   problem.
    *
    *   If returned, the object will have at least the following properties:
-   *   - data: the same as what what passed into createItem().
+   *   - data: the same as what passed into createItem().
    *   - item_id: the unique ID returned from createItem().
    *   - created: timestamp when the item was put into the queue.
    */
diff --git a/core/lib/Drupal/Core/Render/theme.api.php b/core/lib/Drupal/Core/Render/theme.api.php
index fcf80e2923b72c05993682683125e2abb07c1eab..128416b4ec4f2df1f2729383ce11b50be32b7c65 100644
--- a/core/lib/Drupal/Core/Render/theme.api.php
+++ b/core/lib/Drupal/Core/Render/theme.api.php
@@ -1132,7 +1132,7 @@ function hook_page_bottom(array &$page_bottom) {
  *   - 'base_theme': A base theme is being checked for theme implementations.
  *   - 'theme': The actual theme in use is being checked.
  * @param $theme
- *   The actual name of theme, module, etc. that is being being processed.
+ *   The actual name of theme, module, etc. that is being processed.
  * @param $path
  *   The directory path of the theme or module, so that it doesn't need to be
  *   looked up.
diff --git a/core/lib/Drupal/Core/Routing/RouteProvider.php b/core/lib/Drupal/Core/Routing/RouteProvider.php
index beb302f72a302b02c692b7e4336017ef55b7cb71..7a3ba4168434963eedbcb980ce7384c42bcf9404 100644
--- a/core/lib/Drupal/Core/Routing/RouteProvider.php
+++ b/core/lib/Drupal/Core/Routing/RouteProvider.php
@@ -310,7 +310,7 @@ protected function getCandidateOutlines(array $parts) {
           $current .= $parts[$length - $j];
         }
         else {
-          // Bit zero means means wildcard.
+          // Bit zero means wildcard.
           $current .= '%';
         }
         // Unless we are at offset 0, add a slash.
diff --git a/core/lib/Drupal/Core/Url.php b/core/lib/Drupal/Core/Url.php
index 47ab4c4fcd904504493c1f14483ad7f1b395ad9b..4282d2b341d1c6c1764bd0f016e2282bc16e9621 100644
--- a/core/lib/Drupal/Core/Url.php
+++ b/core/lib/Drupal/Core/Url.php
@@ -244,7 +244,7 @@ public static function fromUserInput($user_input, $options = []) {
    *   you may use entity:{entity_type}/{entity_id} URIs. The internal: scheme
    *   should be avoided except when processing actual user input that may or
    *   may not correspond to a Drupal route. Normally use Url::fromRoute() for
-   *   code linking to any any Drupal page.
+   *   code linking to any Drupal page.
    * @param array $options
    *   (optional) An associative array of additional URL options, with the
    *   following elements:
diff --git a/core/modules/comment/src/CommentStorage.php b/core/modules/comment/src/CommentStorage.php
index 1b2c1b843ac9a01c983a46694ecd21cb12987205..6bf70252189c5dc7f1f7e2eaa77e894de16fd86f 100644
--- a/core/modules/comment/src/CommentStorage.php
+++ b/core/modules/comment/src/CommentStorage.php
@@ -319,9 +319,8 @@ public function loadThread(EntityInterface $entity, $field_name, $mode, $comment
       $query->orderBy('c.cid', 'ASC');
     }
     else {
-      // See comment above. Analysis reveals that this doesn't cost too
-      // much. It scales much much better than having the whole comment
-      // structure.
+      // See comment above. Analysis reveals that this doesn't cost too much. It
+      // scales much better than having the whole comment structure.
       $query->addExpression('SUBSTRING([c].[thread], 1, (LENGTH([c].[thread]) - 1))', 'torder');
       $query->orderBy('torder', 'ASC');
     }
diff --git a/core/modules/comment/tests/src/Functional/CommentTestBase.php b/core/modules/comment/tests/src/Functional/CommentTestBase.php
index 138021e87666b56dc159316e9e54a0eeb7266236..6f3a74d90c646b554c32994bbc81d1da7ce20826 100644
--- a/core/modules/comment/tests/src/Functional/CommentTestBase.php
+++ b/core/modules/comment/tests/src/Functional/CommentTestBase.php
@@ -391,7 +391,7 @@ public function getUnapprovedComment($subject) {
   }
 
   /**
-   * Creates a comment comment type (bundle).
+   * Creates a comment type (bundle).
    *
    * @param string $label
    *   The comment type label.
diff --git a/core/modules/content_moderation/src/Form/ContentModerationConfigureForm.php b/core/modules/content_moderation/src/Form/ContentModerationConfigureForm.php
index 301932f46c39abb70ce6c1f9118342ea7ebf22cd..c2c85892ade9e0c99a44ae42ee5cc472aee24428 100644
--- a/core/modules/content_moderation/src/Form/ContentModerationConfigureForm.php
+++ b/core/modules/content_moderation/src/Form/ContentModerationConfigureForm.php
@@ -35,7 +35,7 @@ class ContentModerationConfigureForm extends WorkflowTypeConfigureFormBase imple
   protected $moderationInfo;
 
   /**
-   * The entity type type bundle info service.
+   * The entity type bundle info service.
    *
    * @var \Drupal\Core\Entity\EntityTypeBundleInfoInterface
    */
diff --git a/core/modules/content_translation/tests/src/Functional/ContentTranslationSyncImageTest.php b/core/modules/content_translation/tests/src/Functional/ContentTranslationSyncImageTest.php
index 4ff54ff0430d0d1895865fb7a3e8cd0537f29b5a..54da60b9e9de854c1042df2d99087711abf73d5f 100644
--- a/core/modules/content_translation/tests/src/Functional/ContentTranslationSyncImageTest.php
+++ b/core/modules/content_translation/tests/src/Functional/ContentTranslationSyncImageTest.php
@@ -97,7 +97,7 @@ protected function getEditorPermissions() {
   }
 
   /**
-   * Tests image field field synchronization.
+   * Tests image field synchronization.
    */
   public function testImageFieldSync() {
     // Check that the alt and title fields are enabled for the image field.
diff --git a/core/modules/field/tests/src/Functional/Views/FieldUITest.php b/core/modules/field/tests/src/Functional/Views/FieldUITest.php
index 07ab03d177a6b80622e18e6c5776236ee08e0a50..cf4cb50822d19dc7e069510b76691fc3ee731c82 100644
--- a/core/modules/field/tests/src/Functional/Views/FieldUITest.php
+++ b/core/modules/field/tests/src/Functional/Views/FieldUITest.php
@@ -7,7 +7,7 @@
 use Drupal\views\Views;
 
 /**
- * Tests the UI of the field field handler.
+ * Tests the UI of the field handler.
  *
  * @group field
  * @see \Drupal\field\Plugin\views\field\Field
diff --git a/core/modules/field/tests/src/Kernel/ShapeItemTest.php b/core/modules/field/tests/src/Kernel/ShapeItemTest.php
index cab3873bddf259bf8eac4969c5045f7f31328398..8b3259820684ed1d3bdde56085c8e60be2f05868 100644
--- a/core/modules/field/tests/src/Kernel/ShapeItemTest.php
+++ b/core/modules/field/tests/src/Kernel/ShapeItemTest.php
@@ -46,7 +46,7 @@ protected function setUp(): void {
   }
 
   /**
-   * Tests using entity fields of the field field type.
+   * Tests using entity fields of the shape field type.
    */
   public function testShapeItem() {
     // Verify entity creation.
diff --git a/core/modules/field/tests/src/Kernel/TestItemTest.php b/core/modules/field/tests/src/Kernel/TestItemTest.php
index 5ca31551a2aef14ac5dfb79ea6ac31860ee525d7..7cbe6ea82cab1e57c2c14befe5980d50ee9bba6d 100644
--- a/core/modules/field/tests/src/Kernel/TestItemTest.php
+++ b/core/modules/field/tests/src/Kernel/TestItemTest.php
@@ -47,7 +47,7 @@ protected function setUp(): void {
   }
 
   /**
-   * Tests using entity fields of the field field type.
+   * Tests using entity fields of the test field type.
    */
   public function testTestItem() {
     // Verify entity creation.
diff --git a/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php b/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php
index 8892797888716b8dfc0a385e2989db4a609ee537..bf6ceb0612558d68e23ee9d1528b5c1be70dcd52 100644
--- a/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php
+++ b/core/modules/file/src/Plugin/Field/FieldWidget/FileWidget.php
@@ -503,7 +503,7 @@ public static function processMultiple($element, FormStateInterface $form_state,
   }
 
   /**
-   * Retrieves the file description from a field field element.
+   * Retrieves the file description from a field element.
    *
    * This helper static method is used by processMultiple() method.
    *
diff --git a/core/modules/filter/src/Plugin/migrate/process/FilterID.php b/core/modules/filter/src/Plugin/migrate/process/FilterID.php
index d61661df6caae4f9f352e519ca5e104b25b3bd81..14f88408a1c462abc67723e9c38cdea92caca8b6 100644
--- a/core/modules/filter/src/Plugin/migrate/process/FilterID.php
+++ b/core/modules/filter/src/Plugin/migrate/process/FilterID.php
@@ -15,10 +15,9 @@
 
 // cspell:ignore abbrfilter adsense autofloat biblio cincopa codefilter
 // cspell:ignore commonmark deepzoom emogrifier emptyparagraphkiller forena
-// cspell:ignore gotwo htmlpurifier htmltidy intlinks intlinks lazyloader
-// cspell:ignore linktitle multicolumn multilink mytube openlayers opengraph
-// cspell:ignore sanitizable shortcode shortcode spamspan typogrify wordfilter
-// cspell:ignore xbbcode
+// cspell:ignore gotwo htmlpurifier htmltidy intlinks lazyloader linktitle
+// cspell:ignore multicolumn multilink mytube openlayers opengraph sanitizable
+// cspell:ignore shortcode spamspan typogrify wordfilter xbbcode
 
 /**
  * @MigrateProcessPlugin(
diff --git a/core/modules/filter/src/Render/FilteredMarkup.php b/core/modules/filter/src/Render/FilteredMarkup.php
index bf249835046014e447b4a7e242e1382b09cf73c2..ab8f7168f004871c814681bd744fe2748486af15 100644
--- a/core/modules/filter/src/Render/FilteredMarkup.php
+++ b/core/modules/filter/src/Render/FilteredMarkup.php
@@ -14,7 +14,7 @@
  *
  * @internal
  *   This object is marked as internal because it should only be used in the
- *   Filter module on strings that have already been been filtered and sanitized
+ *   Filter module on strings that have already been filtered and sanitized
  *   in \Drupal\filter\Plugin\FilterInterface.
  *
  * @see \Drupal\Core\Render\Markup
diff --git a/core/modules/image/src/Plugin/Field/FieldFormatter/ImageFormatter.php b/core/modules/image/src/Plugin/Field/FieldFormatter/ImageFormatter.php
index 515dd92553c6951a40cd581d6f11a72ee306077e..aed0e7169d4987d0d6b4b57e9eaa8ec48e7deebf 100644
--- a/core/modules/image/src/Plugin/Field/FieldFormatter/ImageFormatter.php
+++ b/core/modules/image/src/Plugin/Field/FieldFormatter/ImageFormatter.php
@@ -67,7 +67,7 @@ class ImageFormatter extends ImageFormatterBase {
    * @param string $view_mode
    *   The view mode.
    * @param array $third_party_settings
-   *   Any third party settings settings.
+   *   Any third party settings.
    * @param \Drupal\Core\Session\AccountInterface $current_user
    *   The current user.
    * @param \Drupal\Core\Entity\EntityStorageInterface $image_style_storage
diff --git a/core/modules/image/tests/src/Functional/ImageFieldDefaultImagesTest.php b/core/modules/image/tests/src/Functional/ImageFieldDefaultImagesTest.php
index 3acf4fa263ee6a84a1a8a26af19d19f30735d6b8..a657d2cacba5f949f9150c2ab75e24d69d48cb3c 100644
--- a/core/modules/image/tests/src/Functional/ImageFieldDefaultImagesTest.php
+++ b/core/modules/image/tests/src/Functional/ImageFieldDefaultImagesTest.php
@@ -251,8 +251,7 @@ public function testDefaultImages() {
     $field->setSetting('default_image', $default_image_settings);
     $field->save();
 
-    // Confirm the new field field default is used on the article field
-    // admin form.
+    // Confirm the new field default is used on the article field admin form.
     $this->drupalGet("admin/structure/types/manage/article/fields/$field_id");
     $this->assertSession()->hiddenFieldValueEquals('settings[default_image][uuid][fids]', $default_images['field_private']->id());
   }
diff --git a/core/modules/jsonapi/src/JsonApiResource/Data.php b/core/modules/jsonapi/src/JsonApiResource/Data.php
index 0e4006206726ad9da4ac79643fcd00f860a6d0bd..113e3bf559d34ffb6601154e2aab109daea329fe 100644
--- a/core/modules/jsonapi/src/JsonApiResource/Data.php
+++ b/core/modules/jsonapi/src/JsonApiResource/Data.php
@@ -146,7 +146,7 @@ public function getCardinality() {
    * Returns a new Data object containing the entities of $this and $other.
    *
    * @param \Drupal\jsonapi\JsonApiResource\Data $a
-   *   A Data object object to be merged.
+   *   A Data object to be merged.
    * @param \Drupal\jsonapi\JsonApiResource\Data $b
    *   A Data object to be merged.
    *
diff --git a/core/modules/media/src/Plugin/Field/FieldFormatter/MediaThumbnailFormatter.php b/core/modules/media/src/Plugin/Field/FieldFormatter/MediaThumbnailFormatter.php
index 238545678ac72dee698a150a30f5f177e1b16f0b..6dcd7cc59edd05e3674b50358ecbf784d8f7e30c 100644
--- a/core/modules/media/src/Plugin/Field/FieldFormatter/MediaThumbnailFormatter.php
+++ b/core/modules/media/src/Plugin/Field/FieldFormatter/MediaThumbnailFormatter.php
@@ -50,7 +50,7 @@ class MediaThumbnailFormatter extends ImageFormatter {
    * @param string $view_mode
    *   The view mode.
    * @param array $third_party_settings
-   *   Any third party settings settings.
+   *   Any third party settings.
    * @param \Drupal\Core\Session\AccountInterface $current_user
    *   The current user.
    * @param \Drupal\image\ImageStyleStorageInterface $image_style_storage
diff --git a/core/modules/media/tests/src/FunctionalJavascript/CKEditorIntegrationTest.php b/core/modules/media/tests/src/FunctionalJavascript/CKEditorIntegrationTest.php
index 5785a13a680d4a2f6ea27272610300efa644a254..d4e23b3e7385fd04e39290a5485a262e26c9ef81 100644
--- a/core/modules/media/tests/src/FunctionalJavascript/CKEditorIntegrationTest.php
+++ b/core/modules/media/tests/src/FunctionalJavascript/CKEditorIntegrationTest.php
@@ -713,9 +713,9 @@ public function testAlt() {
     $assert_session->fieldValueEquals('attributes[alt]', $cobra_commander_bio);
 
     // Test that setting alt value to two double quotes will signal to the
-    // MediaEmbed filter to unset the attribute on the media image field.
-    // We intentionally add a space space after the two double quotes to test
-    // the string is trimmed to two quotes.
+    // MediaEmbed filter to unset the attribute on the media image field. We
+    // intentionally add a space after the two double quotes to test the string
+    // is trimmed to two quotes.
     $page->fillField('attributes[alt]', '"" ');
     $this->submitDialog();
     $this->getSession()->switchToIFrame('ckeditor');
diff --git a/core/modules/media_library/media_library.module b/core/modules/media_library/media_library.module
index 7e6539a51543aefa5df085118f492826b999943b..24a534ce809e50924de352d9c24c49820f688dc3 100644
--- a/core/modules/media_library/media_library.module
+++ b/core/modules/media_library/media_library.module
@@ -479,8 +479,8 @@ function _media_library_configure_view_display(MediaTypeInterface $type) {
  * Implements hook_form_FORM_ID_alter().
  */
 function media_library_form_filter_format_edit_form_alter(array &$form, FormStateInterface $form_state, $form_id) {
-  // Add an additional validate callback so so we can ensure the media_embed
-  // filter is enabled when the DrupalMediaLibrary button is enabled.
+  // Add an additional validate callback so we can ensure the media_embed filter
+  // is enabled when the DrupalMediaLibrary button is enabled.
   $form['#validate'][] = 'media_library_filter_format_edit_form_validate';
 }
 
@@ -488,8 +488,8 @@ function media_library_form_filter_format_edit_form_alter(array &$form, FormStat
  * Implements hook_form_FORM_ID_alter().
  */
 function media_library_form_filter_format_add_form_alter(array &$form, FormStateInterface $form_state, $form_id) {
-  // Add an additional validate callback so so we can ensure the media_embed
-  // filter is enabled when the DrupalMediaLibrary button is enabled.
+  // Add an additional validate callback so we can ensure the media_embed filter
+  // is enabled when the DrupalMediaLibrary button is enabled.
   $form['#validate'][] = 'media_library_filter_format_edit_form_validate';
 }
 
diff --git a/core/modules/menu_ui/tests/src/Functional/MenuUiTest.php b/core/modules/menu_ui/tests/src/Functional/MenuUiTest.php
index d565e532036783f43e131f4e799a6cf675f6e8d6..497f7f9a8d2ffe5b9c1a1126f9b100ffd00446c3 100644
--- a/core/modules/menu_ui/tests/src/Functional/MenuUiTest.php
+++ b/core/modules/menu_ui/tests/src/Functional/MenuUiTest.php
@@ -801,7 +801,7 @@ public function verifyMenuLink(MenuLinkContent $item, $item_node, MenuLinkConten
       $title = $parent->getTitle();
       $this->assertSession()->linkExists($title, 0, 'Parent menu link was displayed');
 
-      // Verify menu link link.
+      // Verify menu link.
       $this->clickLink($title);
       $title = $parent_node->label();
       $this->assertSession()->titleEquals("$title | Drupal");
@@ -811,7 +811,7 @@ public function verifyMenuLink(MenuLinkContent $item, $item_node, MenuLinkConten
     $title = $item->getTitle();
     $this->assertSession()->linkExists($title, 0, 'Menu link was displayed');
 
-    // Verify menu link link.
+    // Verify menu link.
     $this->clickLink($title);
     $title = $item_node->label();
     $this->assertSession()->titleEquals("$title | Drupal");
diff --git a/core/modules/node/tests/modules/node_access_test/node_access_test.module b/core/modules/node/tests/modules/node_access_test/node_access_test.module
index 36219a13394fc276cb12ce45e0dfcbb5e73adbfa..de51ddf57edc02908a4de357f48904e40efc70b6 100644
--- a/core/modules/node/tests/modules/node_access_test/node_access_test.module
+++ b/core/modules/node/tests/modules/node_access_test/node_access_test.module
@@ -99,7 +99,7 @@ function node_access_test_node_access_records(NodeInterface $node) {
       'priority' => 0,
     ];
     // For the author realm, the group ID is equivalent to a user ID, which
-    // means there are many many groups of just 1 user.
+    // means there are many groups of just 1 user.
     $grants[] = [
       'realm' => 'node_access_test_author',
       'gid' => $node->getOwnerId(),
diff --git a/core/modules/system/src/Controller/DbUpdateController.php b/core/modules/system/src/Controller/DbUpdateController.php
index 417fa6a5f560a3b9d9d8a46ce75f00b2ed9b6110..f7dc4a3555419f719849e9ce61f5bd0eac35b740 100644
--- a/core/modules/system/src/Controller/DbUpdateController.php
+++ b/core/modules/system/src/Controller/DbUpdateController.php
@@ -138,7 +138,7 @@ public static function create(ContainerInterface $container) {
    *   The current request object.
    *
    * @return \Symfony\Component\HttpFoundation\Response
-   *   A response object object.
+   *   A response object.
    */
   public function handle($op, Request $request) {
     require_once $this->root . '/core/includes/install.inc';
diff --git a/core/modules/system/tests/modules/entity_test/src/Plugin/Validation/Constraint/EntityTestEntityLevel.php b/core/modules/system/tests/modules/entity_test/src/Plugin/Validation/Constraint/EntityTestEntityLevel.php
index 247b8b670f549fdb1ac27f62559f8e70e45735ed..54b96f7b8d845096bc20895b2b63ec02758e9ced 100644
--- a/core/modules/system/tests/modules/entity_test/src/Plugin/Validation/Constraint/EntityTestEntityLevel.php
+++ b/core/modules/system/tests/modules/entity_test/src/Plugin/Validation/Constraint/EntityTestEntityLevel.php
@@ -5,7 +5,7 @@
 use Symfony\Component\Validator\Constraint;
 
 /**
- * Constraint on entity entity level.
+ * Constraint on entity level.
  *
  * @Constraint(
  *   id = "EntityTestEntityLevel",
diff --git a/core/modules/system/tests/modules/js_message_test/src/Controller/JSMessageTestController.php b/core/modules/system/tests/modules/js_message_test/src/Controller/JSMessageTestController.php
index b637833771aaa387cfecab627dea89785cac7580..c6cd8b4670f69a0e6f468676668cb7cedb76d9ae 100644
--- a/core/modules/system/tests/modules/js_message_test/src/Controller/JSMessageTestController.php
+++ b/core/modules/system/tests/modules/js_message_test/src/Controller/JSMessageTestController.php
@@ -21,7 +21,7 @@ public static function getTypes() {
    * Gets the test messages selectors.
    *
    * @return string[]
-   *   The test test messages selectors.
+   *   The test messages selectors.
    *
    * @see core/modules/system/tests/themes/test_messages/templates/status-messages.html.twig
    */
diff --git a/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php b/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php
index c9ddfb282402cff0043f78f6c3730dc4801f7a54..5375e2405097f45cec29eba85d16d05ab8143760 100644
--- a/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php
+++ b/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php
@@ -177,7 +177,7 @@ public function testPluginLocalTask() {
     $this->assertEquals('menu_test', $definitions['menu_test.local_task_test_tasks_settings_sub2']['provider']);
     $this->assertEquals('menu_test', $definitions['menu_test.local_task_test_tasks_settings_sub3']['provider']);
 
-    // Test that we we correctly apply the active class to tabs where one of the
+    // Test that we correctly apply the active class to tabs where one of the
     // request attributes is upcast to an entity object.
     $entity = \Drupal::entityTypeManager()->getStorage('entity_test')->create(['bundle' => 'test']);
     $entity->save();
diff --git a/core/modules/taxonomy/src/TermStorageInterface.php b/core/modules/taxonomy/src/TermStorageInterface.php
index 4271805ac574d4456fb6025ff99b72759145f51c..610ede6fbe6432958d5f626daf7ed5d72af0eb6f 100644
--- a/core/modules/taxonomy/src/TermStorageInterface.php
+++ b/core/modules/taxonomy/src/TermStorageInterface.php
@@ -29,7 +29,7 @@ public function deleteTermHierarchy($tids);
    *   Term entity that needs to be added to term hierarchy information.
    *
    * @todo remove this method Drupal 9.0.x. Now the parent references are
-   *   automatically updates when when a taxonomy term is added/updated.
+   *   automatically updates when a taxonomy term is added/updated.
    *   https://www.drupal.org/node/2785693
    */
   public function updateTermHierarchy(EntityInterface $term);
diff --git a/core/modules/views/src/Plugin/views/argument_default/ArgumentDefaultPluginBase.php b/core/modules/views/src/Plugin/views/argument_default/ArgumentDefaultPluginBase.php
index a3336458d8daf7ef5bdc81c0979dcc1b16336fd4..4f91e6a160afbf654368952dc58024e84301bb48 100644
--- a/core/modules/views/src/Plugin/views/argument_default/ArgumentDefaultPluginBase.php
+++ b/core/modules/views/src/Plugin/views/argument_default/ArgumentDefaultPluginBase.php
@@ -67,12 +67,12 @@ protected function defineOptions() {
   public function buildOptionsForm(&$form, FormStateInterface $form_state) {}
 
   /**
-   * Provide the default form form for validating options.
+   * Provide the default form for validating options.
    */
   public function validateOptionsForm(&$form, FormStateInterface $form_state) {}
 
   /**
-   * Provide the default form form for submitting options.
+   * Provide the default form for submitting options.
    */
   public function submitOptionsForm(&$form, FormStateInterface $form_state, &$options = []) {}
 
diff --git a/core/modules/views/src/Plugin/views/argument_validator/ArgumentValidatorPluginBase.php b/core/modules/views/src/Plugin/views/argument_validator/ArgumentValidatorPluginBase.php
index 6e797b49b1beb0114e0390123c2c5eb86d742121..c89479f9dc699d7b5f99998ca95ae395adf1420e 100644
--- a/core/modules/views/src/Plugin/views/argument_validator/ArgumentValidatorPluginBase.php
+++ b/core/modules/views/src/Plugin/views/argument_validator/ArgumentValidatorPluginBase.php
@@ -14,9 +14,9 @@
  * Views argument validator plugins validate arguments (contextual filters) on
  * views. They can ensure arguments are valid, and even do transformations on
  * the arguments. They can also provide replacement patterns for the view title.
- * For example, the 'content' validator verifies verifies that the argument
- * value corresponds to a node, loads that node, and provides the node title
- * as a replacement pattern for the view title.
+ * For example, the 'content' validator verifies that the argument value
+ * corresponds to a node, loads that node, and provides the node title as a
+ * replacement pattern for the view title.
  *
  * Argument validator plugins extend
  * \Drupal\views\Plugin\views\argument_validator\ArgumentValidatorPluginBase.
diff --git a/core/modules/views/src/Plugin/views/pager/PagerPluginBase.php b/core/modules/views/src/Plugin/views/pager/PagerPluginBase.php
index 5227a6ac430624db295a4079cd0825b278517fbe..d02f67034417598829cf41ee2f144092df29bac4 100644
--- a/core/modules/views/src/Plugin/views/pager/PagerPluginBase.php
+++ b/core/modules/views/src/Plugin/views/pager/PagerPluginBase.php
@@ -112,12 +112,12 @@ public function getPagerId() {
   }
 
   /**
-   * Provide the default form form for validating options.
+   * Provide the default form for validating options.
    */
   public function validateOptionsForm(&$form, FormStateInterface $form_state) {}
 
   /**
-   * Provide the default form form for submitting options.
+   * Provide the default form for submitting options.
    */
   public function submitOptionsForm(&$form, FormStateInterface $form_state) {}
 
diff --git a/core/modules/views/src/Plugin/views/query/SqliteDateSql.php b/core/modules/views/src/Plugin/views/query/SqliteDateSql.php
index 5ee488689c034c21d0b8cbc57760ee13832fe09b..db7fc4a6cc09fa061449a03eb8e9889c5f843bb8 100644
--- a/core/modules/views/src/Plugin/views/query/SqliteDateSql.php
+++ b/core/modules/views/src/Plugin/views/query/SqliteDateSql.php
@@ -49,7 +49,7 @@ class SqliteDateSql implements DateSqlInterface {
     'j' => '%d',
     'W' => '%W',
     'H' => '%H',
-    // No format for 12 hour hour with leading zeros.
+    // No format for 12 hour with leading zeros.
     'h' => '%H',
     'i' => '%M',
     's' => '%S',
diff --git a/core/modules/views/tests/src/Functional/Handler/FieldWebTest.php b/core/modules/views/tests/src/Functional/Handler/FieldWebTest.php
index 3baa6f3943f00101b2ba91e0d5627cf48a2e8f2d..1526897664f292d806102d03cfc75bd1899fca5b 100644
--- a/core/modules/views/tests/src/Functional/Handler/FieldWebTest.php
+++ b/core/modules/views/tests/src/Functional/Handler/FieldWebTest.php
@@ -473,7 +473,7 @@ public function testFieldClasses() {
 
     // Tests the element classes/element.
 
-    // Set some common element element types and see whether they appear with and without a custom class set.
+    // Set some common element types and see whether they appear with and without a custom class set.
     foreach (['h1', 'span', 'p', 'div'] as $element_type) {
       $id_field->options['element_type'] = $element_type;
 
diff --git a/core/modules/views/tests/src/FunctionalJavascript/Plugin/views/Handler/FieldTest.php b/core/modules/views/tests/src/FunctionalJavascript/Plugin/views/Handler/FieldTest.php
index 38b9687cdf503f33c7db1a9a6949c68811b186cd..d5744dbdc2a420f05a2c98804c9e61f4ec97c327 100644
--- a/core/modules/views/tests/src/FunctionalJavascript/Plugin/views/Handler/FieldTest.php
+++ b/core/modules/views/tests/src/FunctionalJavascript/Plugin/views/Handler/FieldTest.php
@@ -9,7 +9,7 @@
 use Drupal\views\Tests\ViewTestData;
 
 /**
- * Tests the field field handler UI.
+ * Tests the field handler UI.
  *
  * @group views
  */
diff --git a/core/modules/views_ui/js/views-admin.es6.js b/core/modules/views_ui/js/views-admin.es6.js
index 3af166d7c7a2b4df1f44fc789de62467d5630e6b..f91f29e8d9ba27152279fa832e4b4dc88fbfa2df 100644
--- a/core/modules/views_ui/js/views-admin.es6.js
+++ b/core/modules/views_ui/js/views-admin.es6.js
@@ -266,7 +266,7 @@
         $form = $context.find('form[id^="views-ui-add-handler-form"]');
       }
       if (once('views-ui-add-handler-form', $form).length) {
-        // If we we have an unprocessed views-ui-add-handler-form, let's
+        // If we have an unprocessed views-ui-add-handler-form, let's
         // instantiate.
         new Drupal.viewsUi.AddItemForm($form);
       }
diff --git a/core/modules/workspaces/workspaces.install b/core/modules/workspaces/workspaces.install
index 31bc8e88959c164324efc4cc9d4953a84d68da24..2c37233f92f82c8b508005a8d659f2694900e095 100644
--- a/core/modules/workspaces/workspaces.install
+++ b/core/modules/workspaces/workspaces.install
@@ -50,8 +50,8 @@ function workspaces_module_preinstall($module) {
  * Implements hook_install().
  */
 function workspaces_install() {
-  // Set the owner of these default workspaces to be first user which which has
-  // the 'administrator' role. This way we avoid hard coding user ID 1 for sites
+  // Set the owner of these default workspaces to be first user which has the
+  // 'administrator' role. This way we avoid hard coding user ID 1 for sites
   // that prefer to not give it any special meaning.
   $admin_roles = \Drupal::entityTypeManager()->getStorage('user_role')->getQuery()
     ->condition('is_admin', TRUE)
diff --git a/core/tests/Drupal/FunctionalTests/Image/ToolkitTestBase.php b/core/tests/Drupal/FunctionalTests/Image/ToolkitTestBase.php
index 85a7e2a45d45ed52c3d031f6f51c02d3c180bb22..9e9a233c8046ac9ece0481666082dfb7eb1ec961 100644
--- a/core/tests/Drupal/FunctionalTests/Image/ToolkitTestBase.php
+++ b/core/tests/Drupal/FunctionalTests/Image/ToolkitTestBase.php
@@ -83,7 +83,7 @@ protected function getImage() {
 
   /**
    * Assert that all of the specified image toolkit operations were called
-   * exactly once once, other values result in failure.
+   * exactly once, other values result in failure.
    *
    * @param $expected
    *   Array with string containing with the operation name, e.g. 'load',
diff --git a/core/tests/Drupal/FunctionalTests/Installer/InstallerExistingConfigNoSystemSiteTest.php b/core/tests/Drupal/FunctionalTests/Installer/InstallerExistingConfigNoSystemSiteTest.php
index 96499dc3364ecc1bd2fadab542cade0892339413..4796bf23f32b21640d554a8173ed64fadf3e115d 100644
--- a/core/tests/Drupal/FunctionalTests/Installer/InstallerExistingConfigNoSystemSiteTest.php
+++ b/core/tests/Drupal/FunctionalTests/Installer/InstallerExistingConfigNoSystemSiteTest.php
@@ -22,7 +22,7 @@ protected function prepareEnvironment() {
    * {@inheritdoc}
    */
   public function setUpSite() {
-    // There are are errors. Therefore, there is nothing to do here.
+    // There are errors. Therefore, there is nothing to do here.
   }
 
   /**
diff --git a/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationQueryTest.php b/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationQueryTest.php
index be24236edeebaf995a56f281bd0e25f1a8298704..fe9da09502595ee5400d9b3fa09c2d2df5ab76a1 100644
--- a/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationQueryTest.php
+++ b/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationQueryTest.php
@@ -49,8 +49,8 @@ protected function visitInstaller() {
    * {@inheritdoc}
    */
   protected function setUpLanguage() {
-    // The language was was preset by passing a query parameter in the URL, so
-    // no explicit language selection is necessary.
+    // The language was preset by passing a query parameter in the URL, so no
+    // explicit language selection is necessary.
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/BrowserHtmlDebugTrait.php b/core/tests/Drupal/Tests/BrowserHtmlDebugTrait.php
index e0b85ef5460fc0ef84592758a1cff51b48c36b26..71646b4dfc448b684a569ac068b7dcdf4597a6cf 100644
--- a/core/tests/Drupal/Tests/BrowserHtmlDebugTrait.php
+++ b/core/tests/Drupal/Tests/BrowserHtmlDebugTrait.php
@@ -41,7 +41,7 @@ trait BrowserHtmlDebugTrait {
   protected $htmlOutputCounter = 1;
 
   /**
-   * HTML output output enabled.
+   * HTML output enabled.
    *
    * @var bool
    */
diff --git a/core/tests/Drupal/Tests/Component/Utility/XssTest.php b/core/tests/Drupal/Tests/Component/Utility/XssTest.php
index 9ecffc195eca01025e214d50828d0e76699f506b..d8ddc227cae06a220412e84a3c5a5564cd7c6adc 100644
--- a/core/tests/Drupal/Tests/Component/Utility/XssTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/XssTest.php
@@ -86,7 +86,7 @@ public function testFilterXssNormalized($value, $expected, $message, array $allo
    *     - The value to filter.
    *     - The value to expect after filtering.
    *     - The assertion message.
-   *     - (optional) The allowed HTML HTML tags array that should be passed to
+   *     - (optional) The allowed HTML tags array that should be passed to
    *       \Drupal\Component\Utility\Xss::filter().
    */
   public function providerTestFilterXssNormalized() {
@@ -153,7 +153,7 @@ public function testFilterXssNotNormalized($value, $expected, $message, array $a
    *     - The value to filter.
    *     - The value to expect that's missing after filtering.
    *     - The assertion message.
-   *     - (optional) The allowed HTML HTML tags array that should be passed to
+   *     - (optional) The allowed HTML tags array that should be passed to
    *       \Drupal\Component\Utility\Xss::filter().
    */
   public function providerTestFilterXssNotNormalized() {
diff --git a/core/themes/claro/css/theme/media-library.css b/core/themes/claro/css/theme/media-library.css
index 8c746aba286b1cef60236cd903bccd4dbb13df07..af3d302112612fc05ef128833d91100f6e291786 100644
--- a/core/themes/claro/css/theme/media-library.css
+++ b/core/themes/claro/css/theme/media-library.css
@@ -255,7 +255,7 @@
   margin: 0.5rem 0 0;
 }
 
-/* Align remove buttons with with Save button and compensate for IE scrollbar and focus padding. */
+/* Align remove buttons with Save button and compensate for IE scrollbar and focus padding. */
 
 @media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
   .ui-dialog > .ui-dialog-content {
diff --git a/core/themes/claro/css/theme/media-library.pcss.css b/core/themes/claro/css/theme/media-library.pcss.css
index 47ec4bf15985588d235aefe341176b01d2f5f81f..75a5aef4722233a2c3540929392ca9bc5fe5a532 100644
--- a/core/themes/claro/css/theme/media-library.pcss.css
+++ b/core/themes/claro/css/theme/media-library.pcss.css
@@ -233,7 +233,7 @@
   margin: 8px 0 0;
 }
 
-/* Align remove buttons with with Save button and compensate for IE scrollbar and focus padding. */
+/* Align remove buttons with Save button and compensate for IE scrollbar and focus padding. */
 @media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
   .ui-dialog > .ui-dialog-content {
     padding-right: calc(var(--space-s) - calc(var(--focus-border-size) + var(--focus-border-offset-size) + 2px));