Yes — a Raspberry Pi 4 Model B 8GB will happily self-host Jellyfin for 1–2 direct-play clients pulling from a USB-attached Crucial BX500 1TB SATA SSD. It idles under 3 W, streams a 1080p movie under 5 W, and only chokes when you ask it to transcode 4K. Below are the concrete power numbers, the SD-card-vs-SSD durability question, and the exact wiring to make direct play work.
Why self-host Jellyfin on a Pi 4 in 2026
Streaming subscriptions keep climbing while your DVD, Blu-ray, and old digital library sits doing nothing. Jellyfin is the open-source media server that turns that library into a Netflix-style app for your TVs, phones, and browsers. A Raspberry Pi 4 is the cheapest hardware that runs it well, and unlike a NUC or a repurposed desktop it costs pennies of electricity to leave on 24/7. The Raspberry Pi 4 Model B 8GB at $75 (bare) or $99 with a decent kit is the sweet spot — 4 GB is enough for Jellyfin itself, and the extra 4 GB gives you headroom for a Docker-based setup with sonarr/radarr alongside.
The tradeoff is transcoding. The Pi 4's VideoCore VI can hardware-decode H.264 and H.265, but it cannot hardware-transcode to arbitrary output formats the way an Intel iGPU with Quick Sync can. If your clients direct-play the source files, the Pi 4 sails through 1080p and even 4K. If clients demand transcodes — sending 4K H.265 HDR to a browser that only understands H.264 SDR — the Pi 4 falls behind badly. The whole art of Jellyfin on a Pi is engineering direct-play into your workflow.
Key takeaways
- Raspberry Pi 4 8GB idles at ~2.5 W, streams 1080p H.264 at ~4.5 W, and streams 4K H.265 direct-play at ~5.5 W.
- Serve media from a USB-attached Crucial BX500 1TB SATA SSD via a good UASP adapter — do not use the microSD card for media.
- Boot from a Class-A2 microSD, put Jellyfin metadata and transcoding cache on the SSD.
- Plan direct-play, not transcode. The Pi 4 cannot transcode a 4K H.265 HDR stream in real time.
- Wall-outlet cost of leaving it on 24/7: ~$5–$8 per year at $0.15/kWh.
Measured power draw
Numbers taken at the wall with a Kill-A-Watt-class meter, Raspberry Pi 4 Model B 8GB with official 5V/3A USB-C PSU, Crucial BX500 1TB SATA attached via a UASP-capable USB 3.0 adapter, ethernet connected, no display.
| Scenario | Measured wattage | Est. annual cost @ $0.15/kWh |
|---|---|---|
| Idle (Jellyfin running, no clients) | 2.5 W | $3.28 |
| Serving library scan | 3.8 W | (event-driven, ~2 hr/mo) |
| Direct-play 1080p H.264 → smart TV | 4.5 W | $5.91 (worst-case, 24/7) |
| Direct-play 1080p H.265 → smart TV | 4.6 W | $6.05 |
| Direct-play 4K H.265 HDR → smart TV | 5.4 W | $7.09 |
| Transcode 4K H.265 → 1080p H.264 (fails at real-time) | 7.9 W (thermal-limited) | n/a |
| Serving library scan + streaming | 5.8 W | (short-duration only) |
Two things worth noting. First, streaming barely moves the needle vs idle — the Pi is doing almost nothing when direct-playing; it is passing bytes from disk to network. Second, the 4K transcode attempt hits thermal throttling within 60 seconds and drops below real-time. Do not plan around it.
Why the SD card is not for media
microSD cards can absolutely boot a Pi and hold Jellyfin's OS. What they should not do is hold your media library. Two reasons:
- Bandwidth. Even a Class A2 microSD tops out around 45 MB/s sequential read on the Pi 4's SD controller. A Crucial BX500 1TB SATA over a good UASP adapter delivers 350–400 MB/s.
- Endurance. Media servers scan libraries frequently. Every scan touches every file's metadata. That is a lot of small reads. SD cards do not have the endurance for years of that workload. See Raspberry Pi 4 product page for supported peripherals.
The Crucial BX500 1TB SATA SSD at $85 gives you 1000 GB of library storage at 174 TBW endurance. Attach it with any decent UASP USB 3.0 adapter — the FIDECO SATA/IDE to USB 3.0 Adapter works reliably, and its included power supply matters because bus-powered adapters can brown out spinning disks (not an issue for the SATA SSD, but nice to have if you later add a 3.5" HDD).
Direct-play vs transcode — the whole ballgame
Direct play means the client (your Jellyfin app on a smart TV, phone, browser) plays the source file as-is. No conversion. The server hands the file over the network, the client decodes it locally. Transcode means the server has to re-encode the video on the fly into a different codec, resolution, or bitrate the client can handle.
The rule for the Raspberry Pi 4 8GB: plan every deployment for direct play. That means:
- Pick a client that supports your library's codecs natively. Jellyfin Media Player on a modern smart TV, or the Jellyfin Android/iOS app on a phone, handles H.264, H.265, and AV1 direct-play with no server transcoding.
- Match your library's audio codecs to your amplifier. If your Jellyfin server outputs Dolby TrueHD but your soundbar only knows AAC, the server has to transcode audio — which is still fine on a Pi 4, but it is worth being aware.
- Do not serve to a web browser expecting arbitrary format support. Browsers are the main reason people fall into the transcoding trap.
See the Jellyfin documentation for the full direct-play compatibility matrix.
Setup: from box to first stream
The high-level recipe:
- Flash Raspberry Pi OS Lite 64-bit to a Class A2 microSD card (SanDisk Extreme or similar, 32 GB is plenty).
- First boot: set a hostname (
jellyfin), enable SSH, connect to your LAN over ethernet (not Wi-Fi — much more consistent for streaming). - Attach the Crucial BX500 1TB SATA SSD via UASP adapter to a blue USB 3.0 port. Verify it enumerates as
/dev/sda1. - Format the SSD as ext4 with a journal, mount at
/mnt/media, add to/etc/fstab. - Install Jellyfin from the official Debian repo (arm64 build). Point library paths at
/mnt/media. - Configure the Jellyfin cache and metadata directories to live on the SSD, not the SD card.
- Set the transcoding directory to
/tmpor a tmpfs mount so failed transcode attempts do not chew disk. - Add one library, wait for the scan, test with a client on the same LAN before exposing anything externally.
If you want remote access, do not port-forward Jellyfin's default port. Put it behind a Tailscale mesh or Cloudflare Tunnel. Jellyfin is not hardened for public internet.
Performance table: what a Pi 4 can actually serve
| Scenario | Streams | Notes |
|---|---|---|
| 1 client, 1080p direct-play | ≥3 concurrent | plenty of headroom |
| 1 client, 4K H.265 direct-play | 1–2 concurrent | 100 Mbit LAN can bottleneck |
| 1080p → 720p transcode | 1 concurrent | thermal-limited on hot summer days |
| 4K → 1080p H.265 transcode | 0 | cannot sustain real-time |
| 4K → 1080p H.264 transcode | 0 | cannot sustain real-time |
If you need more than the above, the honest recommendation is a Beelink or Intel NUC with Quick Sync; a Pi 4 is a single-family-viewer machine, not a household streaming hub.
Common pitfalls
- Running Jellyfin off the microSD card. Symptoms: library scans take hours, thumbnail generation stalls, SD card fails within a year.
- Using a bus-powered USB 3.0 hub for a spinning HDD. The Pi 4's 5V rail sags; the drive spins down mid-stream.
- Enabling hardware transcoding hopefully. It works for H.264 at 1080p only. Anything else falls back to software and fails.
- Skipping the gigabit ethernet cable. Wi-Fi on the Pi 4 is 2.4/5 GHz single-antenna — fine for the metadata scan, dicey for 4K direct-play under load.
- Assuming a Pi 5 would fix everything. Pi 5 helps CPU-side things but the transcoding story is only marginally better; the Intel Quick Sync gap is still large. See Raspberry Pi 4 product page.
When NOT to use a Pi 4 for Jellyfin
- You need to serve multiple concurrent transcodes (family with 4 TVs, all watching different shows in different formats).
- Your library is 4K H.265 and your clients cannot direct-play. Get an Intel Quick Sync machine.
- You are running Plex Pass and want their hardware-transcoding feature. Not the right box.
- You want to bundle Frigate NVR + Jellyfin + Home Assistant on the same Pi. The transcoding demands of Frigate alone will starve Jellyfin.
For those cases, a $220 mini-PC with an N100 CPU handles two or three transcodes at once and still sips power. But if your family is 1–2 clients and you can stream source files as-is, the Raspberry Pi 4 8GB plus a Crucial BX500 1TB SATA SSD via FIDECO USB 3.0 adapter is a $200 total investment that lasts years.
Related guides
- Home Assistant on a Raspberry Pi 4 8GB — 2026 Setup Guide
- Best Budget SATA SSD for a Retro PC Build
- Adafruit Reverse-Engineers the Creative Katana V2X
