diff --git a/core/lib/Drupal/Component/Render/MarkupInterface.php b/core/lib/Drupal/Component/Render/MarkupInterface.php
index 65ab29a..9559437 100644
--- a/core/lib/Drupal/Component/Render/MarkupInterface.php
+++ b/core/lib/Drupal/Component/Render/MarkupInterface.php
@@ -35,7 +35,7 @@
  * @see sanitization
  * @see theme_render
  */
-interface MarkupInterface extends \JsonSerializable {
+interface MarkupInterface extends \JsonSerializable, \Countable {
 
   /**
    * Returns markup.
diff --git a/core/lib/Drupal/Core/Field/FieldFilteredMarkup.php b/core/lib/Drupal/Core/Field/FieldFilteredMarkup.php
index 8dcadca..4c164c4 100644
--- a/core/lib/Drupal/Core/Field/FieldFilteredMarkup.php
+++ b/core/lib/Drupal/Core/Field/FieldFilteredMarkup.php
@@ -24,7 +24,7 @@
  *
  * @see \Drupal\Core\Render\Markup
  */
-final class FieldFilteredMarkup implements MarkupInterface, \Countable {
+final class FieldFilteredMarkup implements MarkupInterface {
   use MarkupTrait;
 
   /**
diff --git a/core/lib/Drupal/Core/GeneratedLink.php b/core/lib/Drupal/Core/GeneratedLink.php
index d7e96e1..be1d354 100644
--- a/core/lib/Drupal/Core/GeneratedLink.php
+++ b/core/lib/Drupal/Core/GeneratedLink.php
@@ -61,4 +61,11 @@ public function jsonSerialize() {
     return $this->__toString();
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function count() {
+    return Unicode::strlen($this->__toString());
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Render/Markup.php b/core/lib/Drupal/Core/Render/Markup.php
index c36d29f..b649b1a 100644
--- a/core/lib/Drupal/Core/Render/Markup.php
+++ b/core/lib/Drupal/Core/Render/Markup.php
@@ -25,6 +25,6 @@
  * @see \Twig_Markup
  * @see \Drupal\Component\Utility\SafeMarkup
  */
-final class Markup implements MarkupInterface, \Countable {
+final class Markup implements MarkupInterface {
   use MarkupTrait;
 }
diff --git a/core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php b/core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php
index 13d3a64..11a5493 100644
--- a/core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php
+++ b/core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php
@@ -170,4 +170,14 @@ protected function getStringTranslation() {
     return $this->stringTranslation;
   }
 
+  /**
+   * Returns the string length.
+   *
+   * @return int
+   *   The length of the string.
+   */
+  public function count() {
+    return Unicode::strlen($this->render());
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Template/Attribute.php b/core/lib/Drupal/Core/Template/Attribute.php
index 26a1793..d4f2b58 100644
--- a/core/lib/Drupal/Core/Template/Attribute.php
+++ b/core/lib/Drupal/Core/Template/Attribute.php
@@ -347,4 +347,11 @@ public function jsonSerialize() {
     return (string) $this;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function count() {
+    return count($this->storage);
+  }
+
 }
diff --git a/core/modules/filter/src/Render/FilteredMarkup.php b/core/modules/filter/src/Render/FilteredMarkup.php
index 2abfac3..d7fe196 100644
--- a/core/modules/filter/src/Render/FilteredMarkup.php
+++ b/core/modules/filter/src/Render/FilteredMarkup.php
@@ -24,6 +24,6 @@
  *
  * @see \Drupal\Core\Render\Markup
  */
-final class FilteredMarkup implements MarkupInterface, \Countable {
+final class FilteredMarkup implements MarkupInterface {
   use MarkupTrait;
 }
diff --git a/core/modules/views/src/Render/ViewsRenderPipelineMarkup.php b/core/modules/views/src/Render/ViewsRenderPipelineMarkup.php
index 4532b9c..70d60dc 100644
--- a/core/modules/views/src/Render/ViewsRenderPipelineMarkup.php
+++ b/core/modules/views/src/Render/ViewsRenderPipelineMarkup.php
@@ -23,6 +23,6 @@
  *
  * @see \Drupal\Core\Render\Markup
  */
-final class ViewsRenderPipelineMarkup implements MarkupInterface, \Countable {
+final class ViewsRenderPipelineMarkup implements MarkupInterface {
   use MarkupTrait;
 }
diff --git a/core/tests/Drupal/Tests/Core/Template/AttributeTest.php b/core/tests/Drupal/Tests/Core/Template/AttributeTest.php
index 69941a9..64d5a40 100644
--- a/core/tests/Drupal/Tests/Core/Template/AttributeTest.php
+++ b/core/tests/Drupal/Tests/Core/Template/AttributeTest.php
@@ -339,6 +339,14 @@ public function testIterate() {
   }
 
   /**
+   * @covers ::count
+   */
+  public function testCount() {
+    $attribute = new Attribute(['class' => ['example-class'], 'id' => 'muuuh']);
+    $this->assertEquals(2, count($attribute));
+  }
+
+  /**
    * Tests printing of an attribute.
    */
   public function testPrint() {
