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..3e66814 100644
--- a/core/lib/Drupal/Core/Form/FormCache.php
+++ b/core/lib/Drupal/Core/Form/FormCache.php
@@ -10,6 +10,7 @@
 use Drupal\Component\Utility\Crypt;
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Core\Access\CsrfTokenGenerator;
+use Drupal\Core\Config\ConfigFactory;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\KeyValueStore\KeyValueExpirableFactoryInterface;
 use Drupal\Core\PageCache\RequestPolicyInterface;
@@ -25,6 +26,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
@@ -108,11 +114,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, ConfigFactory $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 +191,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'
