Quick answer

What this guide helps you do

Choose the best video, audio, subtitle, and container formats for Jellyfin Direct Play. Compare MKV vs MP4, H.264 vs HEVC, and avoid unnecessary transcoding.

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.

  1. Jellyfin on Ubuntu: Low-Power Setup, Media Folders and Reboot Checks
  2. Give Jellyfin Access to Media Folders on Ubuntu
  3. Jellyfin Library Not Showing Files: Fix Scans, Paths and Permissions
  4. Jellyfin Direct Play vs Transcoding: Differences, CPU Use and How to Check
  5. Best Mini PC Specs for Jellyfin: What Actually Matters

Difficulty

Beginner-friendly

Focus

Jellyfin setup and troubleshooting

Best used for

Practical setup, fixes, and checks

Printable helper

Prefer to work through this step by step?

Download the matching checklist and tick off the common causes while you work through the guide.

Quick answer

The safest Jellyfin Direct Play target for broad compatibility is:

Container: MP4 or MKV
Video:     H.264
Audio:     AAC or AC3
Subtitles: External SRT

For 4K libraries, HEVC/H.265 can save space, but only use it when your actual playback devices support it directly.

There is no single perfect format for every Jellyfin client. The best format is the one your television, streaming box, phone, browser, or app can decode without making the server convert the video.

Before changing a file, play it and inspect the active session in the Jellyfin dashboard. The stated reason tells you whether the problem is the container, video, audio, subtitles, bitrate, or client setting.


What this guide covers

This is the format-selection guide for Jellyfin libraries. It explains which combinations are most likely to Direct Play and how to test a file before converting it.

It is not a promise that every client supports the same formats. Jellyfin playback depends on the complete combination of:

  • container
  • video codec and profile
  • audio codec and channel layout
  • subtitle format
  • resolution and bitrate
  • HDR format
  • client application
  • client quality settings

Use How to Check Why Jellyfin Is Transcoding when you need to diagnose a specific session.


SmallGrid verification method

SmallGrid checks format recommendations using a Linux-based Jellyfin server and the playback information shown in Jellyfin’s active-session dashboard.

The practical test is:

  1. inspect the file with ffprobe
  2. play it on the intended client
  3. record Direct Play, Direct Stream, or Transcoding
  4. read the stated conversion reason
  5. disable subtitles or change audio tracks one variable at a time
  6. repeat the same file on another client

This avoids treating generic codec support lists as proof that a particular file will Direct Play.


Format decision table

Library goalContainerVideoAudioSubtitlesMain trade-off
Broadest compatibilityMP4H.264AACExternal SRTLarger files than HEVC and fewer flexible track options
Flexible home libraryMKVH.264AAC or AC3SRTSome browser clients may Direct Stream the container
Storage-efficient 4KMKVHEVC Main 10AAC or AC3 compatibility trackSRTRequires HEVC support on every important client
Archive with specialist audioMKVH.264 or HEVCOriginal audio plus compatible trackText subtitles where possibleMore tracks and client-specific behaviour
Low-power serverMP4 or MKVCodec already supported by clientsCompatible audioSRTClient choice matters more than server CPU power

Best video codec for Jellyfin

H.264

H.264 remains the safest choice for 1080p content and mixed client environments.

Use it when:

  • several different playback devices matter
  • browser playback matters
  • the server has limited transcoding ability
  • predictable Direct Play is more important than maximum compression
  • older televisions or streaming devices are still used

The trade-off is larger files than HEVC at similar visual quality.

HEVC or H.265

HEVC is useful for 4K and storage-efficient libraries.

Use it when:

  • every important client supports HEVC
  • 10-bit playback is supported where required
  • HDR compatibility has been checked
  • storage savings justify reduced client compatibility

Avoid converting an entire library to HEVC based only on a device being advertised as “4K”. Check the actual codec profile, audio, subtitle, and app behaviour.

AV1

AV1 can reduce file size further, but client support is less universal than H.264 and HEVC. Treat it as a client-led choice rather than a default library format.


MKV vs MP4

MKV and MP4 are containers. They hold the video, audio, subtitle, chapter, and metadata tracks.

ContainerMain advantageMain limitation
MP4Broad client and browser compatibilityLess flexible for unusual audio, subtitle, and chapter combinations
MKVFlexible audio, subtitles, chapters, and multiple tracksSome clients may Direct Stream or reject particular combinations

Choose MP4 when

  • browser playback matters
  • you want a simple H.264 and AAC compatibility file
  • multiple specialist tracks are not required

A strong compatibility combination is:

MP4 + H.264 + AAC + SRT

Choose MKV when

  • you need several audio or subtitle tracks
  • you keep chapters
  • you want an original audio track plus a compatibility track
  • you value library flexibility

MKV itself does not automatically cause full transcoding. A client may Direct Play it, Direct Stream it into another container, or convert only one incompatible track.


Audio can trigger conversion

A compatible video stream can still require audio conversion.

Safer choices include:

AAC
AC3

Formats that can cause client-specific problems include:

DTS
DTS-HD
TrueHD
EAC3 on older devices
unsupported multichannel layouts

Audio-only conversion is normally lighter than video conversion, but it still changes the playback mode.

For mixed clients, keep the original high-quality track and add an AAC or AC3 compatibility track where practical.


Subtitles are a common hidden cause

External SRT subtitles are usually the safest choice:

Film Name (2026).mkv
Film Name (2026).en.srt

Image-based subtitles such as PGS and VobSub may require Jellyfin to burn the subtitles into the video. Burn-in requires full video transcoding.

ASS or SSA subtitles can also trigger conversion when the client cannot render their styling.

A simple test is:

  1. play the file with subtitles enabled
  2. check the Jellyfin dashboard
  3. disable subtitles
  4. replay the same scene

If playback changes from Transcoding to Direct Play or Direct Stream, the subtitle track is the cause.


Practical 1080p target

Container: MP4 or MKV
Video:     H.264
Audio:     AAC or AC3
Subtitles: SRT

This is the safest general target for a low-power server serving several client types.

MP4 with H.264 and AAC offers the broadest compatibility. MKV with H.264 and AAC or AC3 offers more track flexibility while still working well on many native Jellyfin clients.


Practical 4K target

Container: MKV
Video:     HEVC Main 10
Audio:     Original track plus AAC or AC3 compatibility track
Subtitles: SRT where possible
Requirement: All important clients support the video and HDR format

For remote playback, consider a separate 1080p version rather than asking a low-power server to convert high-bitrate 4K media in real time.

Avoid image-based subtitles where possible because subtitle burn-in can turn an otherwise compatible 4K file into a demanding video transcode.


Build a repeatable test set

Before standardising a library, test a small group of representative files:

Test filePurpose
1080p H.264 + AAC in MP4Broad compatibility baseline
1080p H.264 + AC3 in MKVTests MKV and AC3 support
1080p HEVC Main 10 in MKVTests HEVC and 10-bit decoding
4K HEVC HDR sampleTests high-bitrate, HDR, and network behaviour
External SRT subtitleTests text subtitle rendering
Embedded ASS subtitleTests styled subtitle support
Embedded PGS subtitleTests image subtitle handling and burn-in

For each client, record:

  • playback mode
  • stated transcode reason
  • video conversion
  • audio conversion
  • subtitle burn-in
  • buffering or playback failures

Do not assume one successful file proves support for every profile or track combination.


Inspect a file with ffprobe

Run:

ffprobe -hide_banner "Film Name (2026).mkv"

For a compact stream summary:

ffprobe -v error \
  -show_entries stream=index,codec_type,codec_name,profile,width,height,channels \
  -of table \
  "Film Name (2026).mkv"

Look for:

  • container
  • video codec and profile
  • bit depth
  • resolution
  • audio codec and channels
  • subtitle codec
  • bitrate

Then compare those details with the client that is transcoding.


Worked diagnosis example

Suppose a file contains:

Container: MKV
Video:     H.264
Audio:     DTS
Subtitles: PGS

The video codec is broadly compatible, but the client may still transcode because of DTS audio or PGS subtitle burn-in.

Test in this order:

  1. disable subtitles
  2. replay and inspect the dashboard
  3. switch to a compatible audio track
  4. replay again
  5. try a native Jellyfin app instead of a browser
ResultLikely causeSmallest fix
Direct Play after subtitles are disabledPGS or unsupported subtitle renderingUse SRT or another client
Video remains direct but audio convertsDTS is unsupportedAdd or select AAC/AC3
Browser Direct Streams but native app Direct PlaysContainer or browser limitationUse the native client; no library conversion required
Every client converts HEVC videoHEVC profile is unsupportedKeep H.264 or provide a compatible version

This is why converting the whole file before reading the dashboard can waste time and reduce quality unnecessarily.


Should you convert the whole library?

Usually not.

Start with files that actually cause playback problems, then choose the smallest sensible fix:

  • use a better client
  • switch audio tracks
  • use SRT subtitles
  • remux without re-encoding when only the container is wrong
  • create a compatible second version
  • convert only the problem file
  • configure hardware transcoding when real-time conversion is genuinely required

Whole-library conversion consumes processing time, electricity, temporary storage, and maintenance effort.


Final verification checklist

Before adopting a format as your library standard, confirm:

  • the main television client Direct Plays it
  • the mobile or secondary client behaves acceptably
  • browser behaviour is understood rather than assumed
  • subtitles do not unexpectedly trigger burn-in
  • the compatibility audio track works
  • local quality is set to Original during testing
  • the server dashboard shows the expected playback mode
  • a high-bitrate file plays without network buffering
  • remote playback has been tested separately from local playback

A successful test is the active Jellyfin session showing the expected mode on the actual client—not merely a codec name appearing in a specification sheet.



Recap

For broad compatibility, use H.264 video with AAC or AC3 audio and SRT subtitles inside MP4 or MKV.

Use HEVC for 4K only when the important clients support the exact profile, bit depth, HDR format, audio, and subtitles.

Inspect the file, play it on the real client, and read the Jellyfin dashboard before converting anything.

Downloadable checklist

Save the matching PDF checklist

Use these while working through the guide, or keep a copy for the next time the same problem appears.

More downloads are available in the SmallGrid checklists section.

Next guide

What to read next

Continue the setup path with these closely related guides.

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.