diff --git a/changes/changelog.d/97.enhancement b/changes/changelog.d/97.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..21a552ae25d6c476c690b1874af07ebb8acf59b9
--- /dev/null
+++ b/changes/changelog.d/97.enhancement
@@ -0,0 +1 @@
+Queue shuffle now apply only to tracks after the current one (#97)
diff --git a/front/src/store/queue.js b/front/src/store/queue.js
index 07263da63315deb04fb7d819037bbd04ff669931..a864405cf675a1f90f485ae53845240c06fdaae5 100644
--- a/front/src/store/queue.js
+++ b/front/src/store/queue.js
@@ -41,7 +41,6 @@ export default {
         state.currentIndex += 1
       }
     }
-
   },
   getters: {
     currentTrack: state => {
@@ -141,7 +140,9 @@ export default {
       commit('ended', true)
     },
     shuffle ({dispatch, commit, state}) {
-      let shuffled = _.shuffle(state.tracks)
+      let toKeep = state.tracks.slice(0, state.currentIndex + 1)
+      let toShuffle = state.tracks.slice(state.currentIndex + 1)
+      let shuffled = toKeep.concat(_.shuffle(toShuffle))
       commit('player/currentTime', 0, {root: true})
       commit('tracks', [])
       dispatch('appendMany', {tracks: shuffled})
diff --git a/front/test/unit/specs/store/queue.spec.js b/front/test/unit/specs/store/queue.spec.js
index 5439362dc389e1731e65e038a58c247974a816b8..b445229ec44fa680be900eba1007dfe6aa1f6bbe 100644
--- a/front/test/unit/specs/store/queue.spec.js
+++ b/front/test/unit/specs/store/queue.spec.js
@@ -316,18 +316,18 @@ describe('store/queue', () => {
     })
     it('shuffle', (done) => {
       let _shuffle = sandbox.stub(_, 'shuffle')
-      let tracks = [1, 2, 3]
-      let shuffledTracks = [2, 3, 1]
+      let tracks = ['a', 'b', 'c', 'd', 'e']
+      let shuffledTracks = ['e', 'd', 'c']
       _shuffle.returns(shuffledTracks)
       testAction({
         action: store.actions.shuffle,
-        params: {state: {tracks: tracks}},
+        params: {state: {currentIndex: 1, tracks: tracks}},
         expectedMutations: [
           { type: 'player/currentTime', payload: 0 , options: {root: true}},
           { type: 'tracks', payload: [] }
         ],
         expectedActions: [
-          { type: 'appendMany', payload: {tracks: shuffledTracks} }
+          { type: 'appendMany', payload: {tracks: ['a', 'b'].concat(shuffledTracks)} }
         ]
       }, done)
     })