Quick answer
What this guide helps you do
Understand Jellyfin Direct Play, Direct Stream and transcoding. Compare formats, clients, subtitles, audio compatibility, CPU use and hardware acceleration.
Jellyfin beginner path
New to Jellyfin? Follow this order.
These guides form the SmallGrid Jellyfin path: install it, fix folder access, solve empty libraries, reduce unnecessary transcoding, then choose the right mini PC.
Direct Play is the most efficient Jellyfin playback mode because the server sends the original media streams without re-encoding them.
However, Direct Play depends on the complete playback chain:
- container format
- video codec and profile
- audio codec and channel layout
- subtitle format
- bitrate and resolution
- HDR support
- Jellyfin client capabilities
- local or remote bandwidth
A file that Direct Plays on one device may Direct Stream or transcode on another. This hub connects the SmallGrid guides that explain how to identify the playback mode, choose compatible formats and reduce unnecessary transcoding.
Quick answer
For broad Jellyfin compatibility, start with:
Container: MP4 or MKV
Video: H.264
Audio: AAC or AC3
Subtitles: External SRT
This is not a guarantee for every client. Device support determines the final playback mode.
Use the Jellyfin dashboard while the file is playing. It should show one of three modes:
| Mode | What Jellyfin does | Typical server load | Video quality |
|---|---|---|---|
| Direct Play | Sends the original file streams | Lowest | Original |
| Direct Stream | Repackages compatible streams | Low | Usually unchanged |
| Transcoding | Converts video, audio, bitrate, subtitles or resolution | Highest | May change |
Start with Jellyfin Direct Play vs Transcoding for the full comparison.
Direct Play, Direct Stream and transcoding
Direct Play
The client accepts the original container, video, audio and subtitle combination. Jellyfin reads the file and sends it across the network.
Benefits normally include:
- minimal CPU use
- original picture and sound streams
- lower power consumption
- less heat and fan noise
- more simultaneous users
Direct Stream
Direct Stream normally means the codecs are compatible but the container or delivery format is not. Jellyfin repackages the streams without re-encoding the video.
This is often called remuxing and is usually a lightweight, quality-preserving fallback.
Read Jellyfin Direct Stream vs Direct Play for detailed examples.
Transcoding
Transcoding converts one or more media components. Common examples include:
- HEVC to H.264
- 4K to 1080p
- high bitrate to lower bitrate
- DTS or TrueHD to AAC or AC3
- HDR to SDR tone mapping
- subtitle burn-in
Video transcoding normally uses the most resources. Audio-only conversion is usually much lighter.
Best file formats for Jellyfin
There is no universal best format, but these are useful starting points.
| Library target | Container | Video | Audio | Notes |
|---|---|---|---|---|
| Broadest compatibility | MP4 | H.264 | AAC | Strong support across browsers, phones and streaming devices |
| Flexible home library | MKV | H.264 | AAC or AC3 | Supports multiple tracks and subtitles well |
| Efficient modern 4K | MKV | HEVC Main 10 | AAC, AC3 or original plus fallback | Requires compatible clients |
| Newer efficient clients | MKV or MP4 | AV1 | AAC or Opus where supported | Client support varies significantly |
Read Best Video Format for Jellyfin Direct Play before converting existing files.
Do not convert an entire library based on one problem device. Test representative files on the clients that matter first.
Why Jellyfin transcodes
Jellyfin transcodes when the client or connection cannot accept the original playback combination.
Common reasons include:
- unsupported video codec or profile
- unsupported audio track
- subtitle burn-in requirement
- source bitrate above the selected quality limit
- source resolution unsupported by the client
- remote bandwidth restriction
- HDR tone mapping
- browser support narrower than a native app
Use How to Check Why Jellyfin Is Transcoding to diagnose one file and client systematically.
Record:
Client:
Connection: local or remote
Container:
Video codec and profile:
Audio codec:
Subtitle format:
Source bitrate:
Selected quality:
Playback mode:
Conversion reason:
Change one variable at a time.
Client choice matters
The server does not decide Direct Play compatibility alone. The client must decode and render the original streams.
A browser may have narrower codec and container support than:
- Jellyfin Media Player
- Android TV or Google TV
- Apple TV clients
- maintained smart-TV apps
- dedicated streaming devices
If one client transcodes and another Direct Plays the same file, the server and file may be healthy. The difference is likely client capability or configuration.
Read Best Cheap Jellyfin Client for Direct Play before replacing server hardware.
Subtitle compatibility
Subtitles can trigger a full video transcode even when video and audio are otherwise compatible.
Text subtitle formats are normally easier for clients to render directly:
SRT
WebVTT
Image-based or styled subtitles may require burn-in on some clients:
PGS
VobSub
ASS or SSA in some situations
Test the same scene with subtitles disabled. If playback changes to Direct Play, use Jellyfin Subtitles Causing Transcoding.
Audio compatibility
Unsupported audio can trigger audio conversion or Direct Stream while the video remains unchanged.
Common compatibility issues include:
- DTS
- DTS-HD
- TrueHD
- unsupported multichannel layouts
- passthrough configuration
If a file contains more than one audio track, select AAC or AC3 and replay the same scene. Check whether the dashboard mode changes.
Audio conversion is usually much less demanding than video transcoding, so it may be acceptable if playback is smooth.
Local versus remote playback
A file can Direct Play locally but transcode remotely because of bandwidth or quality limits.
Compare:
Source bitrate
Jellyfin remote quality setting
Home upload speed
Remote download speed
Wi-Fi or mobile stability
A high-bitrate 4K remux may be completely compatible with the remote client but still require a smaller stream.
In this case, hardware transcoding may be the correct solution rather than changing the source file.
CPU use by playback mode
The normal resource hierarchy is:
Lowest load
Direct Play
Direct Stream or audio-only conversion
Hardware-accelerated video transcoding
Software video transcoding
Highest load
Actual load depends on:
- source and target codec
- source and target resolution
- bitrate
- frame rate
- subtitles
- tone mapping
- encoder support
- simultaneous users
Use Jellyfin Direct Play vs Transcoding for the detailed CPU and quality comparison.
When hardware transcoding helps
Hardware acceleration is useful when conversion is genuinely required because of:
- remote bandwidth
- older clients
- mixed household devices
- subtitle burn-in
- high-resolution media
- several simultaneous users
It does not add codec support to the client and does not remove the original trigger.
Use:
- Jellyfin Hardware Transcoding on Ubuntu
- Pass an Intel GPU Through to Jellyfin in Proxmox
- Best Mini PC Specs for Jellyfin
After enabling hardware acceleration, confirm that the active playback process is using the intended GPU or media engine.
Practical troubleshooting order
When a file unexpectedly transcodes:
- Open the active session in the Jellyfin dashboard.
- Record the playback mode and every conversion reason.
- Set local quality to Original where appropriate.
- Disable subtitles and replay.
- Select a different audio track and replay.
- Test the same file in another Jellyfin client.
- Inspect the file with
ffprobe. - Compare bitrate with remote limits.
- Configure hardware acceleration only if conversion remains necessary.
Inspect a file with:
ffprobe -hide_banner "Film Name.mkv"
Look for:
- container
- video codec and profile
- pixel format
- audio tracks
- subtitle tracks
- resolution
- frame rate
- bitrate
Direct Play test library
A small test library makes client comparisons repeatable.
Include examples such as:
- 1080p H.264 and AAC in MP4
- 1080p H.264 and AC3 in MKV
- 1080p HEVC Main 10 in MKV
- 4K HEVC Main 10 HDR
- external SRT subtitles
- embedded ASS subtitles
- embedded PGS subtitles
- high-bitrate local media
For each file and client, record:
Direct Play, Direct Stream or Transcoding
Video conversion
Audio conversion
Subtitle burn-in
Reported reason
Playback smooth or buffering
Approximate CPU or GPU load
This evidence is more useful than generic codec-support lists.
Related guides
- Jellyfin Direct Play vs Transcoding
- Jellyfin Direct Stream vs Direct Play
- Best Video Format for Jellyfin Direct Play
- How to Check Why Jellyfin Is Transcoding
- Jellyfin Subtitles Causing Transcoding
- Best Cheap Jellyfin Client for Direct Play
- Jellyfin Hardware Transcoding on Ubuntu
- Jellyfin on Ubuntu
Recap
Direct Play requires the client to support the complete file and playback conditions. Direct Stream is usually a lightweight container change. Transcoding converts one or more streams and uses more server resources.
Use the Jellyfin dashboard to identify the real trigger. Test subtitles, audio, quality settings and another client before converting files or replacing server hardware.
Jellyfin guide cluster
More Jellyfin fixes and setup guides
These guides link the main Jellyfin setup, permissions, remote access, direct play, and hardware topics together.
Jellyfin 12 Upgrade Preparation: Backup, Plugins and Migration Checklist
Prepare a Jellyfin 10.10 or 10.11 server for Jellyfin 12. Check your version, create a restorable backup, audit plugins and plan the first startup safely.
Jellyfin on Ubuntu: Low-Power Setup, Media Folders and Reboot Checks
Build a reliable low-power Jellyfin server on Ubuntu. Install Jellyfin, mount storage, fix media access, favour Direct Play, measure power, and verify the server after reboot.
Give Jellyfin Access to Media Folders on Ubuntu
Fix Jellyfin permission denied errors on Ubuntu. Test the service user, find blocked parent folders, apply safe ACLs, verify inheritance, and check mounted-drive options.
Jellyfin Library Not Showing Files? 8 Checks That Fix It
Fix a Jellyfin library that is empty or missing media. Check mounts, Linux permissions, Docker paths, library folders, naming, scans and logs in the correct order.
Jellyfin Docker Permissions: Fix Media Folder Access and UID/GID Errors
Fix Jellyfin Docker permission denied errors. Check bind mounts, container paths, UID and GID values, read-only media access, active mounts, and file visibility step by step.
Jellyfin Direct Play vs Transcoding: CPU, Quality and Compatibility
Compare Jellyfin Direct Play, Direct Stream and transcoding. See CPU use, quality differences, common triggers and how to check the active playback mode.