diff --git a/src/js/html5.js b/src/js/html5.js
index <HASH>..<HASH> 100644
--- a/src/js/html5.js
+++ b/src/js/html5.js
@@ -82,9 +82,6 @@ const html5 = {
                 triggerEvent.call(player, player.media, 'qualitychange', false, {
                     quality: input,
                 });
-
-                // Save to storage
-                player.storage.set({ quality: input });
             },
         });
     },
diff --git a/src/js/plyr.js b/src/js/plyr.js
index <HASH>..<HASH> 100644
--- a/src/js/plyr.js
+++ b/src/js/plyr.js
@@ -692,10 +692,15 @@ class Plyr {
             config.default,
         ].find(is.number);
 
+        let updateStorage = true;
+
         if (!options.includes(quality)) {
             const value = closest(options, quality);
             this.debug.warn(`Unsupported quality option: ${quality}, using ${value} instead`);
             quality = value;
+
+            // Don't update storage if quality is not supported
+            updateStorage = false;
         }
 
         // Update config
@@ -703,6 +708,11 @@ class Plyr {
 
         // Set quality
         this.media.quality = quality;
+
+        // Save to storage
+        if (updateStorage) {
+            this.storage.set({ quality: quality });
+        }
     }
 
     /**
Only save quality setting when it's updated by the user. Fixes bug in html5 player where it would override the settings if the current video does not support the given quality.