diff --git a/config/schema/diff.schema.yml b/config/schema/diff.schema.yml
index 8321192..d0ebbe7 100644
--- a/config/schema/diff.schema.yml
+++ b/config/schema/diff.schema.yml
@@ -18,6 +18,19 @@ diff.settings:
         revision_pager_limit:
           type: integer
           label: 'Revisions per page to be displayed in diff pager'
+        layout_plugins:
+          type: sequence
+          label: 'Plugins'
+          sequence:
+            type: mapping
+            label: 'Layout plugins configuration'
+            mapping:
+              enabled:
+                type: boolean
+                label: 'Enabled'
+              weight:
+                type: integer
+                label: 'Weight'
     entity:
       type: sequence
       label: 'Entities'
diff --git a/diff.install b/diff.install
index 22a55b7..072a5dc 100644
--- a/diff.install
+++ b/diff.install
@@ -35,3 +35,16 @@ function diff_update_8003() {
   $config->clear('general_settings.theme');
   $config->save();
 }
+
+/**
+ * Enable all layout plugins to be used.
+ */
+function diff_update_8004() {
+  $config = \Drupal::configFactory()->getEditable('diff.settings');
+  $plugins = \Drupal::service('plugin.manager.diff.layout')->getDefinitions();
+  foreach ($plugins as $key => $value) {
+    $plugin_options[$key] = $value['label'];
+    $config->set('general_settings.layout_plugins.' . $key . '.enabled', TRUE);
+  }
+  $config->save();
+}
\ No newline at end of file
diff --git a/src/Controller/PluginRevisionController.php b/src/Controller/PluginRevisionController.php
index 07cae4f..6661780 100644
--- a/src/Controller/PluginRevisionController.php
+++ b/src/Controller/PluginRevisionController.php
@@ -159,9 +159,10 @@ class PluginRevisionController extends ControllerBase {
    */
   protected function buildLayoutNavigation(EntityInterface $entity, $left_revision_id, $right_revision_id, $active_filter) {
     $links = [];
-    foreach ($this->diffLayoutManager->getDefinitions() as $key => $value) {
+    $layouts = $this->diffLayoutManager->getPluginOptions();
+    foreach ($layouts as $key => $value) {
       $links[$key] = array(
-        'title' => $value['label'],
+        'title' => $value,
         'url' => $this->diffRoute($entity, $left_revision_id, $right_revision_id, $key),
       );
     }
diff --git a/src/DiffLayoutManager.php b/src/DiffLayoutManager.php
index d58a1a5..5c1e4f5 100644
--- a/src/DiffLayoutManager.php
+++ b/src/DiffLayoutManager.php
@@ -57,4 +57,42 @@ class DiffLayoutManager extends DefaultPluginManager {
     $this->layoutPluginsConfig =  $configFactory->get('diff.layout_plugins');
   }
 
+  /**
+   * Gets the applicable layout plugins.
+   *
+   * Loop over the plugins that can be used to display the diff comparison
+   * sorting them by the weight.
+   *
+   * @return array
+   *   The layout plugin options.
+   */
+  public function getPluginOptions() {
+    $plugins = $this->config->get('general_settings' . '.' . 'layout_plugins');
+    $plugin_options = [];
+    // Get the plugins sorted and build an array keyed by the plugin id.
+    if ($plugins) {
+      // Sort the plugins based on their weight.
+      uasort($plugins, 'Drupal\Component\Utility\SortArray::sortByWeightElement');
+      foreach ($plugins as $key => $value) {
+        $plugin = $this->getDefinition($key);
+        if ($value['enabled']) {
+          $plugin_options[$key] = $plugin['label'];
+        }
+      }
+    }
+    return $plugin_options;
+  }
+
+  /**
+   * Gets the default layout plugin selected.
+   *
+   * Take the first option of the array returned by getPluginOptions.
+   *
+   * @return string
+   *   The id of the default plugin.
+   */
+  public function getDefaultLayout() {
+    $plugins = $this->getPluginOptions();
+    return array_keys($plugins[0]);
+  }
 }
diff --git a/src/Form/GeneralSettingsForm.php b/src/Form/GeneralSettingsForm.php
index c15e6a2..bb01e3c 100644
--- a/src/Form/GeneralSettingsForm.php
+++ b/src/Form/GeneralSettingsForm.php
@@ -58,6 +58,57 @@ class GeneralSettingsForm extends ConfigFormBase {
       '#options' => $options,
     );
 
+    $layout_plugins = \Drupal::service('plugin.manager.diff.layout')->getDefinitions();
+    $weight = count($layout_plugins) + 1;
+    $layout_plugins_order = [];
+    foreach ($layout_plugins as $id => $layout_plugin) {
+      $layout_plugins_order[$id] = [
+        'label' => $layout_plugin['label'],
+        'enabled' => $config->get('general_settings' . '.' . 'layout_plugins')[$id]['enabled'],
+        'weight' => $config->get('general_settings' . '.' . 'layout_plugins')[$id]['weight'] ?: $weight,
+      ];
+      $weight++;
+    }
+
+    $form['layout_plugins'] = [
+      '#type' => 'table',
+      '#header' => [t('Layout'), t('Weight')],
+      '#empty' => t('There are no items yet. Add an item.'),
+      '#suffix' => '<div class="description">' . $this->t('The layout plugins that are enabled for displaying the diff comparison.') .'</div>',
+      '#tabledrag' => [
+        [
+          'action' => 'order',
+          'relationship' => 'sibling',
+          'group' => 'diff-layout-plugins-order-weight',
+        ],
+      ],
+    ];
+
+    uasort($layout_plugins_order, 'Drupal\Component\Utility\SortArray::sortByWeightElement');
+
+    foreach ($layout_plugins_order as $id => $layout_plugin) {
+      $form['layout_plugins'][$id]['#attributes']['class'][] = 'draggable';
+      $form['layout_plugins'][$id]['enabled'] = [
+        '#type' => 'checkbox',
+        '#title' => $layout_plugin['label'],
+        '#title_display' => 'after',
+        '#default_value' => $layout_plugin['enabled'],
+      ];
+      $form['layout_plugins'][$id]['weight'] = [
+        '#type' => 'weight',
+        '#title' => t('Weight for @title', ['@title' => $layout_plugin['label']]),
+        '#title_display' => 'invisible',
+        '#delta' => 50,
+        '#default_value' => (int) $layout_plugin['weight'],
+        '#array_parents' => [
+          'settings',
+          'sites',
+          $id
+        ],
+        '#attributes' => ['class' => ['diff-layout-plugins-order-weight']],
+      ];
+    }
+
     return parent::buildForm($form, $form_state);
   }
 
@@ -71,6 +122,7 @@ class GeneralSettingsForm extends ConfigFormBase {
       'radio_behavior',
       'context_lines_leading',
       'context_lines_trailing',
+      'layout_plugins',
     );
     foreach ($keys as $key) {
       $config->set('general_settings.' . $key, $form_state->getValue($key));
diff --git a/src/Tests/AdminFormsTest.php b/src/Tests/AdminFormsTest.php
index 7a10616..8c05d52 100644
--- a/src/Tests/AdminFormsTest.php
+++ b/src/Tests/AdminFormsTest.php
@@ -70,4 +70,54 @@ class AdminFormsTest extends DiffTestBase {
     $this->assertText('The content type Article has been updated.');
   }
 
+  /**
+   * Tests the Compare Revisions vertical tab.
+   */
+  public function testPluginWeight() {
+    $edit = [
+      'layout_plugins[markdown][weight]' => '10',
+    ];
+    $this->drupalPostForm('admin/config/content/diff/general', $edit, t('Save configuration'));
+    // Create a node with a revision.
+    $edit = [
+      'title[0][value]' => 'great_title',
+      'body[0][value]' => '<p>great_body</p>',
+    ];
+    $this->drupalPostForm('node/add/article', $edit, t('Save and publish'));
+    $this->clickLink('Edit');
+    $edit = [
+      'title[0][value]' => 'greater_title',
+      'body[0][value]' => '<p>greater_body</p>',
+    ];
+    $this->drupalPostForm(NULL, $edit, t('Save and keep published'));
+
+    // Check all the links are displayed.
+    $node = $this->getNodeByTitle('greater_title');
+    $this->drupalGet('node/' . $node->id() . '/revisions');
+    $this->drupalPostForm(NULL, [], t('Compare'));
+    $this->assertLink('Single Column');
+    $this->assertLink('Markdown');
+    $this->assertLink('Standard');
+
+    // Change the settings of the layouts, disable the single column.
+    $edit = [
+      'layout_plugins[classic][weight]' => '11',
+      'layout_plugins[classic][enabled]' => TRUE,
+      'layout_plugins[markdown][enabled]' => TRUE,
+    ];
+    $this->drupalPostForm('admin/config/content/diff/general', $edit, t('Save configuration'));
+
+    // Check the revision display.
+    $this->drupalGet('node/' . $node->id() . '/revisions');
+    $this->drupalPostForm(NULL, [], t('Compare'));
+    $this->assertResponse(200);
+    $this->assertNoLink('Single Column');
+    $this->assertLink('Markdown');
+    $this->assertLink('Standard');
+    $this->assertText('great_title');
+
+    // @todo verify order of the plugins and disable classic layout. Set the
+    // default layout during routing.
+  }
+
 }
