How to Migrate from Emby to Jellyfin in 2026: Complete Step-by-Step Guide

How to Migrate from Emby to Jellyfin in 2026: Complete Step-by-Step Guide

How to Migrate from Emby to Jellyfin in 2026: Complete Guide

Emby and Jellyfin share a common ancestor - Jellyfin forked from Emby in December 2018 when Emby went closed-source. This shared DNA means migration is smoother than you might expect. Your media files stay exactly where they are. Your folder structure works identically. The main challenge is preserving watch history and recreating your user setup.

This guide walks you through the full migration with zero data loss.


Why People Are Leaving Emby for Jellyfin in 2026

FeatureEmby (Free)Emby PremiereJellyfin
Hardware transcodingNoYes (~$119 lifetime)Free
Full mobile appNoYesFree
Live TV / DVRNoYesFree
Offline syncNoYesFree
Account requiredYesYesNo
Open sourceNoNoYes
HDR tone mapping qualityGoodGoodBetter (community consensus)
Plugin ecosystemModerateModerateLarger and growing

The most common migration triggers in 2026:

  • Emby Premiere subscription renewal fatigue
  • Better HDR tone mapping in Jellyfin (documented in community comparisons)
  • Larger plugin ecosystem (Intro Skipper, Jellyfin-Enhanced, SSO plugins)
  • No external account requirement
  • Jellyfin 10.11 stability improvements

Before You Start: What Migrates and What Does Not

Migrates easily (zero effort)

  • Media files - they stay exactly where they are, both servers read the same files
  • Folder structure - Jellyfin uses the same naming conventions as Emby
  • NFO files - if you use NFO metadata, Jellyfin reads the same format
  • Local artwork - poster.jpg, backdrop.jpg, etc. are read identically

Requires manual steps

  • Watch history - use Trakt as an intermediary (detailed below)
  • User accounts - recreate manually in Jellyfin (different auth system)
  • Playlists - recreate manually or export/import via M3U
  • Custom artwork - re-upload any manually set posters
  • Plugin configurations - reconfigure equivalent Jellyfin plugins

What you lose

  • Emby-specific features - Emby Connect, Emby Premiere perks
  • Emby mobile app data - app-specific settings and downloads
  • Emby plugin data - plugin databases do not transfer

Step 1: Install Jellyfin Alongside Emby

Run both servers simultaneously during migration. Do not uninstall Emby until you have verified everything works in Jellyfin.

Docker Compose

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    ports:
      - "8097:8096"  # Use 8097 to avoid conflict with Emby on 8096
    volumes:
      - ./jellyfin/config:/config
      - ./jellyfin/cache:/cache
      - /path/to/media:/media:ro  # Same media path as Emby
    devices:
      - /dev/dri:/dev/dri  # GPU passthrough for transcoding
    restart: unless-stopped

Port note: Emby and Jellyfin both default to port 8096. Map Jellyfin to 8097 temporarily. After migration, switch Jellyfin to 8096.

Point Jellyfin to the exact same media folders Emby uses. Your files do not move.

Native Linux

curl -fsSL https://repo.jellyfin.org/install-debuntu.sh | sudo bash
# Edit /etc/jellyfin/network.xml to change the port if Emby is on 8096
sudo systemctl enable --now jellyfin

Step 2: Set Up Libraries in Jellyfin

  1. Open Jellyfin at http://your-server:8097
  2. Complete the setup wizard - create your admin account
  3. Add libraries pointing to your existing media paths:
    • Movies → /media/movies
    • TV Shows → /media/tv
    • Music → /media/music
  4. Let Jellyfin scan and fetch metadata

Jellyfin uses TMDB and TVDB - the same sources as Emby. Metadata quality is identical. The scan takes 10-60 minutes depending on library size.

If you use NFO files

If Emby was configured to save metadata as NFO files alongside your media, Jellyfin reads them natively:

  1. Dashboard → Libraries → [Library] → Edit
  2. Metadata readers → Enable Nfo
  3. Set NFO as the first reader to prioritize local metadata

This preserves any custom metadata you set in Emby without re-fetching from online sources.


Step 3: Migrate Watch History via Trakt

This is the most important step. Trakt acts as an intermediary to transfer watched status between Emby and Jellyfin.

On Emby: Export to Trakt

  1. Install the Trakt plugin in Emby (Dashboard → Plugins → Catalog)
  2. Authenticate with your Trakt account
  3. Run a full sync - this pushes all your watched history to Trakt
  4. Verify on trakt.tv that your history appears correctly

On Jellyfin: Import from Trakt

  1. Install the Trakt plugin in Jellyfin (Dashboard → Plugins → Catalog)
  2. Authenticate with the same Trakt account
  3. Run a full sync - this pulls all watched status from Trakt into Jellyfin
  4. Verify in Jellyfin that movies and episodes show as "Played"

For multiple users

Repeat the Trakt sync for each user:

  1. Each user needs their own Trakt account
  2. On Emby: sync each user individually
  3. On Jellyfin: create the user account first, then sync their Trakt

Alternative without Trakt: If you do not want to use Trakt, community tools like jellyfin-emby-migrator (search GitHub) can read Emby database files and import watched status directly. These tools are less polished but avoid the Trakt intermediary.


Step 4: Recreate User Accounts

Jellyfin user accounts are local - no Emby Connect equivalent.

  1. Dashboard → Users → Add User
  2. Create accounts matching your Emby users
  3. For each user, configure:
    • Library access (which libraries they can see)
    • Parental controls (rating limits, blocked tags)
    • Remote streaming bitrate limit
    • Subtitle language preference

Permission mapping from Emby to Jellyfin

Emby PermissionJellyfin Equivalent
Allow media playbackAllow media playback
Allow media downloadsAllow media downloads
Allow remote connectionsAllow remote connections
Allow Live TV accessAllow Live TV access
Parental rating limitMaximum parental rating
Disable userDisable this user

Most permissions map directly. Jellyfin offers additional granularity (SyncPlay access, subtitle management, etc.).


Step 5: Map Emby Plugins to Jellyfin Equivalents

Most popular Emby plugins have Jellyfin equivalents - often with more features.

Emby PluginJellyfin EquivalentNotes
TraktTraktSame functionality
OpenSubtitlesOpenSubtitlesSame functionality
Auto OrganizeRadarr/SonarrMore powerful automation
WebhooksWebhook pluginSame concept, different config
Server BackupBuilt-in backup (10.11+)Native in Jellyfin now
IPTV / Live TVBuilt-in (free)No Premiere required
Playback ReportingPlayback ReportingSame plugin, different repo
-Intro SkipperNo Emby equivalent
-Skin ManagerNo Emby equivalent
-Jellyfin-EnhancedNo Emby equivalent
-SSO PluginNo Emby equivalent

Jellyfin has significantly more community plugins than Emby in 2026. The Intro Skipper plugin alone is a major draw for migrating users.


Step 6: Configure Clients

Switch each device from the Emby app to the Jellyfin app.

JellyWatchTry JellyWatch — Your Jellyfin companion, everywhere.

Android

  • Install Jellyfin for Android from Google Play
  • Or install Findroid for a more polished experience
  • Add your Jellyfin server URL and log in

Android TV / Fire TV

  • Install Jellyfin for Android TV from Play Store or Amazon Appstore
  • The interface is similar to Emby TV - your users will adapt quickly

iOS / Apple TV

  • Install Swiftfin (official, free) or Infuse (premium, best quality)
  • Both connect to Jellyfin the same way they connected to Emby

Desktop

  • Install Jellyfin Media Player or use the web interface at http://your-server:8096

Smart TVs

  • Samsung: Jellyfin for Tizen (requires sideloading)
  • LG: Jellyfin for WebOS (available in LG Content Store)
  • Android TV built-in: Jellyfin for Android TV from Play Store

Step 7: Configure Remote Access

If you had Emby accessible remotely, replicate the setup for Jellyfin:

Reverse proxy (recommended)

Update your Caddyfile or Nginx config to point to Jellyfin:

jellyfin.yourdomain.com {
    reverse_proxy localhost:8096
}

Tailscale / WireGuard

If you used a VPN for Emby remote access, simply update the server URL in your clients to point to the Jellyfin port.


Step 8: Verify and Decommission Emby

Before removing Emby, verify everything:

  • [ ] All media appears correctly in Jellyfin
  • [ ] Watch history transferred for all users
  • [ ] All users can log in and stream
  • [ ] Hardware transcoding works (test with a forced transcode)
  • [ ] Clients configured on all devices
  • [ ] Remote access working
  • [ ] Plugins configured and functional
  • [ ] Reverse proxy updated

Once confirmed, stop and remove Emby:

# Docker
docker stop emby
docker rm emby

# Native
sudo systemctl stop emby-server
sudo systemctl disable emby-server
sudo apt remove emby-server

Switch Jellyfin to port 8096:

# Update docker-compose.yml
ports:
  - "8096:8096"  # Now using the standard port
docker compose down && docker compose up -d

Update all client URLs to use port 8096.


Common Migration Issues

IssueCauseFix
Wrong metadata on some itemsDifferent TMDB matchEdit → Identify → select correct match
Missing episodesNaming format differenceRename to Jellyfin standard (S##E##)
Watch history incompleteTrakt sync missed itemsRe-run Trakt sync or mark manually
Custom posters lostEmby stored them internallyRe-upload in Jellyfin or use local poster.jpg
Subtitles not detectedDifferent naming conventionRename to filename.en.srt format
Hardware transcoding not workingGPU not configuredMap /dev/dri and enable QSV/NVENC

FAQ

Can I run Emby and Jellyfin at the same time? Yes. They use different ports and can share the same media files simultaneously. This is the recommended approach during migration.

Will my media files be affected? No. Both servers read your files in read-only mode. Nothing is moved, renamed, or modified.

Do I need to re-download all metadata? If you use NFO files, Jellyfin reads them directly - no re-download needed. If you relied on Emby fetching metadata online, Jellyfin re-fetches from the same sources (TMDB/TVDB) during the library scan.

What about my Emby Premiere license? Your Premiere license stays valid for Emby. If you fully migrate to Jellyfin, you no longer need it - all Premiere features are free in Jellyfin.

Is the Jellyfin interface similar to Emby? Yes. Jellyfin forked from Emby, so the dashboard layout, library views, and settings structure are familiar. The web UI has diverged over the years but the core navigation is recognizable.

Can I migrate my Emby Live TV / IPTV setup? Yes. Export your M3U playlist URL and XMLTV EPG URL from Emby, then add them in Jellyfin under Dashboard → Live TV. The configuration is nearly identical.

What about EmbyWatch - does it work with Jellyfin? EmbyWatch is built specifically for Emby. For Jellyfin, use JellyWatch - the same app, same features, built for the Jellyfin API.


The Admin App: EmbyWatch → JellyWatch

If you used EmbyWatch to monitor your Emby server, the transition to JellyWatch is seamless - same team, same features, different API:

FeatureEmbyWatch (Emby)JellyWatch (Jellyfin)
Real-time sessionsYesYes
Transcoding diagnosticsYesYes
Push notificationsYesYes
Radarr/Sonarr/SeerrYesYes
Watch history & statsYesYes
Home screen widgetYesYes
Watch PassYesYes

Both apps are built by the same team and share the same feature set.


Migrating from Emby? Monitor your new Jellyfin server from day one. Download JellyWatch on Google Play - real-time session monitoring, transcoding alerts, and server health for Jellyfin on Android.

Still running Emby alongside Jellyfin during migration? Download EmbyWatch on Google Play - monitor both servers from your phone.

Comments

No comments yet. Be the first to share your thoughts.

Leave a comment

Never displayed publicly.
0 / 2000 · Supports limited Markdown: **bold**, *italic*, `code`, [link](url), lists, > quote.