You've got your Plex server set up and your content loaded into your Plex library, but when you play back certain videos, you get constant buffering, or poor image quality, or both. That's a common issue people face, and often the cause has to do with how your Plex server handles transcoding .
Understanding why Plex needs to transcode
Each video in your Plex library is encoded using a particular video codec at a particular quality level. In most cases, Plex doesn't have to do anything to this data and can just pass it on to your streaming device using what's known as a direct stream.
However, if the video is in a format that the client device can't natively play, or there isn't enough bandwidth to handle the original quality of the file, Plex has to "transcode" the video and audio into a compatible format. This basically means re-encoding the video in real time, which is pretty compute-intensive, as you can imagine!
Personally, I've never actually run into a situation where Plex has needed to transcode my videos on the fly, because all my client devices are compatible with the video codecs I use, and there's plenty of bandwidth to go around. However, when using remote streaming outside my home network, that's not always the case.
Identifying common performance bottlenecks
Lucas Gouveia/How-To Geek
If you need transcoding, but you're getting buffering or other performance issues, it's not necessarily that your Plex server doesn't have enough power, but that it doesn't have the right type of power.
The most impactful thing you can do to improve transcoding performance is to enable hardware-accelerated transcoding. However, this is only available to those who pay for a Plex Pass or who have bought a lifetime license. It's worth paying for one month of Plex Pass to see if this feature resolves your issues, though. Many CPUs and GPUs have hardware-based video encoding solutions that Plex can tap into. Allowing the main CPU cores to do other jobs.
The CPUs in some cheap NAS devices and older PCs just don't have enough performance to transcode high-res videos like 4K content in real time. Also, keep in mind that while a given device might be fine transcoding one video stream, if multiple people in your home are watching content from Plex at the same time, the cumulative load might just be too much.
Avoiding unnecessary transcoding
Your goal shouldn't be to necessarily improve transcoding performance, but to avoid the need to transcode in the first place. For example, you can use a tool like HandBrake to batch convert your videos into a widely-supported format like H.264 or H.265 in an MP4 or MKV container.
Corbin Davenport / How-To Geek
If you've set bitrate limits on the client device, you might want to increase them so that Plex doesn't have to transcode anything to fit within those limits.
Another option is to pre-encode your media using Plex's media optimizer , which uses idle time to make compatible versions of a given video. This works well and gets around the issue of limited processing power, but it comes at the cost of storage. Every optimized version of a video will take up additional room on your server's drives.
Optimizing your server for faster transcodes
As I mentioned above, the most effective thing to do is activate hardware acceleration, but this assumes your Plex server has the type of acceleration Plex supports and that you're willing to pay for the privilege.
Barring that, and assuming you can't simply upgrade your server's CPU or other specifications, the other strategy is to free up as much CPU power as you can. If you're using that server to host more than just Plex, or it's also doubling as a computer for other uses, then removing those additional tasks makes sense.
If you're using Windows as your host operating system, consider using a light Linux distro instead. It's pretty easy, although if you want to use external drives to host content for Plex under Linux, you'll need to follow our Plex Linux guide for USB drives. At least, I couldn't make it work without help!
Improving network and client-side performance
It's not just the server side of things that can help improve the transcoding situation. You can also make changes on the client side as well. If the reason for transcoding to be triggered is a lack of bandwidth, rather than a compatibility issue with the client, then giving the client more bandwidth is the logical thing to do.
For a smart TV or other stationary client device, an Ethernet connection is the best solution, but for mobile devices like smartphones and tablets, you'll want to optimize your Wi-Fi to minimize slowdowns and other performance issues.
Don't forget that Plex isn't the only game in town. Alternatives like Jellyfin and Emby might work better with the server or clients you're using. So don't be afraid to experiment. You can try these alternatives without shutting down your Plex server and only move over if you're confident they'll work for you.
