Head to head
Jellyfin vs Emby
These two share a codebase from 2018 and split over licensing. The decision is whether a one-off payment fixes a problem you actually have.
Should you use Jellyfin or Emby?
Start with Jellyfin, because it gives away everything Emby charges for and nothing about it can be revoked. Emby is closed source and gates hardware transcoding, mobile sync, cover art and DVR behind Emby Premiere at roughly $4.99/month, $54/year or $119 lifetime. It earns that money in one situation: you hit a client, metadata or transcoding problem on Jellyfin that you could not solve, and you want it to go away without routing your logins through a vendor cloud the way Plex does. Jellyfin is GPL-2.0 and forkable; Emby has been closed since 3.5.3 in 2018 and cannot be built or patched by you.
In 2018, Emby relicensed at version 3.5.3 and moved its open components into plugins. A group of contributors forked 3.5.2, the last version under the old terms, and called it Jellyfin. Everything else on this page is a consequence of that afternoon.
Eight years later the family resemblance is thinner than people expect. Jellyfin rewrote its library layer, changed its plugin system and built its own client apps. Emby kept shipping on a closed codebase with a paid unlock. They still both default to ports 8096 and 8920, still both store a SQLite library database in a config directory, and still both feel like relatives when you use them. But the plugins do not cross over, the databases do not cross over, and the scripts do not cross over.
The real decision here is narrow: is there a specific problem you have that $119 makes disappear?
What the spec table is telling you#
Licence is the whole comparison. Everything else on this table is close enough to be noise: one container each, SQLite each, arm64 each, directory-copy backups each, and idle memory 280 MB against 350 MB, which nobody will notice.
| Specification | Jellyfin | Emby |
|---|---|---|
| Licence | GPL-2.0-only (Copyleft) | Proprietary (Proprietary) |
| Written in | C# / .NET | C# / .NET |
| First release | 2018 | 2015 |
| Maturity | Mature | Mature |
| Datastore | SQLite | SQLite |
| Services to run | 1 | 1 |
| Idle memory | 280 MB | 350 MB |
| Memory in use | 900 MB | 900 MB |
| Operational load | 2 / 5, Light | 2 / 5, Light |
| Identity | OIDC via plugin | LDAP only |
| arm64 builds | Yes | Yes |
| Default ports | 8096, 8920 | 8096, 8920 |
| Backup shape | SQLite backup | SQLite backup |
Identity is the one other row worth stopping on. Emby is ldap, meaning a working LDAP plugin and no first-party OIDC, so anything provider-shaped means a forward-auth proxy that native clients then bypass. Jellyfin is oidc-plugin, which sounds better but is roughly as limited: the SSO plugin covers the web UI only, and its original repository (9p4) was archived in May 2026 with a community fork carrying it forward. If your household runs on a provider, LLDAP plus Emby's LDAP plugin is honestly the smoother of the two paths, and Single sign-on for self-hosters explains why neither is good.
What Emby Premiere actually costs and unlocks#
Premiere is roughly $4.99/month, around $54/year, or $119 lifetime. It unlocks hardware transcoding, mobile sync (downloads for offline viewing), cover art, DVR and the full mobile apps.
Every one of those is free in Jellyfin. That is not a rhetorical point, it is the entire pitch: Jellyfin has no paid tier, no account and no licence check anywhere.
Where Emby's model is defensible is against Plex Media Server, not against Jellyfin. Plex now charges a platform fee, and since 29 April 2025 remote playback of your own files requires someone in the chain to hold a pass, enforced across Fire TV, Samsung, LG, PlayStation and Xbox from 29 April 2026. Emby asks for a licence, not permission: nothing about your server requests approval from a vendor cloud to play a file on your own network. If you are leaving Plex over the terms rather than the price, Emby is a coherent destination and Jellyfin vs Plex covers that fork in the road in detail.
If you are paying anyway, the arithmetic is short: $119 Emby lifetime, $249.99 Plex lifetime, $0 Jellyfin. Compare all three before you assume the middle option is a compromise.
Which one your household will complain about less#
Honestly, it depends on the screen, and Emby's advantage is smaller than its price implies.
Emby's apps are more consistent than Jellyfin's on some TV platforms and its metadata handling has fewer sharp edges out of the box. Jellyfin's web client, Android TV app and Kodi integration are strong; Roku and older Samsung and LG sets are where it still shows its seams, along with Dolby Vision profile 7 and lossless TrueHD passthrough on specific televisions.
The uncomfortable part for Emby is the ecosystem. It has fewer third-party clients than Plex and fewer than Jellyfin on some TV platforms, so if the app on your particular TV is the weak one, there is no community alternative to fall back to and no source to fix it with. Jellyfin's client gaps get filled eventually by somebody. Emby's do not get filled by anybody but Emby.
Request tooling is a wash: Jellyseerr supports Jellyfin, Emby and Plex.
Which one gets hardware transcoding working on your hardware#
Both use the same underlying paths. The setup differs in two ways that cost people evenings.
Jellyfin needs the device node and the render group:
services:
jellyfin:
image: jellyfin/jellyfin:10.11.11
devices: [ /dev/dri:/dev/dri ]
group_add: [ "989" ] # getent group render | cut -d: -f3Emby needs the device node and GIDLIST, because its entrypoint sets up its own user and ignores compose's group_add:
services:
emby:
image: emby/embyserver:latest # emby/embyserver_arm64v8 on ARM
devices: [ /dev/dri:/dev/dri ]
environment:
- GIDLIST=44,989 # video,render on the hostCopy a Jellyfin fragment into an Emby stack and device access fails quietly. And on Emby none of it does anything without an active Premiere key: the acceleration options appear in Settings, transcodes still run on CPU, and you can lose an evening to VAAPI before checking the licence page. On ARM64 that bites hardest, because software transcoding on an SBC is usually not viable at all. GPUs, transcoding and local AI covers what each GPU actually delivers in simultaneous streams.
What happens on upgrade day#
Emby wins this one. The 4.8 and 4.9 series have been undramatic tag pulls; current stable is 4.9.5.0 (18 May 2026) with 4.10 in beta.
Jellyfin's 10.11 (October 2025) was the hardest upgrade in its history. It moved the library onto EF Core and merged library.db into a single jellyfin.db. The migration is supported only from 10.10.7, runs once, has no downgrade, and on libraries past roughly 50,000 items can churn for hours with no visible progress. People who killed the container mid-migration lost watch history. It also dropped armhf outright, stranding 32-bit Raspberry Pi installs on 10.10.x. Current stable is 10.11.11 (June 2026); the next major skips 11 and goes to 12.0, in release candidates since June 2026.
Backups are near-identical work: copy the whole config directory (/config, or /var/lib/emby on a package install), stop the container first or use Jellyfin's scheduled backup task from 10.11, and exclude the transcode temp and cache. One Emby detail to write down: the Premiere key is tied to your account, not the config directory, so a restore onto new hardware needs the key re-entered. See Backups that actually restore and An update strategy that does not lose data.
Which one you can fix when it breaks#
This is the argument that should carry more weight than it usually does.
Emby's builds are not reproducible and the build scripts are closed. If the project changes direction, raises the price, changes what Premiere covers, or abandons the platform your TV runs, there is no fork, no patch and no audit. That is exactly the situation that produced Jellyfin in 2018, and the people who lived through it are the reason Jellyfin exists.
Jellyfin's risks are different and worth naming rather than glossing: volunteer client maintainers stop, plugins get archived, and majors can migrate your database one way. Those are project risks you can work around, fund or fix. They are not someone else's licensing decision applied to your library.
The verdict, by situation#
| Situation | Pick | Why |
|---|---|---|
| You have not tried either yet | Jellyfin | It costs nothing and gives away every feature Emby charges for |
| You tried Jellyfin and hit a client or metadata wall | Emby | $119 once is a fair price for the problem going away |
| Leaving Plex over the 2025 remote-playback terms | Either, and Emby if you want polish | Neither asks a vendor cloud for permission to play locally |
| ARM64 NAS or SBC, transcoding is essential | Emby, with Premiere | Free Jellyfin also works, but check your board's driver support first |
| Raspberry Pi on a 32-bit OS | Emby | Jellyfin dropped armhf at 10.11 and will not move forward |
| You want to audit or fork the software | Jellyfin | Emby has been closed since 3.5.3 and cannot be built by you |
| Music is the main use | Neither, see Navidrome vs Jellyfin for music | A dedicated music server has better clients than both |
| Books, comics or audiobooks | Kavita or Audiobookshelf | Both media servers handle these badly compared to purpose-built tools |
What to do next#
Install Jellyfin first, because it is free and takes twenty minutes. Point it at your media read-only, get hardware transcoding confirmed in the playback info overlay, and watch on the actual televisions in your house for a week. If nothing annoys you, you are done and you saved $119.
If something does annoy you, write down what it is before you install Emby. "The Roku app is slow" is a reason to try Emby. "It felt less polished" usually means you will pay and stay slightly annoyed. Emby offers a trial, and both servers happily read the same media directory at the same time on different ports, so run them side by side rather than migrating twice.
While you are there, sort out remote access properly with Remote access without port forwarding, and use Stack planner to check the whole media stack fits in your RAM. The rest of the category is in Media.
Questions#
Is Jellyfin a fork of Emby?
Yes. Emby relicensed at version 3.5.3 in 2018 and moved open components into plugins. Jellyfin is the community fork of 3.5.2, the last version under the old licence. Eight years of separate development means the family resemblance is now mostly in the UI layout and the port numbers: both default to 8096 and 8920. Plugins, scripts and community tooling written for one generally do not work on the other.
Is Emby Premiere worth it when Jellyfin is free?
Only if it buys you something specific. Premiere unlocks hardware transcoding, mobile sync, cover art, DVR and the full mobile apps, all of which Jellyfin includes at no cost. The genuine reasons to pay are a client or metadata problem you could not fix on Jellyfin, or a preference for Emby's apps on a platform you own. At $119 lifetime it is half a Plex lifetime pass and infinitely more than Jellyfin.
Does Emby phone home to play my files?
Not for local playback. Unlike Plex, Emby does not put a vendor cloud in the authentication path for playing your own media on your own network, which is the main reason people moved to it after the 2025 Plex remote-playback changes. Premiere licence state is checked against your Emby account, so hardware transcoding depends on that licence being valid, and a restore onto new hardware needs the key re-entered rather than recovered from a config backup.
Can I migrate my Emby library to Jellyfin?
Your media moves instantly, because neither server modifies your files. What does not move is watch state, users, collections and playlists, which live in each server's own SQLite database and have diverged since 2018. There is no supported import. Plan on pointing Jellyfin at the same media directory, letting it rescan, and rebuilding users by hand. Run both in parallel for a week before you delete anything.
Which one is better for hardware transcoding?
Jellyfin, on price, because Quick Sync, VAAPI and NVENC are in the free build. Emby's implementation is fine and on some ARM64 boards has historically been better supported, but it requires an active Premiere key: passing /dev/dri into an unlicensed Emby container does nothing, transcodes silently run on CPU, and the UI still shows the acceleration options.
Can I run Emby on a Raspberry Pi or ARM NAS?
Yes, but pull the right image. Emby publishes emby/embyserver for x86_64 and emby/embyserver_arm64v8 for ARM64 as separate Docker Hub repositories rather than one multi-arch manifest, so a compose file copied from an x86 guide gives you an exec format error. Jellyfin ships a single multi-arch image, but dropped 32-bit ARM at 10.11, so a Pi on a 32-bit OS is stuck at 10.10.x.
Sources#
Published . Last reviewed . Found something out of date? Tell us and we will fix it and log the change.