Knowledge Base · Troubleshooting
Why won't my Jellyfin or Plex transcode?
If Jellyfin or Plex maxes out your processor and stutters on 4K, hardware transcoding isn't running. It fails quietly, which makes it frustrating, and it's almost always one of four causes. Work through them in this order:
- It's not turned on in the server's settings.
- The server runs in Docker and can't reach the graphics chip.
- Your processor has no Quick Sync, often because it's an Intel "F" chip.
- You're on free Plex, which needs a paid Plex Pass for hardware transcoding.
Words you'll see in this guide
- Transcoding: converting a video on the fly so it plays smoothly on a phone or TV that can't handle the original file.
- Hardware acceleration: letting a dedicated chip do a job, like video conversion, instead of the main processor.
- Quick Sync: a video engine built into many Intel chips that converts video fast and with little power.
- iGPU: graphics built into the main processor, with no separate graphics card. Quick Sync lives here.
- Container: a sealed box that holds an app and everything the app needs to run.
- Direct play: your TV or phone plays the video file as it is, with no converting needed.
- Plex requires a paid Plex Pass for hardware transcoding. Jellyfin's is free.
- Any Intel processor ending in "F" (like the i5-12400F) has its built-in graphics turned off, so it has no Quick Sync at all.
Fix 1: Turn hardware acceleration on
It's off by default and easy to miss.
- In Jellyfin: go to Dashboard, then Playback, then Transcoding. Set Hardware acceleration to your hardware: Intel QSV or VA-API, NVIDIA NVENC, or AMD.
- In Plex: go to Settings, then Transcoder, and turn on Use hardware acceleration when available.
- Play a file that needs converting and open the server's activity dashboard.
You should see: the stream marked as hardware, or "(hw)" in Plex.
Fix 2: Give your Docker container the graphics chip
This is the most common cause on a home server. A container can't see the graphics chip unless you pass it in.
Intel or AMD (Quick Sync or VA-API):
- On the server, find your render group's number:
getent group render | cut -d: -f3 - Add these lines under your Jellyfin service in your compose file, using that number:
devices: - /dev/dri:/dev/dri group_add: - "YOUR-RENDER-GROUP-NUMBER" - Recreate the container:
docker compose up -d - Check the container can see the chip:
docker exec -it jellyfin ls /dev/driYou should see:
renderD128in the list. If/dev/driis missing, the server can't use Quick Sync and falls back to the processor.
NVIDIA: install the NVIDIA Container Toolkit, pass the graphics card into the container, then choose NVENC in the server's settings.
New to containers? See Docker vs Proxmox.
Fix 3: Check that your chip has a video engine
Hardware transcoding needs a hardware video engine. On Intel, that's Quick Sync, inside the built-in graphics. Two traps:
- "F" chips have no built-in graphics, so no Quick Sync. You'd need a non-F processor or a separate graphics card.
- Newer video formats need newer chips. 10-bit HEVC needs roughly 7th-gen Intel or newer. AV1 playback needs 11th gen or newer, and AV1 encoding needs an Intel Arc card or a very recent chip.
No Quick Sync? An Intel Arc A310 or A380 fits most desktops and adds strong hardware transcoding. See the PC upgrade parts guide.
Fix 4: Get Plex Pass, or switch to Jellyfin
On free Plex, hardware transcoding won't run. You can buy a Plex Pass, or move to Jellyfin, which does the same thing for free. My Pi media streamer and media server guides both lean toward Jellyfin for this reason.
- Is hardware acceleration turned on?
- Can the container see the graphics chip?
- Does the processor have Quick Sync?
- Is Plex asking for Plex Pass?
Or avoid transcoding altogether
Often the fastest fix is not converting at all. If your player supports the file's format, the server can direct play it with almost no processor use. Keep your library in widely supported formats like H.264, and use the app on your TV instead of a browser. A mini PC with Quick Sync then handles the times you do need to convert.
Quick answers
Why is my Jellyfin or Plex transcoding on the CPU instead of the GPU?
Hardware acceleration isn't active. The usual causes are that it's not turned on in the settings, the Docker container can't see the graphics chip, or the processor has no Quick Sync.
Do I need Plex Pass for hardware transcoding?
Yes. Plex requires a paid Plex Pass for hardware transcoding. Jellyfin offers it for free.
Why does my Intel CPU not hardware transcode?
Most likely it's an Intel "F" chip, like the i5-12400F, which has its built-in graphics turned off. Quick Sync lives in those graphics, so there's nothing to use.
How do I enable hardware transcoding in a Docker container?
Pass the graphics device into the container. For Intel or AMD, add /dev/dri as a device and add the render group so the container has permission. For NVIDIA, install the NVIDIA Container Toolkit and pass the card in.
Free email updates
Subscribe and I'll send a ready-to-copy Jellyfin compose file with hardware transcoding already set up.
No spam. Unsubscribe anytime. Privacy policy.