diff --git a/core/modules/editor/editor.module b/core/modules/editor/editor.module
index 18d0fb8..41a661c 100644
--- a/core/modules/editor/editor.module
+++ b/core/modules/editor/editor.module
@@ -6,6 +6,8 @@
  */
 
 use Drupal\Component\Utility\Html;
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+use Drupal\editor\Entity\Editor;
 use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Form\FormStateInterface;
@@ -509,3 +511,30 @@ function _editor_parse_file_uuids($text) {
   }
   return $uuids;
 }
+
+/**
+ * Implements hook_ENTITY_TYPE_presave().
+ *
+ * Synchronizes the editor status to its paired text format status.
+ */
+function editor_filter_format_presave(ConfigEntityInterface $format) {
+  // The text format being created cannot have an editor yet.
+  if ($format->isNew()) {
+    return;
+  }
+
+  /** @var \Drupal\Core\Config\Entity\ConfigEntityInterface $original */
+  $original = \Drupal::entityManager()
+    ->getStorage('filter_format')
+    ->loadUnchanged($format->getOriginalId());
+
+  // If the text format status is the same, exit here.
+  if (($status = $format->status()) == $original->status()) {
+    return;
+  }
+
+  /** @var \Drupal\Core\Config\Entity\ConfigEntityInterface $editor */
+  if ($editor = Editor::load($format->id())) {
+    $editor->setStatus($status)->save();
+  }
+}
diff --git a/core/modules/editor/src/Tests/EditorFilterIntegration.php b/core/modules/editor/src/Tests/EditorFilterIntegration.php
new file mode 100644
index 0000000..5e725fa
--- /dev/null
+++ b/core/modules/editor/src/Tests/EditorFilterIntegration.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\editor\Tests\EditorFilterIntegration.
+ */
+
+namespace Drupal\editor\Tests;
+
+use Drupal\Component\Utility\Unicode;
+use Drupal\editor\Entity\Editor;
+use Drupal\filter\Entity\FilterFormat;
+use Drupal\simpletest\KernelTestBase;
+
+/**
+ * Tests integration with filter module.
+ *
+ * @group editor
+ */
+class EditorFilterIntegration extends KernelTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['filter', 'editor', 'editor_test'];
+
+  /*
+   * Tests text format removal or disabling.
+   */
+  public function testTextFormatIntegration() {
+    // Create a text format with identified by $format_id.
+    $format = FilterFormat::create([
+      'format' => $format_id = Unicode::strtolower($this->randomMachineName()),
+      'name' => $this->randomString(),
+    ]);
+    $format->save();
+
+    // Create a paired editor.
+    $editor = Editor::create(['format' => $format_id, 'editor' => 'unicorn']);
+    $editor->save();
+
+    // Disable the text format.
+    $format->disable()->save();
+
+    // The paired editor should be disabled too.
+    $this->assertFalse(Editor::load($format_id)->status());
+
+    // Completely remove the text format. Usually this cannot occur via UI, but
+    // can be triggered from API.
+    $format->delete();
+
+    // The paired editor should be removed.
+    $this->assertNull(Editor::load($format_id));
+  }
+
+}
