Why does Jellyfin transcode, and how to avoid it
Why does Jellyfin transcode? Because the app told the server it cannot play the file as it is: the container, a codec, the subtitles or a bitrate limit do not fit. Friendlier files, fewer limits and an app that plays more by itself reduce it.
What transcoding is, and who decides
To transcode is to decode a video and encode it again in another format. A Jellyfin server does it when an app cannot play a file as it is. It needs a lot of processor or graphics power and costs some quality. Jellyfin knows lighter ways too: direct play (the file is sent as it is), remux (the same streams in another container) and direct stream (video untouched, audio converted). Direct play explains them one by one; this page is about why your server ends up transcoding anyway.
The server does not decide alone. Jellyfin’s documentation says that transcoding of your own files is always requested by the client: the app sends a profile of what it can play, such as containers, codecs and bitrates, and the server picks the lightest way that fits.
Why does Jellyfin transcode for Apple devices?
These are the usual reasons. (A codec is the way video or sound is compressed, a container such as MKV or MP4 is the file around it, and the bitrate is how much data a video needs per second.) The first two make the server remux or convert audio at most; the others mean a real video transcode.
| Cause | Why it happens | What helps |
|---|---|---|
| MKV container | Apple’s own player opens MP4, M4V and MOV, not Matroska. | Use an app that opens MKV itself (Ensō does, on the device), or repackage the file as MP4. The server then remuxes at most. |
| DTS or TrueHD audio | Apple’s player has no decoder for them. | Add an AAC track to the file, or use an app that converts the sound on the device (Ensō does). At worst the server converts only the audio. |
| Video other than H.264 or HEVC | Apple devices decode H.264 and HEVC in hardware, AV1 only on newer chips. Formats such as VP9, MPEG-2 or VC-1 would need software decoding, which Ensō does not do, so the server converts them. | Convert such files once, ahead of time, instead of letting the server do it at every viewing. This is the heavy case: a full video transcode. |
| Picture-based subtitles (PGS, VobSub) | They are pictures, not text. An app that cannot show them itself makes the server burn them into the video, the most demanding case: two conversions at once. Ensō does not ask for that: it does not offer picture-based tracks at all. | Use text subtitles (SRT) for the languages you need. |
| Bitrate limits | A limit in the app (in Ensō: Max. Quality, which on iPhone and iPad starts at 10 Mbit/s on mobile data) or on the server (the Internet streaming bitrate limit for devices outside your network). | Raise or remove the limit where your connection allows it, and make sure the server knows your home network (see below). |
How to see what your server is doing
- Start a film in the app.
- Open the Jellyfin dashboard in a browser. You need an administrator account for it.
- Look at the box called Devices on the start page of the dashboard. A device that is playing shows a card with the title and the progress. The info icon on the card tells how the film is played: “Direct playing”, “Remuxing”, “Direct streaming” or “Transcoding”, each with a sentence of explanation, and for a transcode the “Reason for transcoding”.
- Watch the load of your server. A transcode keeps the processor or the graphics chip busy; a film that is only sent does not.
One caution: the dashboard shows what the server itself is doing whenever it runs a conversion for the session, and otherwise falls back on what the app reported. An MKV that Ensō repackages on the device is only sent by your server, so it normally shows up as “Direct playing” and nothing is converted on the server. If the card says “Remuxing”, “Direct streaming” or “Transcoding” for Ensō, the server is as a rule really working on that session, and for a transcode the card also gives the reason. The surest sign remains the load of your server.
What Ensō changes, and what it cannot
Ensō takes work off your server in these places:
- MKV files with H.264 or HEVC video are repackaged on the device. The server only sends the file; no remux runs.
- Audio such as DTS, TrueHD or Dolby Digital is converted on the device, not by your server.
- Downloading an original file asks for no conversion at all.
The details, with the cases that go another way, are in Direct play. What Ensō cannot change:
- Video formats the chip does not decode, and HEVC above level 5.1. The server has to transcode them.
- Limits you set. A film above your Max. Quality limit is re-encoded by the server, and so is a stream that keeps stalling. On iPhone and iPad, Automatic means a 10 Mbit/s data saver on mobile data.
- Smaller downloads: a download below Original is re-encoded by the server, by design. See Offline downloads.
- The limits and permissions on your server.
What you can do on the server
- Find out what really transcodes. Play a few titles and look at the dashboard, as described above, before you change anything.
- Fix the files at the source. Prefer H.264 or HEVC video, add an AAC audio track to files that only have DTS or TrueHD, convert old formats such as VP9, MPEG-2 or VC-1 once, ahead of time, and keep text subtitles (SRT) for the languages you need.
- Check the bitrate limit of the user. In the dashboard, open Users, pick the user and stay on the Profile tab. Under Media playback, look at Internet streaming bitrate limit (Mbps): it limits every stream for devices outside your network and can make the server transcode.
- Check which devices count as local. Open the dashboard’s Networking page. LAN networks is the list of addresses that count as local when bandwidth limits are applied (if it is empty, the usual private addresses of a home network count as local). Known proxies is what a server behind a reverse proxy needs to see the real address of a device. If your phone at home counts as outside, the limit hits it. How the app reaches your server at home and away is described in Connect to your server.
- Think twice before switching transcoding off. The same Media playback section has checkboxes such as Allow video playback that requires transcoding. If you uncheck them, a file the app cannot play fails instead of being converted.
- Speed up what cannot be avoided: under Playback, Transcoding, the dashboard offers Hardware acceleration. Jellyfin’s documentation explains what your graphics hardware needs.
Ensō is an independent app and not part of the Jellyfin project. Setting names are those of Jellyfin’s web interface as checked on 7 October 2026 and can differ slightly between versions. Jellyfin’s own pages go further: transcoding and codec support.
Questions about transcoding
Is transcoding bad for my server?
A full video transcode is the heavy case: it keeps the processor or graphics chip busy and costs some quality. Direct play is the lightest way, and a remux or an audio conversion is cheap. Whether an occasional transcode matters depends on the hardware of your server and on how many people watch at once.
Does Ensō stop my server from transcoding completely?
No. It takes the work off your server for files that Ensō’s playback engine plays, mainly MKV files with H.264 or HEVC video and audio that the engine converts on the device. Other video formats, quality limits and smaller downloads still make the server work. See Direct play.
Why does my server transcode when I watch on mobile data?
On iPhone and iPad, Max. Quality on Cellular is set to Automatic by default, which means a 10 Mbit/s data saver, so films above that are re-encoded by the server. Choose Original (no limit) in Settings, under Streaming & Downloads, if your plan and connection allow it. The Internet streaming bitrate limit of your server can have the same effect.
Why does a smaller download make my server work?
Because that is how it becomes smaller: below Original, the server re-encodes the video for the download (H.264, at most 1080p). Choose Original and the server converts nothing. See Offline downloads.
How do I find out which of my files cause transcoding?
Play them and look at the dashboard while they run: the info icon on the device card names the way the film is played and, for a transcode, a reason such as an unsupported audio format or subtitles. Typical causes are picture-based subtitles, video that is not H.264 or HEVC, and bitrate limits.