diff --git a/core/includes/batch.inc b/core/includes/batch.inc
index 786ee3c..ffcb75c 100644
--- a/core/includes/batch.inc
+++ b/core/includes/batch.inc
@@ -164,6 +164,7 @@ function _batch_progress_page() {
     '#percent' => $percentage,
     '#message' => $message,
     '#label' => $label,
+    '#animate' => TRUE,
     '#attached' => array(
       'drupal_add_html_head' => array(
         array(
diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 47fda81..041669e 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -2282,7 +2282,7 @@ function drupal_common_theme() {
       'template' => 'feed-icon',
     ),
     'progress_bar' => array(
-      'variables' => array('label' => NULL, 'percent' => NULL, 'message' => NULL),
+      'variables' => array('label' => NULL, 'percent' => NULL, 'message' => NULL, 'animate' => TRUE),
       'template' => 'progress-bar',
     ),
     'indentation' => array(
@@ -2396,3 +2396,15 @@ function drupal_common_theme() {
     ),
   );
 }
+
+/**
+ * Implements hook_preprocess_HOOK() for the progress bar.
+ */
+function template_preprocess_progress_bar(&$variables) {
+  // Allow ajax version of progress to be animated.
+  // @see progress.js
+  $variables['#attached']['js'][] = array(
+    'type' => 'setting',
+    'data' => array('progressBarAnimate' => $variables['animate']),
+  );
+}
diff --git a/core/misc/progress.js b/core/misc/progress.js
index 52127e6..886f1bd 100644
--- a/core/misc/progress.js
+++ b/core/misc/progress.js
@@ -25,6 +25,9 @@
       '<div class="progress__track"><div class="progress__bar"></div></div>' +
       '<div class="progress__percentage"></div>' +
       '<div class="progress__description">&nbsp;</div>');
+    if (drupalSettings.progressBarAnimate) {
+      $(this.element).find('div.progress__bar').addClass('progress__bar--animate');
+    }
   };
 
   $.extend(Drupal.ProgressBar.prototype, {
diff --git a/core/modules/system/css/system.theme.css b/core/modules/system/css/system.theme.css
index bf14339..be2129f 100644
--- a/core/modules/system/css/system.theme.css
+++ b/core/modules/system/css/system.theme.css
@@ -328,6 +328,9 @@ th.checkbox {
   padding: 0 1px;
   height: 16px;
   border-radius: 10em;
+}
+
+.progress__bar--animate {
   -webkit-animation: animate-stripes 3s linear infinite;
   -moz-animation: animate-stripes 3s linear infinite;
   -webkit-transition: width 0.5s ease-out;
diff --git a/core/modules/system/templates/progress-bar.html.twig b/core/modules/system/templates/progress-bar.html.twig
index 885a80f..93852df 100644
--- a/core/modules/system/templates/progress-bar.html.twig
+++ b/core/modules/system/templates/progress-bar.html.twig
@@ -9,6 +9,10 @@
  * - label: The label of the working task.
  * - percent: The percentage of the progress.
  * - message: A string containing information to be displayed.
+ * - animate: If set, enable the progress bar animation.
+ *
+ * @see template_preprocess_progress_bar()
+ * @see progress.js
  *
  * @ingroup themeable
  */
@@ -17,7 +21,7 @@
   {% if label %}
     <div class="progress__label">{{ label }}</div>
   {% endif %}
-  <div class="progress__track"><div class="progress__bar" style="width: {{ percent }}%"></div></div>
+  <div class="progress__track"><div class="progress__bar{% if animate %} progress__bar--animate{% endif %}" style="width: {{ percent }}%"></div></div>
   <div class="progress__percentage">{{ percent }}%</div>
   <div class="progress__description">{{ message }}</div>
 </div>
