diff --git a/server/djrandom/frontend/static/js/djr/backend.js b/server/djrandom/frontend/static/js/djr/backend.js
index c2c35147f08edb14a6968be9b6d5c8fa8272f0ff..2bdabd1007260d5ca5192c335a1bb9cfa2aa6897 100644
--- a/server/djrandom/frontend/static/js/djr/backend.js
+++ b/server/djrandom/frontend/static/js/djr/backend.js
@@ -224,6 +224,17 @@ djr.Backend.prototype.nowPlaying = function(song, old_songs) {
           });
 };
 
+/**
+ * Report that we skipped a song.
+ *
+ * @param {string} song SHA1 hash of the song that was skipped
+djr.Backend.prototype.skipSong = function(song) {
+  $.ajax({url: '/json/skip',
+          data: {'cur': song},
+          type: 'POST'
+          });
+};
+
 /**
   * Request N never played songs
   *
diff --git a/server/djrandom/frontend/static/js/djr/djr.js b/server/djrandom/frontend/static/js/djr/djr.js
index 8f4a9024f7058282bcdb94f1191cd35c9c98c229..e95be9ee069b1b837613300bbd0609aa3e4d0564 100644
--- a/server/djrandom/frontend/static/js/djr/djr.js
+++ b/server/djrandom/frontend/static/js/djr/djr.js
@@ -43,6 +43,9 @@ djr.init = function (userid) {
   });
 
   // Add onclick hooks to the playlist controls.
+  $('#skipbtn').click(function() {
+    djr.player().skipSong();
+  });
   $('#playlistClearBtn').click(function() {
     djr.player().clearPlaylist();
   });
diff --git a/server/djrandom/frontend/static/js/djr/player.js b/server/djrandom/frontend/static/js/djr/player.js
index 3f6bbe62eebfdb8b62219b01778232994de7cab7..08ae83c296108fe6e7957147009471f5bfe8fb5d 100644
--- a/server/djrandom/frontend/static/js/djr/player.js
+++ b/server/djrandom/frontend/static/js/djr/player.js
@@ -351,6 +351,12 @@ djr.Player.prototype.play = function(song) {
   this.backend.nowPlaying(song, this.old_songs);
 };
 
+// Skip the current song, play the next one.
+djr.Player.prototype.skipSong = function() {
+  this.backend.skipSong(this.cur_song);
+  this.nextSong();
+};
+
 // Start playing the next song.
 djr.Player.prototype.nextSong = function() {
   if (this.auto_extend && this.playlist.isLastSong(this.cur_song)) {
diff --git a/server/djrandom/frontend/templates/index.html b/server/djrandom/frontend/templates/index.html
index 6a50d5f79109af243ff0319f872803713217e8e1..b1713de34e0bee85e855a96b78c6d31c22821f25 100644
--- a/server/djrandom/frontend/templates/index.html
+++ b/server/djrandom/frontend/templates/index.html
@@ -108,7 +108,8 @@ $(document).ready(function() {
 
         <div id="metasongcontrols" class="buttonbox">
           <br/>
-          <a id="pllistbtn">Playlists</a>
+          <a id="skipbtn"><b>Next</b></a>
+          | <a id="pllistbtn">Playlists</a>
           | <a id="lyricsbtn">Lyrics</a>
           | <a id="wikibtn">Wikipedia</a>
           | <a id="lastfmbtn">Song Info</a>