Add playback speed controls to plex web player with keyboard shortcuts
This script was created way before plex announced support for playback speed controls on May 15 2024. Besides, this script supports a few neat features that may make your life a little bit easier. Keep reading :)
This Script | Native Plex | |
---|---|---|
More speed options to choose from | ✅ (cycle through with ,.<> keys: 0.5, 0.8, 1, 1.2, 1.4, 1.6, 1.8, 2, 2.5, 3, 3, 5, 4, 5, 6, 7, 8, 9, 10, 15, 20 hot key with number keys: 1, 1.5, 2, 3, 4, 5, 7, 8, 10) | ❌ (0.5x, 0.75x, Normal, 1.25x, 1.5x, 1.75x, and 2x) |
Keyboard shortcuts | ✅ (cycle through with ,.<> keys or hot key with number keys, on top of mouse clicking buttons) | ❌ (mouse clicking only) |
Does not require plex-pass | ✅ | ❌ |
Support browser clients (incl. iOS devices) | ✅ | ✅ |
Support non-browser clients | ❌ | ✅ |
There're multiple ways to alter the playback speeds:
Use <
or >
or ,
or .
keys on the keyboard to decrease / increase speeds. This control cycles through the following speeds:
Use number keys (1-9) to quickly set a speed. This control maps the numbers with speeds as follows:
number key | mapped to speed |
---|---|
1 | 1 |
2 | 1.5 |
3 | 2 |
4 | 3 |
5 | 4 |
6 | 5 |
7 | 7 |
8 | 8 |
9 | 10 |
This is the best option if you load the plex web client off your plex server from many different devices & browser profiles.
The following steps assumes the plex server is deployed with linuxserver/plex
docker image. Installation for other deployment options should be similar.
Install and update may be automated as follows:
# inject_Plex_Playback_Speed_controls.shcd /usr/lib/plexmediaserver/Resources/Plug-ins-*/WebClient.bundle/Contents/Resourceswget -O "js/PlexPlaybackSpeed.js" "https://gist.githubusercontent.com/ZigZagT/b992bda82b5f7a2c9d214110273d3f3c/raw/Plex%2520Playback%2520Speed.user.js"sed -i 's#</head>#<script src="/web/js/PlexPlaybackSpeed.js"></script></head>#' index.html
inject_Plex_Playback_Speed_controls.sh
.chmod a+x inject_Plex_Playback_Speed_controls.sh
inject_Plex_Playback_Speed_controls.sh
script into container as start up script:# docker-compose.yamlservices:plex:image: linuxserver/plextmpfs:- /tmpvolumes:# ... other volumes ...- /path/to/inject_Plex_Playback_Speed_controls.sh:/etc/cont-init.d/99-inject_Plex_Playback_Speed_controls.shdevices:- /dev/dri:/dev/drirestart: always
This method keeps the scripts up-to-date whenever the plex server restarts.
The automated script mentioned above essentially performs the following tasks:
linuxserver/plex:1.40.0
the WebClient bundle is located at /usr/lib/plexmediaserver/Resources/Plug-ins-c29d4c0c8/WebClient.bundle/Contents/Resources
.Plex Playback Speed.user.js
file into the js
folder..user
part from the file extension. Otherwise some browser user script extensions may mistakenly hijack the script request.index.html
file, add a script tag that points to the script file. The path shuold be prefixed with /web
. For example, if script file is stored at js/PlexPlaybackSpeed.js
, the <script>
tag should be <script src="/web/js/PlexPlaybackSpeed.js"></script>
The script will not update automatically with this installation.
Save Location
setting configured.Save Location
of your choice.Try disable the Direct Play
option and leave Direct Stream
enabled in the Plex Web - Debug
settings.