diff --git a/core/modules/field/lib/Drupal/field/Plugin/field/widget/HiddenWidget.php b/core/modules/field/lib/Drupal/field/Plugin/field/widget/HiddenWidget.php
new file mode 100644
index 0000000..393ef32
--- /dev/null
+++ b/core/modules/field/lib/Drupal/field/Plugin/field/widget/HiddenWidget.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\field\Plugin\field\widget\HiddenWidget.
+ */
+
+namespace Drupal\field\Plugin\field\widget;
+
+use Drupal\Core\Annotation\Plugin;
+use Drupal\Core\Annotation\Translation;
+use Drupal\field\Plugin\Type\Widget\WidgetBase;
+
+/**
+ * Plugin implementation of the 'field_hidden' widget.
+ *
+ * @Plugin(
+ *   id = "field_hidden",
+ *   module = "field",
+ *   label = @Translation("- Hidden -"),
+ *   field_types = {
+ *     "list_boolean",
+ *     "number_decimal",
+ *     "email",
+ *     "file",
+ *     "number_float",
+ *     "image",
+ *     "number_integer",
+ *     "link",
+ *     "list_float",
+ *     "list_integer",
+ *     "list_text",
+ *     "text_long",
+ *     "text_with_summary",
+ *     "taxonomy_term_reference",
+ *     "text"
+ *   }
+ * )
+ */
+class HiddenWidget extends WidgetBase {
+
+  /**
+   * Implements Drupal\field\Plugin\Type\Widget\WidgetInterface::formElement().
+   */
+  public function formElement(array $items, $delta, array $element, $langcode, array &$form, array &$form_state) {
+    // The purpose of this widget is to be hidden, so nothing to do here.
+    return $element;
+  }
+
+}
