diff --git a/src/DataFilterBase.php b/src/DataFilterBase.php
index a1bdae2d5bcc4cc01150218e823881bc50fe2bf5..6b502ec93314f606fb8d6f5dcce4616f60849447 100644
--- a/src/DataFilterBase.php
+++ b/src/DataFilterBase.php
@@ -7,6 +7,8 @@ namespace Drupal\typed_data;
 use Drupal\Component\Plugin\PluginBase;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\Core\TypedData\DataDefinitionInterface;
+use Drupal\Core\TypedData\PrimitiveInterface;
+use Drupal\Core\TypedData\TypedDataInterface;
 use Drupal\Core\TypedData\TypedDataTrait;
 
 /**
diff --git a/src/DataFilterInterface.php b/src/DataFilterInterface.php
index 644a78a3f68dbbc286cfeb7ccec1dbf3f5a455ef..22e5d66f846c4f081d6fceb1052bb88707acc6a5 100644
--- a/src/DataFilterInterface.php
+++ b/src/DataFilterInterface.php
@@ -4,6 +4,7 @@ namespace Drupal\typed_data;
 
 use Drupal\Core\Render\BubbleableMetadata;
 use Drupal\Core\TypedData\DataDefinitionInterface;
+use Drupal\Core\TypedData\TypedDataInterface;
 
 /**
  * Interface for data filters.
diff --git a/src/Plugin/TypedDataFilter/StripTagsFilter.php b/src/Plugin/TypedDataFilter/StripTagsFilter.php
index 938f6c783e0c870fae37ca3e94ccda7d743e8fd8..26bbc30ac04f2d77095f066ac8d49c390e8a779d 100644
--- a/src/Plugin/TypedDataFilter/StripTagsFilter.php
+++ b/src/Plugin/TypedDataFilter/StripTagsFilter.php
@@ -9,6 +9,7 @@ use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\Core\TypedData\DataDefinition;
 use Drupal\Core\TypedData\DataDefinitionInterface;
 use Drupal\Core\TypedData\Type\StringInterface;
+use Drupal\text\TextProcessed;
 use Drupal\typed_data\Attribute\DataFilter;
 use Drupal\typed_data\DataFilterBase;
 
@@ -30,14 +31,15 @@ class StripTagsFilter extends DataFilterBase {
    * {@inheritdoc}
    */
   public function filter(DataDefinitionInterface $definition, $value, array $arguments, ?BubbleableMetadata $bubbleable_metadata = NULL) {
-    return strip_tags($value);
+    return strip_tags((string) $value);
   }
 
   /**
    * {@inheritdoc}
    */
   public function canFilter(DataDefinitionInterface $definition): bool {
-    return is_subclass_of($definition->getClass(), StringInterface::class);
+    return is_subclass_of($definition->getClass(), StringInterface::class)
+      || is_a($definition->getClass(), TextProcessed::class, TRUE);
   }
 
   /**
diff --git a/tests/src/Kernel/DataFilterTest.php b/tests/src/Kernel/DataFilterTest.php
index 2570c571c18d8b6eb730f7646a444a495d822f2a..7d12cb27c3417141e9c1ba7e4beeb535b04df008 100644
--- a/tests/src/Kernel/DataFilterTest.php
+++ b/tests/src/Kernel/DataFilterTest.php
@@ -8,10 +8,13 @@ use Drupal\Core\Datetime\Entity\DateFormat;
 use Drupal\Core\Entity\TypedData\EntityDataDefinition;
 use Drupal\Core\Render\BubbleableMetadata;
 use Drupal\Core\TypedData\DataDefinition;
+use Drupal\filter\FilterProcessResult;
+use Drupal\filter\Render\FilteredMarkup;
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\file\Entity\File;
 use Drupal\filter\Entity\FilterFormat;
 use Drupal\node\Entity\Node;
+use Drupal\text\TextProcessed;
 
 /**
  * Tests using typed data filters.
@@ -302,6 +305,35 @@ class DataFilterTest extends KernelTestBase {
     $this->assertEquals('Test striptags filter', $filter->filter($data->getDataDefinition(), $data->getValue(), []));
   }
 
+  /**
+   * @covers \Drupal\typed_data\Plugin\TypedDataFilter\StripTagsFilter
+   */
+  public function testStripTagsFilterWithFilteredMarkup(): void {
+    $filter = $this->dataFilterManager->createInstance('striptags');
+    $data = $this->typedDataManager->create(DataDefinition::create('string'), FilteredMarkup::create('<b>Test <em>striptags</em> filter</b>'));
+
+    $this->assertTrue($filter->canFilter($data->getDataDefinition()));
+    $this->assertEquals('Test striptags filter', $filter->filter($data->getDataDefinition(), $data->getValue(), []));
+  }
+
+  /**
+   * @covers \Drupal\typed_data\Plugin\TypedDataFilter\StripTagsFilter
+   */
+  public function testStripTagsFilterWithProcessedtext(): void {
+    $filter = $this->dataFilterManager->createInstance('striptags');
+
+    $dataDefinition = DataDefinition::create('string');
+    $dataDefinition->setComputed(TRUE);
+    $dataDefinition->setClass(TextProcessed::class);
+    $dataDefinition->setSetting('text source', 'value');
+
+    $value = new FilterProcessResult('<b>Test <em>striptags</em> filter</b>');
+    $data = $this->typedDataManager->create($dataDefinition, $value);
+
+    $this->assertTrue($filter->canFilter($data->getDataDefinition()));
+    $this->assertEquals('Test striptags filter', $filter->filter($data->getDataDefinition(), $data->getValue(), []));
+  }
+
   /**
    * @covers \Drupal\typed_data\Plugin\TypedDataFilter\EntityUrlFilter
    */