diff --git a/server/managers/PlaybackSessionManager.js b/server/managers/PlaybackSessionManager.js
index 76c140fd3a..dab142ab3b 100644
--- a/server/managers/PlaybackSessionManager.js
+++ b/server/managers/PlaybackSessionManager.js
@@ -175,6 +175,18 @@ class PlaybackSessionManager {
       // New session from local
       session = new PlaybackSession(sessionJson)
       session.deviceInfo = deviceInfo
+      // This makes sure that the client's metadata is preferred over the library's metadata, if available, to make a non-breaking change
+      if(session.mediaMetadata == null) {
+        // Only sync important metadata
+        const { title, subtitle, narrators, authors, author, series, genres, type } = libraryItem?.media?.metadata || {}
+        session.mediaMetadata = { title, subtitle, narrators, authors, author, series, genres, type }
+      }
+      if(session.displayTitle == null || session.displayTitle === '') {
+        session.displayTitle = libraryItem?.media?.metadata?.title ?? ''
+      }
+      if(session.displayAuthor == null || session.displayAuthor === '') {
+        session.displayAuthor = libraryItem?.media?.metadata?.authors?.map(a => a.name).join(', ') ?? libraryItem?.media?.metadata?.author ?? ''
+      }
       session.duration = libraryItem.media.getPlaybackDuration(sessionJson.episodeId)
 
       Logger.debug(`[PlaybackSessionManager] Inserting new session for "${session.displayTitle}" (${session.id})`)