diff --git a/changes/changelog.d/871.bugfix b/changes/changelog.d/871.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..153b45bfcc0d585eee692c95721ba1f2d85ce809
--- /dev/null
+++ b/changes/changelog.d/871.bugfix
@@ -0,0 +1 @@
+Fixed broken URL to artist and album on album and track pages (#871)
diff --git a/front/src/components/library/AlbumBase.vue b/front/src/components/library/AlbumBase.vue
index 2b3c978bced83a60574a49380e786e7312828182..016be2c3779e99ddc14c9dcd1ca585ea8e462a59 100644
--- a/front/src/components/library/AlbumBase.vue
+++ b/front/src/components/library/AlbumBase.vue
@@ -192,7 +192,7 @@ export default {
     subtitle () {
       let route = this.$router.resolve({name: 'library.artists.detail', params: {id: this.object.artist.id }})
       let msg = this.$npgettext('Content/Album/Header.Title', 'Album containing %{ count } track, by <a class="internal" href="%{ artistUrl }">%{ artist }</a>', 'Album containing %{ count } tracks, by <a class="internal" href="%{ artistUrl }">%{ artist }</a>', this.object.tracks.length)
-      return this.$gettextInterpolate(msg, {count: this.object.tracks.length, artist: this.object.artist.name, artistUrl: route.location.path})
+      return this.$gettextInterpolate(msg, {count: this.object.tracks.length, artist: this.object.artist.name, artistUrl: route.href})
     }
   },
   watch: {
diff --git a/front/src/components/library/TrackBase.vue b/front/src/components/library/TrackBase.vue
index 4edd00c5de9ae92f32254636bec9bc19f4643751..2f3cc51a9d74b1b855e2edefa6288704a6bcb0db 100644
--- a/front/src/components/library/TrackBase.vue
+++ b/front/src/components/library/TrackBase.vue
@@ -210,11 +210,11 @@ export default {
     },
     albumUrl () {
       let route = this.$router.resolve({name: 'library.albums.detail', params: {id: this.track.album.id }})
-      return route.location.path
+      return route.href
     },
     artistUrl () {
       let route = this.$router.resolve({name: 'library.artists.detail', params: {id: this.track.artist.id }})
-      return route.location.path
+      return route.href
     },
     headerStyle() {
       if (!this.cover) {