Your Raspberry Pi is a better Plex server than you think (but change these 3 settings)
A Raspberry Pi is a decent self-hosting server if you're careful about what services you host. Unfortunately, Plex's default settings tend to be too much for even a Raspberry Pi 5 to handle.
Fortunately, with a little bit of tinkering and some planning in advance, you can get a Raspberry Pi working as a Plex server. These are the settings you need to change.
Why a Raspberry Pi sometimes struggles with Plex
Transcoding is a problem
Sydney Louw Butler/How-To Geek
The Raspberry Pi has a bit of a bad reputation as a Plex server, and for a good reason.
It doesn't have the right hardware for hardware-accelerated transcoding like you see with Intel's Quick Sync, and it lacks the power to handle heavy transcoding loads by the "brute force" approach. If you set up a Plex server expecting a low-power single-board computer to simultaneously transcode high-resolution video files, both you and your Raspberry Pi are going to have a bad time.
However, that also presents a potential solution: completely avoid transcoding.
When Plex server sends media to a client, it can choose one of three approaches.
-
Direct Play— the client device (like a TV) handles the original file and the server just provides the data.
-
Direct Stream— Plex might swap the container but leaves the video stream alone.
-
Transcoding— Plex converts the video, audio, or resolution on the fly, which is exactly what kills a Raspberry Pi's performance.
However, if you stick to Direct Play, the Pi actually works just fine. You aren't trying to force the hardware to transcode video in real time, you're just asking it to transmit a media file over your network, which is something it can do easily.
The Plex settings that allow a Pi to thrive
Disable transcoding
The single most important setting to change is video stream transcoding. Head to Account Settings > Transcoder (Under Settings), then click "Advanced."
Once you're there, toggle on "Disable video stream transcoding."
When you do that, you are preventing Plex from performing the kind of workload that makes it struggle. If a client device can't handle the original file, playback will simply fail.
Luckily, most modern playback devices, like phones, tablets, your web browser, and your TV, will work just fine with most common video formats .
Keep video in original quality
A lot of unwanted transcoding actually starts on the client side. Your Raspberry Pi might be perfectly capable of sending the original file, but your TV app, phone, tablet, or streaming stick could be asking Plex for a low-quality version instead. When that happens, Plex has to generate that lower quality version in real time, which is exactly the kind of workload you want to avoid on a Raspberry Pi.
To prevent this from happening, you need to ensure that every Plex client you use has the local streaming quality set to "Original" or "Maximum."
That setting could pose a problem if your internet speed isn't fast enough to handle that much data for remote streaming. The only way to know for sure is to try it first.
Use SRT subtitles
Subtitles, in rare situations, can also accidentally trigger a workload that the Pi isn't able to handle. If you notice a movie plays smoothly until you enable subtitles and then starts buffering, the subtitle format is almost certainly the culprit.
If you're using a Pi Plex server, you should stick to simple text-based subtitles. SRT subtitles are a good go-to option because they are widely supported and rarely require video burn-in.
Your media matters too
Stick to common formats
Sydney Louw Butler/How-To Geek
You can only use Direct Play if your media files are in a format that your Plex clients can actually handle. The easiest way to prevent transcoding is to stick to popular, common video and audio formats. H.264 is probably the safest bet for compatibility, though H.265 will save you bandwidth if your devices support it. For audio, AAC and AC3 are very safe options.
You don't need to go back and convert your entire library overnight, but when you add new media, you should think about where you'll be watching it. If your files are compatible with your playback devices, the less work your Pi has to do.
Transcode in advance if necessary
Sometimes you can't avoid transcoding for one reason or another. Maybe the bitrate is too high, or you have a format that just won't work with an older television.
In that scenario, you can use Plex to transcode the file in advance. Plex can then store that copy and serve it whenever needed. The key difference is that the Pi can take as long as it needs to transcode the file.
To transcode a file in advance, open up your Plex Client and select "Optimise." Then, select one of the options like "Optimized for TV" or "Optimized for mobile" to generate an appropriate version. If you want more granular control, you can use Custom to manually pick target devices, bitrates, and storage locations.
A little optimization goes a long way
Using a Raspberry Pi as a Plex server works reasonably well, so long you don't try to force it to do things it wasn't built for. The key is to let the device serve your files rather than trying to make it transcode them.
Once you've stopped worrying about your server's transcoding performance, you can focus on more entertaining problems, like curating a library.
