Inspect your Plex library before switching to Jellyfin.

Opens your Plex database read-only. Shows what would transfer. Zero writes. No network. No account. switchkit inspect exports a migration plan JSON you can review before committing to the switch.
$ switchkit inspect --plex-db com.plexapp.plugins.library.db

[INFO]  switchkit v0.1.3 — migration readiness inspector
[INFO]  Plex DB: com.plexapp.plugins.library.db (v500000000001.231)
[INFO]  GUID formats: legacy: 5000, modern: 12000
[INFO]  Found 3 libraries: Movies (2,184), TV Shows (18,421 episodes), Music (3,809 items)
[INFO]  Found 2 regular Plex users: admin, sarah
[WARN]  guest: Plex managed user — standard Jellyfin accounts can be created instead
[INFO]  Watch states: 12,902 with external ID — 199 without external ID
[INFO]  Collections: 38 found
[INFO]  Custom artwork references: 156 found
[INFO]  Inspect complete. Plex DB was read-only.
[INFO]  Report saved to migration-plan.json
[WARN]  This file contains viewing history — do not share unredacted.

Install

# Docker
docker run --rm \
  -v /path/to/plex/db:/plex:ro \
  -v $(pwd):/output \
  ghcr.io/switchkit-app/switchkit:v0.1.3 \
  inspect --plex-db /plex/com.plexapp.plugins.library.db --output /output/plan.json

# pip
pip install git+https://github.com/switchkit-app/switchkit.git
switchkit inspect --plex-db /var/lib/plex/db/com.plexapp.plugins.library.db

What transfers — and what doesn't

Honest about limitations. Self-hosters audit claims — so should you.
FeatureStatusNotes
Watch historyInspectedMatched by TMDB/IMDB/TVDb ID. Modern plex:// GUIDs supported.
Resume positionInspectedPlex view_offset exported for Jellyfin conversion.
RatingsInspectedUser star ratings exported 1:1.
User accountsInspectedLocal + external users listed. Managed users flagged.
CollectionsInspectedCollection names and item memberships listed in plan.
Custom artworkInspectedCustom poster/background references detected.
Jellyfin write modePlannedIn development. Dry-run only for now.
Smart collectionsNot supportedDynamic rules can't be statically exported.
Skip intro / creditsNot supportedPlex-specific feature.

What Switch Kit does — and does not — touch

Read-only. Offline. No credentials. Your database is never modified.
 Plex DB opened read-only (mode=ro)
 If Plex is running, database is copied to temp first
 No network calls — runs fully offline
 No account or credentials required
 Docker container runs as non-root user
 Output contains viewing history — do not share unredacted

Free and open source

AGPL-3.0. Inspect your library. Review the source. No paywall.

View on GitHub

v0.1.3 · 35 tests · 6-round audited by Claude Opus, Gemini & ChatGPT