diff --git a/core/modules/filter/src/Element/ProcessedText.php b/core/modules/filter/src/Element/ProcessedText.php
index 750a6fc..e0045d1 100644
--- a/core/modules/filter/src/Element/ProcessedText.php
+++ b/core/modules/filter/src/Element/ProcessedText.php
@@ -78,10 +78,13 @@ public static function preRenderText($element) {
     if (!isset($format_id)) {
       $format_id = static::configFactory()->get('filter.settings')->get('fallback_format');
     }
-    // If the requested text format does not exist, the text cannot be filtered.
     /** @var \Drupal\filter\Entity\FilterFormat $format **/
-    if (!$format = FilterFormat::load($format_id)) {
-      static::logger('filter')->alert('Missing text format: %format.', array('%format' => $format_id));
+    $format = FilterFormat::load($format_id);
+    // If the requested text format doesn't exist or it's disabled, the text
+    // cannot be filtered.
+    if (!$format || !$format->status()) {
+      $message = !$format ? 'Missing text format: %format.' : 'Disabled text format: %format.';
+      static::logger('filter')->alert($message, array('%format' => $format_id));
       $element['#markup'] = '';
       return $element;
     }
diff --git a/core/modules/filter/src/Entity/FilterFormat.php b/core/modules/filter/src/Entity/FilterFormat.php
index cf61f7f..f5e5c65 100644
--- a/core/modules/filter/src/Entity/FilterFormat.php
+++ b/core/modules/filter/src/Entity/FilterFormat.php
@@ -150,6 +150,13 @@ public function filters($instance_id = NULL) {
   /**
    * {@inheritdoc}
    */
+  public function status() {
+    return parent::status() || $this->isFallbackFormat();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function getPluginCollections() {
     return array('filters' => $this->filters());
   }
diff --git a/core/modules/filter/src/Tests/FilterAdminTest.php b/core/modules/filter/src/Tests/FilterAdminTest.php
index 573bf34..e46fcb4 100644
--- a/core/modules/filter/src/Tests/FilterAdminTest.php
+++ b/core/modules/filter/src/Tests/FilterAdminTest.php
@@ -9,6 +9,10 @@
 
 use Drupal\Component\Utility\Html;
 use Drupal\Component\Utility\Unicode;
+use Drupal\Core\Database\Database;
+use Drupal\filter\Entity\FilterFormat;
+use Drupal\node\Entity\Node;
+use Drupal\node\Entity\NodeType;
 use Drupal\simpletest\WebTestBase;
 use Drupal\user\RoleInterface;
 
@@ -22,7 +26,7 @@ class FilterAdminTest extends WebTestBase {
   /**
    * {@inheritdoc}
    */
-  public static $modules = array('filter', 'node');
+  public static $modules = ['filter', 'node', 'filter_test_plugin', 'dblog'];
 
   /**
    * An user with administration permissions.
@@ -386,4 +390,64 @@ function testFilterTipHtmlEscape() {
     $this->assertRaw('<td class="get">' . $ampersand . '</td>');
   }
 
+  /**
+   * Tests whether a field having a disabled format is rendered.
+   */
+  public function testDisabledFormat() {
+    // We test the interface as anonymous user.
+    $this->drupalLogout();
+
+    // Create a node type and add a standard body field.
+    $node_type = NodeType::create(['type' => Unicode::strtolower($this->randomMachineName())]);
+    $node_type->save();
+    node_add_body_field($node_type, $this->randomString());
+
+    // Create a new format and add a filter that replaces the text with a static
+    // text every time.
+    /** @var \Drupal\filter\FilterFormatInterface $format */
+    $format = FilterFormat::create([
+      'name' => $this->randomString(),
+      'format' => $format_id = Unicode::strtolower($this->randomMachineName()),
+    ]);
+    $format->save();
+    $format->setFilterConfig('filter_static_text', ['status' => TRUE]);
+    $format->save();
+
+    // Create a new node of the new node type.
+    $node = Node::create([
+      'type' => $node_type->id(),
+      'title' => $this->randomString(),
+    ]);
+    $body_value = 'body text &<';
+    $node->body->value = $body_value;
+    $node->body->format = $format_id;
+    $node->save();
+
+    // The format is used and we should see the static text instead of the body
+    // value.
+    $this->drupalGet('node/' . $node->id());
+    $this->assertText('filtered text');
+
+    // Disable the format.
+    $format->disable()->save();
+
+    $this->drupalGet('node/' . $node->id());
+
+    $message = Database::getConnection('default', 'default')
+      ->select('watchdog')
+      ->fields('watchdog', ['message'])
+      ->condition('type', 'filter')
+      ->condition('variables', serialize(['%format' => $format_id]))
+      ->execute()
+      ->fetchField();
+
+    // The correct message has been logged.
+    $this->assertIdentical($message, 'Disabled text format: %format.');
+    // The format is not used anymore.
+    $this->assertNoText('filtered text');
+    // The text is not displayed unfiltered or escaped.
+    $this->assertNoRaw($body_value);
+    $this->assertNoEscaped($body_value);
+  }
+
 }
diff --git a/core/modules/filter/tests/filter_test_plugin/src/Plugin/Filter/FilterStatic.php b/core/modules/filter/tests/filter_test_plugin/src/Plugin/Filter/FilterStatic.php
new file mode 100644
index 0000000..1639d26
--- /dev/null
+++ b/core/modules/filter/tests/filter_test_plugin/src/Plugin/Filter/FilterStatic.php
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\filter_test_plugin\Plugin\Filter\FilterStatic.
+ */
+
+namespace Drupal\filter_test_plugin\Plugin\Filter;
+
+use Drupal\filter\FilterProcessResult;
+use Drupal\filter\Plugin\FilterBase;
+
+/**
+ * Provides a filter that returns the same static text, regardless of what input
+ * text he receives.
+ *
+ * @Filter(
+ *   id = "filter_static_text",
+ *   title = @Translation("Static filter"),
+ *   type = Drupal\filter\Plugin\FilterInterface::TYPE_HTML_RESTRICTOR,
+ *   settings = {},
+ * )
+ */
+class FilterStatic extends FilterBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function process($text, $langcode) {
+    return new FilterProcessResult('filtered text');
+  }
+
+}
