diff --git a/custom_elements.services.yml b/custom_elements.services.yml
index e747cc9..ee0f261 100644
--- a/custom_elements.services.yml
+++ b/custom_elements.services.yml
@@ -23,6 +23,10 @@ services:
     class: Drupal\custom_elements\Processor\FileReferenceFieldItemListProcessor
     tags:
       - { name: custom_elements_processor, priority: -50 }
+  custom_elements.processor.link_field_item:
+    class: Drupal\custom_elements\Processor\LinkFieldItemProcessor
+    tags:
+      - { name: custom_elements_processor, priority: -40 }
   custom_elements.processor.media_reference_field_item:
     class: Drupal\custom_elements\Processor\MediaReferenceFieldItemProcessor
     tags:
diff --git a/src/Processor/LinkFieldItemProcessor.php b/src/Processor/LinkFieldItemProcessor.php
new file mode 100644
index 0000000..d53cab7
--- /dev/null
+++ b/src/Processor/LinkFieldItemProcessor.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace Drupal\custom_elements\Processor;
+
+use Drupal\Core\Field\FieldItemInterface;
+use Drupal\custom_elements\CustomElement;
+use Drupal\text\Plugin\Field\FieldType\TextItemBase;
+
+/**
+ * Default processor for text field items.
+ */
+class LinkFieldItemProcessor implements CustomElementProcessorInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function supports($data, $viewMode) {
+    if ($data instanceof FieldItemInterface) {
+      $field_definition = $data->getFieldDefinition();
+      return $field_definition->getType() == 'link';
+    }
+    else {
+      return FALSE;
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function addtoElement($data, CustomElement $element, $viewMode) {
+    assert($data instanceof FieldItemInterface);
+    $field_item = $data;
+
+    // Render the field using the selected view mode.
+    $build = $field_item->view($viewMode);
+
+    $element->setSlot('default', $build);
+  }
+
+}
