diff --git a/changes/changelog.d/1190.enhancement b/changes/changelog.d/1190.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..b64dc9d9205cdf69a212b65f5a3ae194d2a80a73
--- /dev/null
+++ b/changes/changelog.d/1190.enhancement
@@ -0,0 +1 @@
+Improved shuffle behaviour (#1190)
\ No newline at end of file
diff --git a/front/src/store/queue.js b/front/src/store/queue.js
index a5ab856a44d8088a4b3c0c986f0ab65a845c474a..5acff3efb3bae9a43288b2f68c84eab5be9bb1d9 100644
--- a/front/src/store/queue.js
+++ b/front/src/store/queue.js
@@ -158,16 +158,15 @@ export default {
       // so we replay automatically on next track append
       commit('ended', true)
     },
-    shuffle ({dispatch, commit, state}, callback) {
-      let toKeep = state.tracks.slice(0, state.currentIndex + 1)
-      let toShuffle = state.tracks.slice(state.currentIndex + 1)
-      let shuffled = toKeep.concat(_.shuffle(toShuffle))
+    async shuffle ({dispatch, commit, state}, callback) {
+      let shuffled = _.shuffle(state.tracks)
       commit('tracks', [])
       let params = {tracks: shuffled}
       if (callback) {
         params.callback = callback
       }
-      dispatch('appendMany', params)
+      await dispatch('appendMany', params)
+      await dispatch('currentIndex', 0)
     }
   }
 }