diff --git a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php
index 43de2c35c9a5edcc282d461e79b210f961f56d7f..0913e8cccd2184818ec7f55b8f3f577d70a3a255 100644
--- a/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php
+++ b/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php
@@ -84,13 +84,11 @@ private function checkNoMarkupFilters(FilterFormatInterface $text_format, Fundam
       $text_format,
       FilterInterface::TYPE_MARKUP_LANGUAGE
     );
-    if (!empty($markup_filters)) {
-      foreach ($markup_filters as $markup_filter) {
-        $this->context->buildViolation($constraint->noMarkupFiltersMessage)
-          ->setParameter('%filter_label', $markup_filter->getLabel())
-          ->setParameter('%filter_plugin_id', $markup_filter->getPluginId())
-          ->addViolation();
-      }
+    foreach ($markup_filters as $markup_filter) {
+      $this->context->buildViolation($constraint->noMarkupFiltersMessage)
+        ->setParameter('%filter_label', $markup_filter->getLabel())
+        ->setParameter('%filter_plugin_id', $markup_filter->getPluginId())
+        ->addViolation();
     }
   }
 
@@ -194,25 +192,21 @@ private function checkHtmlRestrictionsMatch(EditorInterface $text_editor, Fundam
    *   conditions to be met. Must return TRUE when it meets the conditions,
    *   FALSE otherwise.
    *
-   * @return \Drupal\filter\Plugin\FilterInterface[]
-   *   The matched filter plugins.
+   * @return iterable|\Drupal\filter\Plugin\FilterInterface[]
+   *   An iterable of matched filter plugins.
    */
-  private static function getFiltersInFormatOfType(FilterFormatInterface $text_format, int $filter_type, callable $extra_requirements = NULL): array {
+  private static function getFiltersInFormatOfType(FilterFormatInterface $text_format, int $filter_type, callable $extra_requirements = NULL): iterable {
     assert(in_array($filter_type, [
       FilterInterface::TYPE_MARKUP_LANGUAGE,
       FilterInterface::TYPE_HTML_RESTRICTOR,
       FilterInterface::TYPE_TRANSFORM_IRREVERSIBLE,
       FilterInterface::TYPE_TRANSFORM_IRREVERSIBLE,
     ]));
-    return array_filter($text_format->filters()->getAll(), function (FilterInterface $filter) use ($filter_type, $extra_requirements) {
-      if (!$filter->status) {
-        return FALSE;
+    foreach ($text_format->filters() as $id => $filter) {
+      if ($filter->status && $filter->getType() === $filter_type && ($extra_requirements === NULL || $extra_requirements($filter))) {
+        yield $id => $filter;
       }
-      if ($filter->getType() === $filter_type && ($extra_requirements === NULL || $extra_requirements($filter))) {
-        return TRUE;
-      }
-      return FALSE;
-    });
+    }
   }
 
   /**
diff --git a/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php b/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php
index d03e2c98f9688bc84642f8ddbf1046273617e41e..addcc53a3d235fafe9b286c8902f005d10d9a52a 100644
--- a/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php
+++ b/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php
@@ -517,8 +517,8 @@ public function provider() {
       'expected_superset' => '<br> <p>',
       'expected_fundamental_compatibility_violations' => [
         '' => [
-          0 => 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert URLs into links</em>" (<em class="placeholder">filter_url</em>) filter implies this text format is not HTML anymore.',
-          1 => 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert line breaks into HTML (i.e. &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;)</em>" (<em class="placeholder">filter_autop</em>) filter implies this text format is not HTML anymore.',
+          0 => 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert line breaks into HTML (i.e. &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;)</em>" (<em class="placeholder">filter_autop</em>) filter implies this text format is not HTML anymore.',
+          1 => 'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert URLs into links</em>" (<em class="placeholder">filter_url</em>) filter implies this text format is not HTML anymore.',
         ],
       ],
       'expected_messages' => [
diff --git a/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php b/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php
index 151cfbd9d8c5800e4c9bf01b3339178f27119e3f..2cb9442e70d3c3aba38885c5f22bd4ce7626d871 100644
--- a/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php
+++ b/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php
@@ -416,7 +416,7 @@ public function providerPair(): array {
           'id' => 'filter_url',
           'provider' => 'filter',
           'status' => TRUE,
-          'weight' => 0,
+          'weight' => -10,
           'settings' => [
             'filter_url_length' => 72,
           ],
@@ -429,6 +429,43 @@ public function providerPair(): array {
         ],
       ],
     ];
+    $data['INVALID: non-HTML format: filter_autop + filter_url (different order)'] = [
+      'settings' => [
+        'toolbar' => [
+          'items' => [
+            'bold',
+          ],
+        ],
+        'plugins' => [],
+      ],
+      'image_upload' => [
+        'status' => FALSE,
+      ],
+      'filters' => [
+        'filter_autop' => [
+          'id' => 'filter_autop',
+          'provider' => 'filter',
+          'status' => TRUE,
+          'weight' => 0,
+          'settings' => [],
+        ],
+        'filter_url' => [
+          'id' => 'filter_url',
+          'provider' => 'filter',
+          'status' => TRUE,
+          'weight' => 10,
+          'settings' => [
+            'filter_url_length' => 72,
+          ],
+        ],
+      ],
+      'violations' => [
+        '' => [
+          'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert line breaks into HTML (i.e. &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;)</em>" (<em class="placeholder">filter_autop</em>) filter implies this text format is not HTML anymore.',
+          'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert URLs into links</em>" (<em class="placeholder">filter_url</em>) filter implies this text format is not HTML anymore.',
+        ],
+      ],
+    ];
     $data['INVALID: forbidden tags'] = [
       'settings' => [
         'toolbar' => [
@@ -456,7 +493,7 @@ public function providerPair(): array {
         '' => 'CKEditor 5 needs at least the &lt;p&gt; and &lt;br&gt; tags to be allowed to be able to function. They are forbidden by the "<em class="placeholder">Tag and attribute restricting filter</em>" (<em class="placeholder">filter_test_restrict_tags_and_attributes</em>) filter.',
       ],
     ];
-    $restricted_html_format_filters = Yaml::parseFile('profiles/standard/config/install/filter.format.restricted_html.yml')['filters'];
+    $restricted_html_format_filters = Yaml::parseFile(__DIR__ . '/../../../../../profiles/standard/config/install/filter.format.restricted_html.yml')['filters'];
     $data['INVALID: the default restricted_html text format'] = [
       'settings' => [
         'toolbar' => [
@@ -470,8 +507,8 @@ public function providerPair(): array {
       'filters' => $restricted_html_format_filters,
       'violations' => [
         '' => [
-          'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert URLs into links</em>" (<em class="placeholder">filter_url</em>) filter implies this text format is not HTML anymore.',
           'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert line breaks into HTML (i.e. &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;)</em>" (<em class="placeholder">filter_autop</em>) filter implies this text format is not HTML anymore.',
+          'CKEditor 5 only works with HTML-based text formats. The "<em class="placeholder">Convert URLs into links</em>" (<em class="placeholder">filter_url</em>) filter implies this text format is not HTML anymore.',
         ],
       ],
     ];