diff --git a/core/core.services.yml b/core/core.services.yml
index c6161ab..8a853f4 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -298,7 +298,7 @@ services:
     arguments: ['@request_stack', '@url_generator']
   form_cache:
     class: Drupal\Core\Form\FormCache
-    arguments: ['@app.root', '@keyvalue.expirable', '@module_handler', '@current_user', '@csrf_token', '@logger.channel.form', '@request_stack', '@page_cache_request_policy']
+    arguments: ['@app.root', '@keyvalue.expirable', '@module_handler', '@current_user', '@config.factory', '@csrf_token', '@logger.channel.form', '@request_stack', '@page_cache_request_policy']
     public: false  # Private to form_builder
   keyvalue:
     class: Drupal\Core\KeyValueStore\KeyValueFactory
diff --git a/core/lib/Drupal/Core/Form/FormCache.php b/core/lib/Drupal/Core/Form/FormCache.php
index 3371944..34d3a4a 100644
--- a/core/lib/Drupal/Core/Form/FormCache.php
+++ b/core/lib/Drupal/Core/Form/FormCache.php
@@ -10,6 +10,8 @@
 use Drupal\Component\Utility\Crypt;
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Core\Access\CsrfTokenGenerator;
+use Drupal\Core\Config\ConfigFactory;
+use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\KeyValueStore\KeyValueExpirableFactoryInterface;
 use Drupal\Core\PageCache\RequestPolicyInterface;
@@ -25,6 +27,11 @@
 class FormCache implements FormCacheInterface {
 
   /**
+   * The default lifetime of the form's cache is set to 6 hours.
+   */
+  const CACHE_LIFETIME = 21600;
+
+  /**
    * The factory for expirable key value stores used by form cache.
    *
    * @var \Drupal\Core\KeyValueStore\KeyValueExpirableFactoryInterface
@@ -99,6 +106,8 @@ class FormCache implements FormCacheInterface {
    *   The module handler.
    * @param \Drupal\Core\Session\AccountInterface $current_user
    *   The current user.
+   * @param \Drupal\Core\Config\ConfigFactoryInterface $configFactory
+   *   The configuration factory
    * @param \Drupal\Core\Access\CsrfTokenGenerator $csrf_token
    *   The CSRF token generator.
    * @param \Psr\Log\LoggerInterface $logger
@@ -108,11 +117,12 @@ class FormCache implements FormCacheInterface {
    * @param \Drupal\Core\PageCache\RequestPolicyInterface $request_policy
    *   A policy rule determining the cacheability of a request.
    */
-  public function __construct($root, KeyValueExpirableFactoryInterface $key_value_expirable_factory, ModuleHandlerInterface $module_handler, AccountInterface $current_user, CsrfTokenGenerator $csrf_token, LoggerInterface $logger, RequestStack $request_stack, RequestPolicyInterface $request_policy) {
+  public function __construct($root, KeyValueExpirableFactoryInterface $key_value_expirable_factory, ModuleHandlerInterface $module_handler, AccountInterface $current_user, ConfigFactoryInterface $configFactory, CsrfTokenGenerator $csrf_token, LoggerInterface $logger, RequestStack $request_stack, RequestPolicyInterface $request_policy) {
     $this->root = $root;
     $this->keyValueExpirableFactory = $key_value_expirable_factory;
     $this->moduleHandler = $module_handler;
     $this->currentUser = $current_user;
+    $this->configFactory = $configFactory;
     $this->logger = $logger;
     $this->csrfToken = $csrf_token;
     $this->requestStack = $request_stack;
@@ -184,8 +194,13 @@ protected function loadCachedFormState($form_build_id, FormStateInterface $form_
    * {@inheritdoc}
    */
   public function setCache($form_build_id, $form, FormStateInterface $form_state) {
-    // 6 hours cache life time for forms should be plenty.
-    $expire = 21600;
+    $system_form = $this->configFactory->get('system.form');
+    if (empty($system_form)) {
+      $expire = static::CACHE_LIFETIME;
+    }
+    else {
+      $expire = $system_form->get('cache_lifetime');
+    }
 
     // Ensure that the form build_id embedded in the form structure is the same
     // as the one passed in as a parameter. This is an additional safety measure
diff --git a/core/modules/system/config/install/system.form.yml b/core/modules/system/config/install/system.form.yml
new file mode 100644
index 0000000..9e2e584
--- /dev/null
+++ b/core/modules/system/config/install/system.form.yml
@@ -0,0 +1 @@
+cache_lifetime: 21600
diff --git a/core/modules/system/config/schema/system.schema.yml b/core/modules/system/config/schema/system.schema.yml
index 7cde50d..40a3d79 100644
--- a/core/modules/system/config/schema/system.schema.yml
+++ b/core/modules/system/config/schema/system.schema.yml
@@ -137,6 +137,14 @@ system.filter:
         type: string
         label: 'Protocol'
 
+system.form:
+  type: config_object
+  label: 'Form settings'
+  mapping:
+    cache_lifetime:
+      type: integer
+      label: 'Form cache lifetime'
+
 system.logging:
   type: config_object
   label: 'Logging settings'
diff --git a/core/tests/Drupal/Tests/Core/Form/FormCacheTest.php b/core/tests/Drupal/Tests/Core/Form/FormCacheTest.php
index 1d9a67a..ce7d31d 100644
--- a/core/tests/Drupal/Tests/Core/Form/FormCacheTest.php
+++ b/core/tests/Drupal/Tests/Core/Form/FormCacheTest.php
@@ -40,6 +40,13 @@ class FormCacheTest extends UnitTestCase {
   protected $account;
 
   /**
+   * The config factory.
+   *
+   * @var \Drupal\Core\Config\ConfigFactoryInterface|\PHPUnit_Framework_MockObject_MockObject
+   */
+  protected $configFactory;
+
+  /**
    * The CSRF token generator.
    *
    * @var \Drupal\Core\Access\CsrfTokenGenerator|\PHPUnit_Framework_MockObject_MockObject
@@ -108,6 +115,8 @@ protected function setUp() {
         ['form_state', $this->formStateCacheStore],
       ]));
 
+    $this->configFactory = $this->getMockBuilder('Drupal\Core\Config\ConfigFactory');
+
     $this->csrfToken = $this->getMockBuilder('Drupal\Core\Access\CsrfTokenGenerator')
       ->disableOriginalConstructor()
       ->getMock();
@@ -117,7 +126,7 @@ protected function setUp() {
     $this->requestStack = $this->getMock('\Symfony\Component\HttpFoundation\RequestStack');
     $this->requestPolicy = $this->getMock('\Drupal\Core\PageCache\RequestPolicyInterface');
 
-    $this->formCache = new FormCache($this->root, $this->keyValueExpirableFactory, $this->moduleHandler, $this->account, $this->csrfToken, $this->logger, $this->requestStack, $this->requestPolicy);
+    $this->formCache = new FormCache($this->root, $this->keyValueExpirableFactory, $this->moduleHandler, $this->account, $this->configFactory, $this->csrfToken, $this->logger, $this->requestStack, $this->requestPolicy);
   }
 
   /**
