What are the right settings (bitrate/codec/etc) to match Netflix quality/size for downloads?

I’ve always been satisfied with Netflix’s quality for downloads, and more so with their ridiculously small file size. I’ve tried using 8mbps 1080p as my resolution for downloads, but for a 2.5 hour movie that still comes out to over 9Gb, vs Netflix might have something like 1.5Gb. I don’t think they’re just doing 1mbps bitrate, as that would look atrocious. So it seems like a mix of bitrate and codec (and maybe some other settings?).

I tried searching for answers first and my understanding is that first Netflix uses a lower bitrate (something like 3-5 mbps? Couldn’t get a clear answer here), and that they use a different codec, which I think is AV1?

So I guess my question is two fold here, does anyone have clear answers on how exactly Netflix file sizes are so small yet quality is decent, and then how to replicate those settings for downloads from Plex?

Do not expect Plex to match Netflix.

Netflix stores multiple highly optimized versions in multiple resolutions and qualities for each device they support. They are pre-transcoded and stored on Netflix servers. They do not transcode on the fly like Plex.

With Plex, find the right resolution/bitrate that best matches your needs and go with that.

you are better off using a dedicated app if you want great quality at a small size. im using handbrake at the moment and i can get a file at 480p 10bit x265 with a bitrate between 0.4mb to 0.9 depending on content that looks as good as plex 720p 4mb bitrate.

for plex if you want a small size and still looks fine on a phone or tablet us 480p 1.5mb, for almost everything its decent enough, for something like avatar (2009) might want to bump the quality up tho

Hmm I still don’t see why Plex can’t in theory match Netflix in terms of quality and size. Notice I’m not saying speed, I get that Netflix stores all the different optimized versions of media so you don’t need to transcode on the fly. I’m ok with waiting (e.g. the day before I go on a flight I can queue up a bunch of downloads). I just want to know what bitrate and codec to use (although based on my searching it doesn’t seem like you can select what codec to use for optimized versions, only the bitrate?)

Is there any way/existing software I can leverage that can use Handbrake or some other tool like ffmpeg under the hood to create my optimized versions for me and then Plex just manages the download to my device?

Netflix is a $500 Billion dollar company. They have basically unlimited resources to create and store optimized versions for thousands of devices - i.e. each specific model of phone. They have a worldwide content delivery network to send the content to your phone from the nearest possible location.

Plex has the CPU in your computer, which could be anything from an Atom to an i9 in processing power. Plex uses your home Internet connection with an uplink speed of DSL to Fiber (something like 1 Mbps to 1 Gbps).

Right now Plex uses H.264 for downloads. Transcoding to H.265 is available but still experimental. It is used for streaming and creating optimized versions. Not sure if it is available for downloads (haven’t tried it).

https://support.plex.tv/articles/115002178853-using-hardware-accelerated-streaming/

Right, once again I’m not expecting nor asking how to store every possible optimized version that exists, nor do I need a ridiculously fast network speed, CDN, or powerful CPU to transcode quickly.

  • I only need to make optimized versions for one, maybe two clients (my Pixel 7 phone using the Android app and my Steam Deck using the Linux Desktop app).
  • My use case would be preparing content for travel (e.g. flying) so time/CPU power isn’t too much a concern as I’ll know when I’ll be traveling and can plan accordingly for queuing downloads.
  • For the same reason as above, I won’t need a CDN, as I’ll be on my home network so transfer speeds will be reasonably fast.

Specifically I just want to know what bitrate/codec they use to achieve the file size and quality that they do. Perhaps saying “match Netflix quality/size” was misleading/confusing.

Yeah I saw settings about enabling H.265, and there was a setting to enable it for optimizing media as well (although not sure if that means it will apply to Downloads when an optimized version doesn’t already exist). I can try doing a download at lower bitrate and see what it looks like. But based on this thread and other searches I’ve done it sounds like a capability Plex just doesn’t have (specifying what codec to use when transcoding, whether that be for an optimized version, streaming, or downloading).

all you need to do is transfer the handbrake transcoded files to a folder thats setup to be monitored by plex even the same folder the original files are located just need to name the files slightly different and plex will see them as different versions but still linked to the original so if you have a 480p 1.3mb version and select 480p 1.5mb as your donwload resolution and bitrate in the plex app then the app will download that version for you.

like right now im using handbrake to encode my files using a 2080 ti with h265 10bit encoding and audio at 128bitrate stereo and at constant quality of 28 and most files bitrates sit between 0.4mb for anime up to 0.7mb for live stuff, somethings like avatar (2009) go up to about 1mb. so a 40min live action episode usually sits around 140mb to 170mb in size, avatar sit at 1.1gb and from my testing these files look better then plex at 720p 4mb

forgot to mention the only problem i have with handbrake is it will erase the forced flag for subtitles so after the encode is finished you will have to use something like mkvtoolnix to re-add the forced flags

Yes precisely. The size to quality ratio is determined by these things:

The codec:
I don’t use Netflix but after some googling I see that they have started to use AV1 (best codec currently) for some things but not all. Not all clients supports this however. Then second best (for your scenario) would be h265/hevc and then the most common h264. Not sure if Netflix uses hevc but I would assume so?

Codecs in Plex:
Plex uses h264 because it it’s focused on compatibility over quality to size ratio. Hevc is recently added but for your purpose it’s of no use. I’ll explain further down.

The speed:
All modern codecs can use various presets that determines how effective they are. This is the most important part for your scenario. Higher effectiveness takes longer time. Obviously Netflix’s magic lies here as they can afford to do the highest levels of effectiveness.

Speed in Plex:
Plex uses the “veryfast” preset for h264 which is pretty ineffective because Plex prioritizes speed over quality to size ratio. You can change this however. Look in the server settings for it. For downloads it is called something like “background transcodes”. Put it to something slower/more effective. This is vital in your scenario and will make the biggest difference.

Hardware/software:
If you use your graphics card (hardware) to transcode the effectiveness will be worse. With the CPU (software) it will be slower but more effective. I’m assuming that Netflix uses software to get it’s quality.

Hardware/software in Plex:
You probably see the pattern but Plex uses by default hardware because it prioritizes speed over quality to size ratio. In your scenario you want to turn off “hardware acceleration” and your transcodes will be much more effective. This is why you can not use hevc in your scenario because it’s supported in hardware only.

So, in short, the best you can possibly get out of Plex is to get highly effective (slow) h264 software transcodes, which is probably not very far off what Netflix is doing, besides the codec itself. If you find something that works for you, I’d be interested in the findings :grinning_face_with_big_eyes:

Huh, all this time I thought that HW transcodes were just strictly better than software transcodes, but I just did some research and I see your point. I guess for the time being I’ll try enabling HEVC encoding and optimization, as well as using the Slow background transcoding preset (currently I’m on Very Fast) in the transcoder settings. I’ll also try using a lower bitrate (e.g. 4mbps) and see how the file size and quality compare. There doesn’t seem to be a setting though to say “use HW for live transcode and software for background transcodes”.

One of my friends also told me about tdarr, would anyone here know about it? I’m wondering if a solution could be setting up tdarr to use a very slow but high quality software encoding, and figure out some sort of automation such that media that I want available for travel will be flagged to tdarr for transcode, and then once it notifies me it’s done Plex can download it for me?

Regardless, thanks for your detailed post!

give 720p 2mb a try for phone and tablets its ok and not too big file size

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.