Short: OpenSubtitles download on Android TV app saves subtitles to wrong episode after autoplay
Environment
- Plex Media Server: 1.43.1.10561-69cc2fd8d (beta), Linux
- Device: Android TV, Android 12 (checked for system updates 2026-03-24, up to date)
- Client: Plex for Android 10.30.8.4222 (58d01a81) (updated 2026-03-24 from Play Store)
Summary
After autoplay to the next episode, downloading a subtitle via the built-in subtitle
search (OpenSubtitles, proxied through metadata.provider.plex.tv) saves it to the
previous episode instead of the current one. The browse/search GET correctly targets
the current episode - only the download PUT uses the stale episode ID.
After closing player and playing episode again (just using back button, and starting play again) it works correctly.
Tried it on app.plex.tv - it works correctly there. Couldn’t test on Android (non-TV) app - for some reason autoplay didn’t work correctly at all for me there, and it looks like prerequisite.
Same issue was also present when I tried on older version of the application, but new one shows the same thing.
Steps to reproduce
- Play episode N and download any subtitles from OpenSubtitles for it
- Play episode N to completion, let episode N+1 autoplay
- Select and download a subtitle for new episode using built-in OpenSubtitles download
- Watch it report failure for adding subtitles with generic message (“something went wrong”).
Exploring server logs for it, it looks like player is correctly downloading subtitles and attempts to save them, but instead of making PUT request with N+1 episode ID it uses previous (Nth) episode ID. Search GET request is fine, uses N+1 episode ID.
Also going to episode N, it had embedded subtitles for episode N+1, so the PUT was successful - just not proper episode.
# Episode N (13880) playing - correct download:
22:55:13 GET /library/metadata/13880/subtitles - 200
22:55:16 PUT /library/metadata/13880/subtitles - 200
# Episode N+1 (13881) autoplayed - buggy download:
22:59:42 GET /library/metadata/13881/subtitles - 200 - browse correct
22:59:45 PUT /library/metadata/13880/subtitles - 200 - wrong episode ID!
# After manually reopening N+1:
23:00:13 GET /library/metadata/13881/subtitles - 200
23:00:16 PUT /library/metadata/13881/subtitles - 200 - now it uses correct episode ID
Also raw logs if needed, with some minor redactions, around the issue.
Please keep in mind that I give it as one example, I was able to reproduce that issue multiple times.
Nth episode download:
Mar 24, 2026 22:55:08.801 [140244724992824] DEBUG - [Req#ef5a] [Now] Adding 2 sessions.
Mar 24, 2026 22:55:10.566 [140244607302456] DEBUG - Request: [192.168.161.22:34440 (Subnet)] GET /:/timeline?audioStreamID=110889&bufferedTime=160643&context=source%3Ahub.tv.inprogress&duration=2812000&guid=plex%3A%2F%2Fepisode%2F5d9c128be264b7001fcab80a&key=%2Flibrary%2Fmetadata%2F13880&playbackTime=22719&playQueueItemID=88955&ratingKey=13880&state=paused&time=2583372&token=xxxxxxxxxxxxxxxxxxxx (10 live) #ef7c TLS GZIP Signed-in Token (Triluch)
Mar 24, 2026 22:55:10.566 [140244607302456] DEBUG - [Req#ef7c] Client [<client-id-redacted>] reporting timeline state paused, progress of 2583372/2812000ms for guid=plex://episode/5d9c128be264b7001fcab80a, playbackTime=22719ms ratingKey=13880 url=, key=/library/metadata/13880, containerKey=, metadataId=13880, source=
Mar 24, 2026 22:55:10.567 [140244607302456] DEBUG - [Req#ef7c] [Now] User is Triluch (ID: 1)
Mar 24, 2026 22:55:10.567 [140244607302456] DEBUG - [Req#ef7c] [Now] Device is Android (NebulaLaser).
Mar 24, 2026 22:55:10.567 [140244607302456] DEBUG - [Req#ef7c] [Now] Profile is Android
Mar 24, 2026 22:55:10.567 [140244607302456] DEBUG - [Req#ef7c] [Now] Updated play state for /library/metadata/13880.
Mar 24, 2026 22:55:10.567 [140244607302456] DEBUG - [Req#ef7c] Statistics: (<client-id-redacted>) Reporting active playback in state 1 of type 4 (scrobble: 0) for account 1
Mar 24, 2026 22:55:13.166 [140244607302456] DEBUG - Request: [192.168.161.22:34440 (Subnet)] GET /library/metadata/13880/subtitles?forced=0&hearingImpaired=1&language=en (9 live) #ef9c TLS GZIP Signed-in Token (Triluch)
Mar 24, 2026 22:55:13.232 [140244607302456] DEBUG - [Req#ef9c] Added new metadata item () with ID 15320
Mar 24, 2026 22:55:13.232 [140244607302456] DEBUG - [Req#ef9c] Updating metadata item (save) () with ID 15320
Mar 24, 2026 22:55:13.233 [140244607302456] DEBUG - [Req#ef9c] Updating part with ID=46193 []
Mar 24, 2026 22:55:15.173 [140244706007864] DEBUG - [Req#eef6/ViewStateSync] Starting
Mar 24, 2026 22:55:15.173 [140244706007864] DEBUG - [Req#eef6/ViewStateSync] Got token for user <redacted>
Mar 24, 2026 22:55:15.173 [140244706007864] DEBUG - [Req#eef6/ViewStateSync] Got token for user <redacted>
Mar 24, 2026 22:55:15.173 [140244706007864] DEBUG - [Req#eef6/ViewStateSync] Got token for user <redacted>
Mar 24, 2026 22:55:15.173 [140244706007864] DEBUG - [Req#eef6/ViewStateSync] Got token for user <redacted>
Mar 24, 2026 22:55:15.173 [140244706007864] DEBUG - [Req#eef6/ViewStateSync] Got token for user <redacted>
Mar 24, 2026 22:55:15.173 [140244706007864] DEBUG - [Req#eef6/ViewStateSync/HCl#1bb] HTTP requesting GET https://plex.tv/api/v2/server/users/<plex-user-id>/view_state_sync
Mar 24, 2026 22:55:15.587 [140244720773944] DEBUG - [HttpClient/HCl#1bb] HTTP/1.1 (0.4s) 200 response from GET https://plex.tv/api/v2/server/users/<plex-user-id>/view_state_sync
N+1 episode download after letting it autoplay (there was also some pause during that, but didn’t seem to affect any other try)
Mar 24, 2026 22:59:42.233 [140244724992824] DEBUG - [Req#f1b6] Client [<client-id-redacted>] reporting timeline state playing, progress of 133417/2812000ms for guid=plex://episode/5d9c128be264b7001fcab80e, playbackTime=19074ms ratingKey=13881 url=, key=/library/metadata/13881, containerKey=, metadataId=13881, source=
Mar 24, 2026 22:59:42.234 [140244724992824] DEBUG - [Req#f1b6] Play progress on 13881 'The A-Team S02E13 The Maltese Cow' - got played 133417 ms by account 1!
Mar 24, 2026 22:59:42.234 [140244724992824] DEBUG - [Req#f1b6] [Now] User is Triluch (ID: 1)
Mar 24, 2026 22:59:42.234 [140244724992824] DEBUG - [Req#f1b6] [Now] Device is Android (NebulaLaser).
Mar 24, 2026 22:59:42.234 [140244724992824] DEBUG - [Req#f1b6] [Now] Profile is Android
Mar 24, 2026 22:59:42.234 [140244724992824] DEBUG - [Req#f1b6] [Now] Updated play state for /library/metadata/13881.
Mar 24, 2026 22:59:42.234 [140244724992824] DEBUG - [Req#f1b6] Statistics: (<client-id-redacted>) Reporting active playback in state 0 of type 4 (scrobble: 0) for account 1
Mar 24, 2026 22:59:42.389 [140244607302456] DEBUG - Request: [192.168.161.22:34480 (Subnet)] GET /library/metadata/13881/subtitles?forced=0&hearingImpaired=1&language=en (13 live) #f1ca TLS GZIP Signed-in Token (Triluch)
Mar 24, 2026 22:59:42.459 [140244607302456] DEBUG - [Req#f1ca] Added new metadata item () with ID 15321
Mar 24, 2026 22:59:42.459 [140244607302456] DEBUG - [Req#f1ca] Updating metadata item (save) () with ID 15321
Mar 24, 2026 22:59:42.460 [140244607302456] DEBUG - [Req#f1ca] Updating part with ID=46194 []
Mar 24, 2026 22:59:45.991 [140244724992824] DEBUG - Request: [192.168.161.22:34480 (Subnet)] PUT /library/metadata/13880/subtitles?codec=srt&key=%2Flibrary%2Fstreams%2F149860&language=eng&providerTitle=OpenSubtitles (13 live) #f1d3 TLS GZIP Signed-in Token (Triluch)
Mar 24, 2026 22:59:45.994 [140244724992824] DEBUG - [Req#f1d3] Activity: registered new activity 78d71d52-e88e-4e3e-9b77-3b0a1763f032 - "Downloading Subtitle"
Mar 24, 2026 22:59:45.994 [140244667071288] DEBUG - [Req#f1d3] Downloading subtitle from https://metadata.provider.plex.tv/library/streams/4850656?X-Plex-Api-Token=xxxxxxxxxxxxxxxxxxxx
Mar 24, 2026 22:59:46.058 [140244667071288] DEBUG - [Req#f1d3] Got a subtitle of 38389 bytes.
Mar 24, 2026 22:59:46.060 [140244667071288] DEBUG - [Req#f1d3] Subtitle: Saved sub of 16395 bytes to blob db.
Mar 24, 2026 22:59:46.060 [140244667071288] DEBUG - [Req#f1d3] Activity: Ended activity 78d71d52-e88e-4e3e-9b77-3b0a1763f032.
Mar 24, 2026 22:59:51.014 [140244607302456] DEBUG - Request: [192.168.161.22:34480 (Subnet)] GET /library/metadata/13881 (13 live) #f1da TLS GZIP Signed-in Token (Triluch)
Mar 24, 2026 22:59:51.016 [140244607302456] DEBUG - MetadataCounterCache: rebuilding full counter cache for totals
Mar 24, 2026 22:59:51.020 [140244607302456] DEBUG - We're going to try to auto-select an audio stream for account 1.
Mar 24, 2026 22:59:51.020 [140244607302456] DEBUG - Selecting best audio stream for part ID 40578 (language: pl)
Mar 24, 2026 22:59:51.020 [140244607302456] DEBUG - Audio Stream: 110891, Subtitle Stream: 149850
Correct download later:
Mar 24, 2026 23:00:06.493 [140244724992824] DEBUG - We're going to try to auto-select an audio stream for account 1.
Mar 24, 2026 23:00:06.493 [140244724992824] DEBUG - Selecting best audio stream for part ID 40598 (language: pl)
Mar 24, 2026 23:00:06.493 [140244724992824] DEBUG - We're going to try to auto-select a subtitle for account 1.
Mar 24, 2026 23:00:06.493 [140244724992824] DEBUG - Audio Stream: 110931, Subtitle Stream: -1
Mar 24, 2026 23:00:07.296 [140244607302456] DEBUG - Request: [192.168.161.22:34482 (Subnet)] GET /photo/:/transcode?width=1040&url=http%3A%2F%2F127.0.0.1%3A32400%2Flibrary%2Fmetadata%2F13882%2Fthumb%2F1728432157&height=1040&quality=90 (11 live) #f246 TLS GZIP Signed-in Token (Triluch)
Mar 24, 2026 23:00:07.476 [140244724992824] DEBUG - Request: [192.168.161.22:34500 (Subnet)] GET /photo/:/transcode?width=1040&url=http%3A%2F%2F127.0.0.1%3A32400%2Flibrary%2Fmetadata%2F13881%2Fthumb%2F1728432100&height=1040&quality=90 (14 live) #f250 TLS GZIP Signed-in Token (Triluch)
Mar 24, 2026 23:00:07.488 [140244607302456] DEBUG - Request: [192.168.161.22:34502 (Subnet)] GET /photo/:/transcode?width=1040&url=http%3A%2F%2F127.0.0.1%3A32400%2Flibrary%2Fmetadata%2F13883%2Fthumb%2F1728432084&height=1040&quality=90 (14 live) #f264 TLS GZIP Signed-in Token (Triluch)
Mar 24, 2026 23:00:07.510 [140244724992824] DEBUG - Request: [192.168.161.22:34504 (Subnet)] GET /photo/:/transcode?width=1040&url=http%3A%2F%2F127.0.0.1%3A32400%2Flibrary%2Fmetadata%2F13884%2Fthumb%2F1728432147&height=1040&quality=90 (14 live) #f265 TLS GZIP Signed-in Token (Triluch)
Mar 24, 2026 23:00:13.439 [140244654414648] DEBUG - Statistics: Flushing 9 expired bandwidth entries, 2 expired media entries.
Mar 24, 2026 23:00:13.575 [140244607302456] DEBUG - Request: [192.168.161.22:34494 (Subnet)] GET /library/metadata/13881/subtitles?forced=0&hearingImpaired=1&language=en (14 live) #f261 TLS GZIP Signed-in Token (Triluch)
Mar 24, 2026 23:00:13.595 [140244607302456] DEBUG - [Req#f261] Added new metadata item () with ID 15322
Mar 24, 2026 23:00:13.595 [140244607302456] DEBUG - [Req#f261] Updating metadata item (save) () with ID 15322
Mar 24, 2026 23:00:13.596 [140244607302456] DEBUG - [Req#f261] Updating part with ID=46195 []
Mar 24, 2026 23:00:14.540 [140244607302456] DEBUG - Request: [192.168.161.22:34494 (Subnet)] GET /:/timeline?audioStreamID=110891&bufferedTime=430168&context=source%3Ahub.tv.inprogress&duration=2806804&guid=plex%3A%2F%2Fepisode%2F5d9c128be264b7001fcab80e&key=%2Flibrary%2Fmetadata%2F13881&playbackTime=8629&playQueueItemID=89027&ratingKey=13881&state=playing&time=244498&token=xxxxxxxxxxxxxxxxxxxx (14 live) #f276 TLS GZIP Signed-in Token (Triluch)
Mar 24, 2026 23:00:14.541 [140244607302456] DEBUG - [Req#f276] Client [<client-id-redacted>] reporting timeline state playing, progress of 244498/2806804ms for guid=plex://episode/5d9c128be264b7001fcab80e, playbackTime=8629ms ratingKey=13881 url=, key=/library/metadata/13881, containerKey=, metadataId=13881, source=
Mar 24, 2026 23:00:14.541 [140244607302456] DEBUG - [Req#f276] Play progress on 13881 'The A-Team S02E13 The Maltese Cow' - got played 244498 ms by account 1!
Mar 24, 2026 23:00:14.541 [140244607302456] DEBUG - [Req#f276] [Now] User is Triluch (ID: 1)
Mar 24, 2026 23:00:14.541 [140244607302456] DEBUG - [Req#f276] [Now] Device is Android (NebulaLaser).
Mar 24, 2026 23:00:14.541 [140244607302456] DEBUG - [Req#f276] [Now] Profile is Android
Mar 24, 2026 23:00:14.541 [140244607302456] DEBUG - [Req#f276] [Now] Updated play state for /library/metadata/13881.
Mar 24, 2026 23:00:14.541 [140244607302456] DEBUG - [Req#f276] Statistics: (<client-id-redacted>) Reporting active playback in state 0 of type 4 (scrobble: 0) for account 1
Mar 24, 2026 23:00:16.720 [140244724992824] DEBUG - Request: [192.168.161.22:34494 (Subnet)] PUT /library/metadata/13881/subtitles?codec=srt&key=%2Flibrary%2Fstreams%2F149866&language=eng&providerTitle=OpenSubtitles (14 live) #f27d TLS GZIP Signed-in Token (Triluch)
Mar 24, 2026 23:00:16.723 [140244724992824] DEBUG - [Req#f27d] Activity: registered new activity a066af89-2bb6-45bc-9cde-cb0a09cbff7b - "Downloading Subtitle"
Mar 24, 2026 23:00:16.723 [140244679166776] DEBUG - [Req#f27d] Downloading subtitle from https://metadata.provider.plex.tv/library/streams/4850656?X-Plex-Api-Token=xxxxxxxxxxxxxxxxxxxx
Mar 24, 2026 23:00:16.755 [140244679166776] DEBUG - [Req#f27d] Got a subtitle of 38389 bytes.
Mar 24, 2026 23:00:16.757 [140244679166776] DEBUG - [Req#f27d] Subtitle: Saved sub of 16395 bytes to blob db.
Mar 24, 2026 23:00:16.757 [140244679166776] DEBUG - [Req#f27d] Activity: Ended activity a066af89-2bb6-45bc-9cde-cb0a09cbff7b.
Mar 24, 2026 23:00:21.738 [140244607302456] DEBUG - Request: [192.168.161.22:34494 (Subnet)] GET /library/metadata/13881 (13 live) #f284 TLS GZIP Signed-in Token (Triluch)
Mar 24, 2026 23:00:21.740 [140244607302456] DEBUG - MetadataCounterCache: rebuilding full counter cache for totals
Mar 24, 2026 23:00:21.744 [140244607302456] DEBUG - We're going to try to auto-select an audio stream for account 1.
Mar 24, 2026 23:00:21.744 [140244607302456] DEBUG - Selecting best audio stream for part ID 40578 (language: pl)
Mar 24, 2026 23:00:21.744 [140244607302456] DEBUG - Audio Stream: 110891, Subtitle Stream: 149868
Mar 24, 2026 23:00:21.764 [140244724992824] DEBUG - Request: [192.168.161.22:34494 (Subnet)] GET /playQueues/2200?center=89027&includeChapters=1&repeat=0 (13 live) #f28c TLS GZIP Signed-in Token (Triluch)
Mar 24, 2026 23:00:21.764 [140244724992824] DEBUG - [Req#f28c] PlayQueue: total generated: 71, before cursor: 0, after cursor: 70
Mar 24, 2026 23:00:21.764 [140244724992824] DEBUG - [Req#f28c] PlayQueue: No need to refresh, active window is operational.