diff --git a/modules/kraken/plugins/ImageAPIOptimizeProcessorKraken.inc b/modules/kraken/plugins/ImageAPIOptimizeProcessorKraken.inc
index fdd023a..457d734 100644
--- a/modules/kraken/plugins/ImageAPIOptimizeProcessorKraken.inc
+++ b/modules/kraken/plugins/ImageAPIOptimizeProcessorKraken.inc
@@ -5,6 +5,7 @@ class ImageAPIOptimizeProcessorKraken implements ImageAPIOptimizeProcessorConfig
   protected $api_key;
   protected $api_secret;
   protected $lossy = TRUE;
+  protected $quality;
 
   /**
    * ImageAPIOptimizeProcessorReSmushIt constructor.
@@ -19,6 +20,9 @@ class ImageAPIOptimizeProcessorKraken implements ImageAPIOptimizeProcessorConfig
     if (isset($data['lossy'])) {
       $this->lossy = $data['lossy'];
     }
+    if (isset($data['quality'])) {
+      $this->quality = $data['quality'];
+    }
   }
 
   public function configForm() {
@@ -52,6 +56,14 @@ class ImageAPIOptimizeProcessorKraken implements ImageAPIOptimizeProcessorConfig
         '#type' => 'checkbox',
         '#default_value' => $this->lossy,
       );
+
+      $form['quality'] = array(
+        '#title' => t('Quality level'),
+        '#description' => t('If using lossy compression, optionally specify the quality level. Default is about 90.'),
+        '#type' => 'textfield',
+        '#default_value' => $this->quality,
+        '#element_validate' => 'element_validate_number',
+      );
     }
 
     return $form;
@@ -126,6 +138,10 @@ class ImageAPIOptimizeProcessorKraken implements ImageAPIOptimizeProcessorConfig
         'lossy' => (bool) $this->isLossy(),
       );
 
+      if (!(bool) $this->isLossy() && !empty($this->quality)) {
+        $params['quality'] = $this->quality;
+      }
+
       // Send the request to Kraken.
       $data = $kraken->upload($params);
 
