diff --git a/src/Plugin/EntityUsage/Track/HtmlFieldLink.php b/src/Plugin/EntityUsage/Track/HtmlFieldLink.php
new file mode 100644
index 0000000..e80e754
--- /dev/null
+++ b/src/Plugin/EntityUsage/Track/HtmlFieldLink.php
@@ -0,0 +1,155 @@
+<?php
+
+namespace Drupal\entity_usage\Plugin\EntityUsage\Track;
+
+use Drupal\Component\Utility\Html;
+use Drupal\Core\Entity\EntityRepositoryInterface;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
+use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\Core\Path\PathValidatorInterface;
+use Drupal\Core\StreamWrapper\PublicStream;
+use Drupal\entity_usage\EntityUsage;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Tracks usage of entities linked in HTML (WYSIWYG) fields.
+ *
+ * @EntityUsageTrack(
+ *   id = "html_field_link",
+ *   label = @Translation("HTML Fields links"),
+ *   description = @Translation("Tracks usage of entities linked HTML (WYSIWYG)
+ *   fields."),
+ * )
+ */
+class HtmlFieldLink extends EmbedBase {
+
+  /**
+   * Entity type manager service.
+   *
+   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
+   */
+  protected $entityTypeManager;
+
+  /**
+   * The Drupal Path Validator service.
+   *
+   * @var \Drupal\Core\Path\PathValidatorInterface
+   */
+  protected $pathValidator;
+
+  /**
+   * The public file directory.
+   *
+   * @var string
+   */
+  protected $publicFileDirectory;
+
+  /**
+   * Constructs display plugin.
+   *
+   * @param array $configuration
+   *   A configuration array containing information about the plugin instance.
+   * @param string $plugin_id
+   *   The plugin_id for the plugin instance.
+   * @param mixed $plugin_definition
+   *   The plugin implementation definition.
+   * @param \Drupal\entity_usage\EntityUsage $usage_service
+   *   The usage tracking service.
+   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
+   *   The ModuleHandler service.
+   * @param \Drupal\Core\Entity\EntityRepositoryInterface $entity_repository
+   *   The EntityRepositoryInterface service.
+   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
+   *   The EntityTypeManager service.
+   * @param \Drupal\Core\Path\PathValidatorInterface $path_validator
+   *   The Drupal Path Validator service.
+   * @param \Drupal\Core\StreamWrapper\PublicStream $public_stream
+   *   The Public Stream service.
+   */
+  public function __construct(
+    array $configuration,
+    $plugin_id,
+    $plugin_definition,
+    EntityUsage $usage_service,
+    ModuleHandlerInterface $module_handler,
+    EntityRepositoryInterface $entity_repository,
+    EntityTypeManagerInterface $entity_type_manager,
+    PathValidatorInterface $path_validator,
+    PublicStream $public_stream
+  ) {
+    parent::__construct($configuration, $plugin_id, $plugin_definition, $usage_service, $module_handler, $entity_repository);
+    $this->entityTypeManager = $entity_type_manager;
+    $this->pathValidator = $path_validator;
+    $this->publicFileDirectory = $public_stream->getDirectoryPath();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
+    return new static(
+      $configuration,
+      $plugin_id,
+      $plugin_definition,
+      $container->get('entity_usage.usage'),
+      $container->get('module_handler'),
+      $container->get('entity.repository'),
+      $container->get('entity_type.manager'),
+      $container->get('path.validator'),
+      $container->get('stream_wrapper.public')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function parseEntitiesFromText($text) {
+    $dom = Html::load($text);
+    $xpath = new \DOMXPath($dom);
+    $entities = [];
+
+    // Loop trough all the <a> elements that link to internal URLs and don't
+    // have the LinkIt attributes.
+    $xpath_query = "//a['@href != '' and not(starts-with(@href, 'http://')) and not(starts-with(@href, 'https://')) and not(@data-entity-uuid)]";
+    foreach ($xpath->query($xpath_query) as $element) {
+      /** @var \DOMElement $element */
+      try {
+        // Get the href value of the <a> element.
+        $href = $element->getAttribute('href');
+        $target_type = $target_id = NULL;
+
+        // Check if the href links to an entity.
+        $url = $this->pathValidator->getUrlIfValidWithoutAccessCheck($href);
+        if ($url && $url->isRouted() && preg_match('/^entity\./', $url->getRouteName())) {
+          // Ge the target entity type and ID.
+          $route_parameters = $url->getRouteParameters();
+          $target_type = array_keys($route_parameters)[0];
+          $target_id = $route_parameters[$target_type];
+        }
+        elseif (strpos($href, '/' . $this->publicFileDirectory) === 0) {
+          // Check if we can map the link to a public file.
+          $file_uri = preg_replace('<^/' . $this->publicFileDirectory . '/>', 'public://', urldecode($href));
+          $files = $this->entityTypeManager->getStorage('file')->loadByProperties(['uri' => $file_uri]);
+          if ($files) {
+            // File entity found.
+            $target_type = 'file';
+            $target_id = array_keys($files)[0];
+          }
+        }
+
+        if ($target_type && $target_id) {
+          $entity = $this->entityTypeManager->getStorage($target_type)->load($target_id);
+          if ($entity) {
+            $entities[$entity->uuid()] = $target_type;
+          }
+        }
+      }
+      catch (\Exception $e) {
+        // Do nothing.
+      }
+    }
+
+    return $entities;
+  }
+
+}
