diff --git a/src/Plugin/Field/FieldFormatter/HtmlTitleFormatter.php b/src/Plugin/Field/FieldFormatter/HtmlTitleFormatter.php
new file mode 100644
index 0000000..5e852ed
--- /dev/null
+++ b/src/Plugin/Field/FieldFormatter/HtmlTitleFormatter.php
@@ -0,0 +1,63 @@
+<?php
+
+namespace Drupal\html_title\Plugin\Field\FieldFormatter;
+
+use Drupal\Core\Field\FieldItemInterface;
+use Drupal\Core\Field\Plugin\Field\FieldFormatter\StringFormatter;
+use Drupal\html_title\HtmlTitleFilter;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Plugin implementation of the 'string' formatter.
+ *
+ * @FieldFormatter(
+ *   id = "html_title",
+ *   label = @Translation("HTML-title text"),
+ *   field_types = {
+ *     "string",
+ *   }
+ * )
+ */
+class HtmlTitleFormatter extends StringFormatter {
+
+  /**
+   * The HTML title filter.
+   *
+   * @var \Drupal\html_title\HtmlTitleFilter
+   */
+  protected $htmlTitleFilter;
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
+    $instance = parent::create(
+      $container,
+      $configuration,
+      $plugin_id,
+      $plugin_definition);
+    $instance->setHtmlTitleFilter($container->get('html_title.filter'));
+    return $instance;
+  }
+
+  /**
+   * @param \Drupal\html_title\HtmlTitleFilter $htmlTitleFilter
+   */
+  private function setHtmlTitleFilter(HtmlTitleFilter $htmlTitleFilter) {
+    $this->htmlTitleFilter = $htmlTitleFilter;
+  }
+
+  /**
+   * Generate the output appropriate for one field item.
+   *
+   * @param \Drupal\Core\Field\FieldItemInterface $item
+   *   One field item.
+   *
+   * @return array
+   *   The textual output generated as a render array.
+   */
+  protected function viewValue(FieldItemInterface $item) {
+    return ['#markup' => $this->htmlTitleFilter->decodeToMarkup($item->value)];
+  }
+
+}
