Every time you hit play in Plex, the server makes a decision: can this client play this file as-is (direct play), or does something need to be converted (transcode)? The answer depends on the container format, video codec, audio codec, subtitle format, and the specific client device. Understanding compatibility saves you from buffering, quality loss, and unnecessary server load.
Container Formats
The container is the wrapper that holds video, audio, and subtitle streams together. Common containers:
- MKV (Matroska): The universal container for media. Supports virtually every codec, multiple audio/subtitle tracks, chapters. Most Plex clients direct play MKV, but some (older Roku, some smart TVs) may require remuxing to MP4
- MP4: Widely compatible across all devices. More limited codec support than MKV (no PGS subtitles, no FLAC audio). The “safe” format if you want zero compatibility issues
- AVI: Legacy format. Limited to older codecs. Plex will play it but you should consider converting to MKV
- TS/M2TS: Broadcast/Blu-ray transport stream. Plex handles these but some clients may need remuxing
Key point: When Plex remuxes (changes the container without re-encoding video/audio), it’s nearly instant and doesn’t affect quality. This is called “Direct Stream” — different from a full transcode and far less demanding on your server.
Video Codecs
H.264 (AVC)
The most universally supported codec. Every Plex client on every platform direct plays H.264. If you want guaranteed compatibility across all devices, H.264 is the answer. Downside: larger file sizes than H.265 for the same quality.
H.265 (HEVC)
50% smaller files at the same quality as H.264. Excellent for 4K content. Client support is good but not universal:
- Direct play: Apple TV 4K, NVIDIA Shield, most 2018+ smart TVs, modern Fire TV, modern iOS/Android
- Requires transcode: Older Roku (pre-2018), older Chromecast, some web browsers, older smart TVs
AV1
The newest codec — even more efficient than H.265, royalty-free. Client support is still growing:
- Direct play: Recent Chrome/Edge browsers, NVIDIA Shield (2019+), some 2022+ smart TVs, Chromecast with Google TV
- Requires transcode: Most other clients as of 2026. AV1 transcoding is extremely CPU-intensive without hardware support
VP9
Google’s codec, commonly used in YouTube. Good browser support, limited on dedicated streaming devices. Plex handles it but it’s not common in personal media libraries.
Audio Codecs
Audio codec support varies more than video across Plex clients:
- AAC: Universal support. Every client plays it. Stereo and multichannel
- AC3 (Dolby Digital): Widely supported. 5.1 surround. Almost every client with surround sound capability supports it
- EAC3 (Dolby Digital Plus): Good support on most modern clients. Supports Atmos metadata (lossy)
- DTS: Supported on most streaming devices connected to receivers. Not supported on many mobile devices or smart TVs
- TrueHD: Lossless. Only passes through on NVIDIA Shield and HTPCs. Everything else transcodes it
- FLAC: Lossless audio. Good support on most clients for music. Less common in video files
Pro tip: Include both a lossless (TrueHD/DTS-HD MA) and a compatible lossy (AC3/EAC3) audio track in your files. Clients that can’t handle the lossless track will fall back to the lossy one without transcoding.
HDR Formats
HDR adds another compatibility layer on top of video codec support:
- HDR10: Base HDR format. Supported by almost all 4K-capable clients that support HEVC. Static metadata
- HDR10+: Dynamic metadata. Samsung TVs support it; most other clients fall back to HDR10 (which still looks good)
- Dolby Vision: Dynamic metadata with dual-layer or single-layer profiles. Profile 5 (streaming) has good support; Profile 7 (dual-layer) requires specific hardware. Check your client’s DV profile support
- HLG: Broadcast HDR. Limited Plex client support
When a client doesn’t support the HDR format, Plex needs to tone-map (convert HDR to SDR) during transcoding. This requires significant GPU power — Intel Quick Sync (10th gen+) or NVIDIA NVENC handle it well; CPU-only tone mapping is extremely slow.
Subtitle Formats and Transcoding
Subtitles are a hidden transcoding trigger that catches many users off guard:
- SRT: Text-based. Never causes video transcoding. Client renders the text overlay. Best format for compatibility
- ASS/SSA: Styled text. Some clients support them natively; others force Plex to burn them into the video (triggering transcode)
- PGS: Bitmap-based (from Blu-ray). Requires burn-in on most clients, which forces a full video transcode. The number one hidden cause of unnecessary transcoding
- VOBSUB: Bitmap-based (from DVD). Same issue as PGS — usually requires burn-in
The Universal Compatibility Playbook
If you want files that direct play on every Plex client without exception:
- Container: MP4 or MKV
- Video: H.264 (Main or High profile, Level 4.1)
- Audio: AAC stereo + AC3 5.1 (dual audio tracks)
- Subtitles: SRT (external or embedded)
- Resolution: 1080p (4K adds HEVC/HDR complexity)
This sacrifices file size efficiency (H.264 is larger than H.265) and lossless audio, but guarantees zero transcoding on any device. For most people, the convenience outweighs the storage cost.
Checking What’s Happening During Playback
Open the Plex dashboard (Settings → Dashboard) while something is playing. It shows exactly what’s being transcoded and why. The “Play” line shows Direct Play, Direct Stream, or Transcode for both video and audio independently. If something is transcoding, the reason is listed — usually “(codec not supported)” or “(subtitle burn-in).”