Skip to main content
Jellyfin on Raspberry Pi 4 8GB with an SSD (2026 Guide)

Jellyfin on Raspberry Pi 4 8GB with an SSD (2026 Guide)

A silent, always-on home media server for the cost of two months of streaming.

A Raspberry Pi 4 8GB with an SSD makes a competent single-user Jellyfin server as long as you plan around direct-play formats — transcoding is not viable on this hardware.

A Raspberry Pi 4 8GB with an external SSD makes a competent Jellyfin server for a single-user or two-user household, provided you plan around direct-play compatibility rather than transcoding. Per community measurements posted on r/selfhosted and the Jellyfin project's own hardware guidance, direct play of H.264 or H.265 files works well; on-the-fly transcoding of 4K HEVC is not viable on this hardware.

Editorial setup — why a Pi 4 for Jellyfin

The Pi 4 8GB stayed relevant in 2026 as a low-power always-on server because the workload matches the hardware. Direct-play Jellyfin — sending a file over the network without re-encoding it — is a memory and I/O task, not a compute task. The Pi 4's gigabit Ethernet and USB 3.0 easily saturate a home network on a matched-format file.

The failure mode is transcoding. Jellyfin transcodes when the client cannot play the source directly — an iPad that does not support the file's audio codec, a Chromecast that does not support the container, a browser that lacks the codec. On a Pi 4, transcoding is CPU-only (the VideoCore VI hardware encoder is not viable in current Jellyfin builds), and CPU-only 4K transcoding is out of reach.

The workaround is to plan the library for direct play. That is what this article covers.

Key takeaways

  • Direct play of H.264 and H.265 files: works reliably on Pi 4 8GB.
  • On-the-fly 4K transcoding: not viable. Do not try.
  • 1080p H.264 transcoding: marginal — one stream at a time, at best.
  • Storage: Crucial BX500 1TB or better in a Unitek SATA/IDE to USB 3.0 Adapter enclosure. Do not run from microSD.
  • Network: gigabit wired is non-negotiable; wifi will bottleneck 1080p streams.

What Jellyfin actually does

Jellyfin is an open-source media server — a Emby fork — that indexes a library of movies, TV, and music and serves it to clients (phones, browsers, Kodi, LG TV apps, Chromecast). Per the Jellyfin project docs, the server pipeline is: scan library → fetch metadata → present a browse UI → stream files to clients (direct play or transcoded).

The Pi 4 8GB handles library scanning, metadata fetch, browse UI, and direct-play streaming without breaking a sweat. Transcoding is where the hardware runs out.

Direct play — the sweet spot

Direct play means the file goes from the SSD to the client's decoder without re-encoding on the server. For direct play to work, the client must natively decode the file's video codec, audio codec, and container format.

Compatible codec combinations that direct-play on most 2026 clients (LG TV, iPad, Chromecast Ultra, Windows Edge/Chrome, Kodi):

  • H.264 + AAC + MP4 or MKV — universal.
  • H.265 (HEVC) 8-bit + AAC or EAC3 + MKV — Chromecast Ultra, LG TV, most modern browsers.
  • H.265 10-bit HDR + EAC3 + MKV — LG OLED, iPad Pro 2020+, Chromecast Ultra HDR. Less universal.
  • AV1 — client support still spotty in 2026; assume no.

If your library is standardized on H.264 + AAC MP4 or H.265 8-bit MKV, direct play covers 95%+ of playback scenarios. Skip AV1 for now if you are Pi 4-hosted.

Transcoding — what does not work

Per community discussion on r/selfhosted and the Jellyfin GitHub issue tracker, Pi 4 transcoding realities in 2026:

SourceTranscode targetPi 4 8GB result
4K H.265 HDR → 1080p H.2641080p H.264~0.3-0.5x realtime — unusable
1080p H.264 → 720p H.264720p H.264~0.9-1.2x realtime — marginal, one stream
1080p H.265 → 1080p H.2641080p H.264~0.5-0.7x realtime — unusable
720p H.264 → 480p H.264480p H.264~2x realtime — fine for one stream
Audio-only transcodeAAC → MP3Trivially fast

If a client cannot direct-play, the practical answer on a Pi 4 is not "transcode" but "install a better client." Jellyfin's mobile and TV apps handle almost every codec natively; the browser is the weakest client for direct play.

Storage — SSD via USB 3.0 is non-negotiable

Loading media from a microSD card kills the entire experience — slow directory scans, sluggish thumbnail generation, occasional read timeouts. Move the library to a real SSD:

For larger libraries a 2 TB or 4 TB SATA drive in a powered USB 3.0 enclosure is the sensible next step. Do not run the SSD off the Pi's USB power unless the drive is a low-power SATA SSD; a spinning HDD needs its own power brick.

Boot the Pi from the SSD too — the current bootloader supports USB boot, and it is faster and more durable than microSD.

Zero-config vs Docker

Two common install patterns:

  • Bare-metal apt — install Jellyfin via the official Debian/Ubuntu repo. Simple, native, easy to update. Works well on Raspberry Pi OS.
  • Docker container — pull jellyfin/jellyfin from Docker Hub. Slightly more complex but more portable, and adds a small CPU overhead (~2-5% per community reports).

For a Pi 4 dedicated to Jellyfin, bare-metal is the cleaner default. If the Pi is also running Pi-hole, Home Assistant, and other containers, Docker's isolation is worth the small overhead.

Network setup

Gigabit wired is required. A 1080p H.264 stream is ~5-15 Mbps; a 4K HDR H.265 stream is ~40-100 Mbps. WiFi struggles at 4K bitrates and stutters at 1080p under interference.

If the Pi's Ethernet is not near your library router, plan a wired run before you start. USB-Ethernet dongles on the Pi 4 do not beat the built-in gigabit port.

Library organization — what actually helps Jellyfin

Per Jellyfin's naming guidelines:

  • Movies: Movies/Movie Title (2024)/Movie Title (2024).mkv
  • TV: TV/Show Title/Season 01/Show Title - S01E01 - Episode Name.mkv
  • Music: Music/Artist/Album/01 Track.flac

The library organizer respects this. If your files are named consistently, metadata fetch and thumbnails go smoothly. If they are not, expect manual cleanup.

Metadata scrapers and thumbnail generation

Jellyfin fetches metadata from TheMovieDB, TheTVDB, MusicBrainz, and other sources. On the Pi 4, initial library scan for a large collection (5000+ movies) can take an hour or more per community reports, dominated by metadata fetch and thumbnail extraction.

Speed-up levers:

  • Enable "extract chapter images during library scan": no, disable this. It reads the entire file per movie and is glacial on a Pi.
  • Set thumbnail generation to "on demand" not "during scan."
  • Point metadata fetches at TMDB with a personal API key so you are not sharing rate limits with Jellyfin's default.
  • Run the initial scan overnight. Do not stream during the scan.

Once the library is scanned once, incremental additions are fast — the Pi only processes the delta.

Backup strategy — the Jellyfin metadata DB

Jellyfin stores its library metadata, watch state, users, and settings in a SQLite database at /var/lib/jellyfin/. This DB is the single most valuable thing on the Pi other than the media files themselves. Back it up:

  • Nightly rsync of /var/lib/jellyfin/ to a separate USB drive or LAN target.
  • Snapshot via BTRFS if you set up the filesystem that way.
  • For paranoia: rclone the config to Backblaze B2 or another cheap object store.

Restoring is straightforward — stop Jellyfin, replace the directory, restart. The media library itself is stored where you told Jellyfin to find it, not in the DB.

Multi-client scenarios — what actually happens

Two concurrent direct-play streams from the Pi 4 to two clients on the LAN: fine. Three streams: still fine if all are direct-play. Two streams with one transcode: the transcode drags the whole server, and the second stream stutters. Two concurrent transcodes: unusable.

Plan the library so transcodes are rare. Prefer the LG TV app or Kodi client over browser playback when a client has a picky codec set. Use Jellyfin's per-user "max streaming bitrate" setting to prevent the Chromecast from asking for a 4K transcode when it will not be able to sustain it anyway.

Alternate media stacks on a Pi 4

Jellyfin is not the only option:

  • Plex — proprietary, requires an account, works well on Pi 4 but has the same transcoding limitations.
  • Emby — Jellyfin's closed-source ancestor; premium-tier paywalled features.
  • PhotoPrism — for photo libraries specifically; complements Jellyfin.
  • Immich — the modern photo-and-video alternative; heavier resource footprint, probably too much for a Pi 4 with Jellyfin already running.

For most home libraries in 2026, Jellyfin is the default pick — open source, no phone-home, no accounts required.

Common pitfalls

  • Running the library off microSD. Everything is slow. Move to SSD before doing anything else.
  • Assuming the Pi will transcode. It will not, meaningfully. Standardize the library on direct-play formats.
  • Using WiFi for the Pi. Streaming stutters. Wire it.
  • Ignoring thermal throttling. Under sustained direct-play load the Pi still heats. Active cooling helps stability.
  • Skipping a UPS. SSDs and databases hate mid-write power loss. A small UPS extends server life meaningfully.
  • Trusting a spinning HDD without external power. The Pi 4's USB 3.0 ports do not supply enough current for many bus-powered HDDs. Use a powered enclosure or a low-draw SSD.

When NOT to use a Pi 4 for Jellyfin

If your household has more than two active streams, if you need reliable transcoding, if your library contains a lot of unusual codecs, or if you plan to serve outside your LAN with real transcoding under variable client bandwidth — buy an Intel N100 mini PC. It runs ~$150-200, has QuickSync hardware transcoding for H.264/H.265/AV1, and can handle 3-4 simultaneous transcoded 1080p streams comfortably. That is the honest upgrade path.

For a single user with a well-organized library and a modern client, the Pi 4 8GB Jellyfin build is still a real solution in 2026.

The full parts list

Total build cost ~$150-220 depending on SSD capacity. That is a real home media server for the price of a couple of streaming subscriptions.

Bottom line

The Pi 4 8GB is a real Jellyfin server for single-user or two-user households with well-organized H.264 or H.265 libraries and modern client devices. It is not a Plex-server-in-a-shoebox for a family of five with a mix of legacy iPads and browser-only viewing. Set the library up around direct play, keep an SSD in the loop, and the Pi 4 disappears as an always-on shelf device consuming under a dollar of electricity a month.

Power draw and always-on economics

A Pi 4 8GB idle draws about 3 W, with an SSD attached via USB 3.0 adding another 1-2 W. Streaming direct-play adds under 1 W of network-CPU load. At typical U.S. residential rates the whole server costs about $8-12 per year to keep on 24/7 — significantly less than a single month's streaming subscription. That is the actual economic case for the Pi 4 Jellyfin build: pay once, host your own library, forget it exists on the shelf.

Related guides

Citations and sources

This piece is editorial synthesis based on publicly available information. No independent first-party benchmarking is reported.

Products mentioned in this article

Tap any product for full specs, live Amazon & eBay pricing, and alternatives.

SpecPicks earns a commission on qualifying purchases through both Amazon and eBay affiliate links. Prices and stock update independently.

Frequently asked questions

Can the Pi 4 transcode 4K HEVC?
No, not in real time. On-the-fly 4K HEVC transcoding on a Pi 4 lands at 0.3-0.5x realtime — meaning playback would stall and buffer constantly. The VideoCore VI hardware encoder is not viable in current Jellyfin builds for this workload. Plan the library around direct play for 4K content, or transcode offline in advance.
Do I need to buy a special SSD?
No, any modern SATA SSD works. The Crucial BX500 1TB and WD Blue 500GB are proven picks. Attach via a USB 3.0 SATA enclosure or adapter — the Pi 4's USB 3.0 ports comfortably handle the drive at full SATA-3 speed. Do not use a USB 2.0 port, and do not run the library off the microSD card.
How many concurrent streams can the Pi 4 handle?
Two or three concurrent direct-play streams work fine as long as no client requires transcoding. Direct play uses almost no CPU; the Pi becomes a network file router. If one client triggers a transcode, the whole server slows down and the other streams stutter. Standardize the library on direct-play formats and this stays a non-issue.
Should I use Docker or bare-metal install?
For a Pi 4 dedicated to Jellyfin, bare-metal apt install is the cleaner default — simple updates, no container overhead, native filesystem access. If the Pi is also running Pi-hole, Home Assistant, and other services, Docker's isolation is worth the small CPU overhead of about 2-5% per community reports.
What about Plex instead?
Plex works on the Pi 4 with similar hardware limitations. It requires a Plex account and phones home for authentication, which some homelab users prefer to avoid. Jellyfin is open source, requires no external account, and is the community default in 2026. Choose Plex only if you value its polished mobile apps or specific client integrations.

Sources

— SpecPicks Editorial · Last verified 2026-07-06

More guides & deep dives from the SpecPicks archive

Browse all articles & guides →

More reviews from the SpecPicks archive

Browse all reviews →

More buying guides from SpecPicks

Browse all buying guides →