diff --git a/core/modules/views/config/schema/views.data_types.schema.yml b/core/modules/views/config/schema/views.data_types.schema.yml
index 26f14c6e4b..fd02a10314 100644
--- a/core/modules/views/config/schema/views.data_types.schema.yml
+++ b/core/modules/views/config/schema/views.data_types.schema.yml
@@ -356,6 +356,9 @@ views_argument:
     title:
       type: label
       label: 'Overridden title'
+    no_url_cache_context:
+      type: boolean
+      label: 'No URL cache context'
     default_argument_type:
       type: string
       label: 'Type'
diff --git a/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php b/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php
index bbc33b438b..11863e35c3 100644
--- a/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php
+++ b/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php
@@ -177,6 +177,7 @@ protected function defineOptions() {
     $options['title'] = ['default' => ''];
     $options['default_argument_type'] = ['default' => 'fixed'];
     $options['default_argument_options'] = ['default' => []];
+    $options['no_url_cache_context'] = ['default' => FALSE];
     $options['summary_options'] = ['default' => []];
     $options['summary'] = [
       'contains' => [
@@ -269,6 +270,12 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
         ],
       ],
     ];
+    $form['no_url_cache_context'] = [
+      '#type' => 'checkbox',
+      '#title' => $this->t('No URL cache context'),
+      '#description' => $this->t('Check to remove the "url" cache context. Use only if the display is only added programatically.'),
+      '#default_value' => $this->options['no_url_cache_context'],
+    ];
 
     $options = [];
     $defaults = $this->defaultActions();
@@ -1333,7 +1340,9 @@ public function getCacheContexts() {
     // By definition arguments depends on the URL.
     // @todo Once contexts are properly injected into block views we could pull
     //   the information from there.
-    $contexts[] = 'url';
+    if (!$this->options['no_url_cache_context']) {
+      $contexts[] = 'url';
+    }
 
     // Asks all subplugins (argument defaults, argument validator and styles).
     if (($plugin = $this->getPlugin('argument_default')) && $plugin instanceof CacheableDependencyInterface) {
