diff --git a/core/modules/field/modules/text/lib/Drupal/text/Plugin/field/formatter/TextRawFormatter.php b/core/modules/field/modules/text/lib/Drupal/text/Plugin/field/formatter/TextRawFormatter.php
new file mode 100644
index 0000000..7b4a111
--- /dev/null
+++ b/core/modules/field/modules/text/lib/Drupal/text/Plugin/field/formatter/TextRawFormatter.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\text\Plugin\field\formatter\TextRawFormatter.
+ */
+
+namespace Drupal\text\Plugin\field\formatter;
+
+use Drupal\Core\Annotation\Plugin;
+use Drupal\Core\Annotation\Translation;
+use Drupal\field\Plugin\Type\Formatter\FormatterBase;
+use Drupal\Core\Entity\EntityInterface;
+
+/**
+ * Plugin implementation of the 'text_raw' formatter.
+ *
+ * @Plugin(
+ *   id = "text_raw",
+ *   module = "text",
+ *   label = @Translation("Raw text"),
+ *   field_types = {
+ *     "text",
+ *     "text_long",
+ *     "text_with_summary"
+ *   }
+ * )
+ */
+class TextRawFormatter extends FormatterBase {
+
+  /**
+   * Implements Drupal\field\Plugin\Type\Formatter\FormatterInterface::viewElements().
+   */
+  public function viewElements(EntityInterface $entity, $langcode, array $items) {
+    $elements = array();
+
+    foreach ($items as $delta => $item) {
+      $elements[$delta] = array('#markup' => $item['value']);
+    }
+
+    return $elements;
+  }
+
+}
diff --git a/core/modules/field/modules/text/lib/Drupal/text/Tests/TextFieldTest.php b/core/modules/field/modules/text/lib/Drupal/text/Tests/TextFieldTest.php
index 1a41523..a635cd6 100644
--- a/core/modules/field/modules/text/lib/Drupal/text/Tests/TextFieldTest.php
+++ b/core/modules/field/modules/text/lib/Drupal/text/Tests/TextFieldTest.php
@@ -29,7 +29,7 @@ class TextFieldTest extends WebTestBase {
   public static function getInfo() {
     return array(
       'name'  => 'Text field',
-      'description'  => "Test the creation of text fields.",
+      'description'  => 'Test the creation of text fields.',
       'group' => 'Field types'
     );
   }
@@ -42,8 +42,6 @@ function setUp() {
     $this->drupalLogin($this->web_user);
   }
 
-  // Test fields.
-
   /**
    * Test text field validation.
    */
@@ -158,7 +156,7 @@ function testTextfieldWidgetsFormatted() {
    * Helper function for testTextfieldWidgetsFormatted().
    */
   function _testTextfieldWidgetsFormatted($field_type, $widget_type) {
-    // Setup a field and instance
+    // Setup a field and instance.
     $entity_type = 'test_entity';
     $this->field_name = drupal_strtolower($this->randomName());
     $this->field = array('field_name' => $this->field_name, 'type' => $field_type);
@@ -254,4 +252,59 @@ function _testTextfieldWidgetsFormatted($field_type, $widget_type) {
     $this->content = drupal_render($entity->content);
     $this->assertRaw($value, 'Value is displayed unfiltered');
   }
+
+  /**
+   * Test raw text formatter.
+   */
+  function testTextfieldRawText() {
+    $this->_testTextfieldRawText('text', 'text_textfield');
+    $this->_testTextfieldRawText('text_long', 'text_textarea');
+  }
+
+  /**
+   * Helper function for testTextfieldRawText().
+   */
+  function _testTextfieldRawText($field_type, $widget_type) {
+    // Setup a field and instance.
+    $entity_type = 'test_entity';
+    $this->field_name = drupal_strtolower($this->randomName());
+    $this->field = array('field_name' => $this->field_name, 'type' => $field_type);
+    field_create_field($this->field);
+    $this->instance = array(
+      'field_name' => $this->field_name,
+      'entity_type' => 'test_entity',
+      'bundle' => 'test_bundle',
+      'label' => $this->randomName() . '_label',
+      'widget' => array(
+        'type' => $widget_type,
+      ),
+      'display' => array(
+        'full' => array(
+          'type' => 'text_raw',
+        ),
+      ),
+    );
+    field_create_instance($this->instance);
+    $langcode = LANGUAGE_NOT_SPECIFIED;
+
+    $this->drupalLogin($this->web_user);
+
+    // Submit with data that should not be filtered.
+    $value = '<em>' . $this->randomName() . '</em>';
+    $edit = array(
+      "{$this->field_name}[$langcode][0][value]" => $value,
+    );
+    $this->drupalGet('test-entity/add/test_bundle');
+    $this->assertFieldByName("{$this->field_name}[$langcode][0][value]", '', 'Widget is displayed');
+    $this->drupalPost(NULL, $edit, t('Save'));
+    preg_match('|test-entity/manage/(\d+)/edit|', $this->url, $match);
+    $id = $match[1];
+    $this->assertRaw(t('test_entity @id has been created.', array('@id' => $id)), 'Entity was created');
+
+    // Display the entity.
+    $entity = field_test_entity_test_load($id);
+    $entity->content = field_attach_view($entity_type, $entity, 'full');
+    $this->content = drupal_render($entity->content);
+    $this->assertRaw($value, 'HTML is not escaped.');
+  }
 }
