Jellyfin is a self-hosted media server that provides a complete alternative to Plex and Emby, giving users full control over their media libraries without subscription fees, data tracking, or premium feature locks. Built on .NET 9.0 and designed for cross-platform deployment, it supports Windows, Linux, and macOS, and integrates with FFmpeg for media transcoding. The system includes a web-based UI, RESTful API, and official clients for Android, iOS, Roku, Kodi, and more.
Jellyfin’s architecture separates the server backend (this repository) from its web and mobile clients, enabling modular development and deployment. It runs as a standalone service with built-in HTTP serving, supports Docker containers, and can be deployed via GitHub Codespaces. The server handles media scanning, metadata fetching, transcoding, and user authentication, while clients connect via a documented API to deliver a seamless streaming experience.
What You Get
- Media Library Management - Automatically scans and organizes movies, TV shows, music, books, photos, and live TV recordings with metadata from TheMovieDB, TheTVDB, and MusicBrainz.
- Built-in Transcoding with FFmpeg - Dynamically transcodes media on-the-fly to match device capabilities using FFmpeg, supporting formats like H.264, H.265, VP9, and more.
- Live TV & DVR Support - Integrates with HDHomeRun and other DVB tuners to watch and schedule recordings of live television channels directly in the interface.
- SyncPlay - Synchronize media playback across multiple devices and users for remote movie nights with real-time chat and playback control.
- Multi-User Library Access - Create individual user accounts with personalized libraries, parental controls, and custom viewing preferences.
- RESTful API & Swagger Documentation - Full API access at /api-docs/swagger/index.html for custom integrations, automation, and third-party client development.
- No Tracking or Proprietary Lock-in - Zero telemetry, no cloud dependency, and no premium tiers — your data stays entirely on your server.
- Official Clients for All Major Platforms - Native apps for Android, iOS, Roku, Amazon Fire TV, Kodi, Windows, macOS, and Linux with consistent UI and features.
Common Use Cases
- Running a home media server - A family uses Jellyfin to centralize their DVD/Blu-ray rips, digital purchases, and recorded TV shows on a NAS, then streams them to smart TVs and tablets without subscriptions.
- Managing a personal media archive - A film enthusiast organizes 500+ movies and 200+ TV series with custom artwork, metadata, and subtitles, accessible from any device in the house.
- Setting up a community media hub - A library or co-working space deploys Jellyfin on a Linux server to let members stream their own media collections with user-based access controls.
- Building a privacy-focused streaming setup - A privacy-conscious user replaces Plex with Jellyfin to eliminate data collection, run everything locally, and avoid vendor lock-in.
Under The Hood
Architecture
- Clear separation of concerns through distinct, modular projects for database, extensions, and LiveTV, enforcing boundaries via project-level isolation
- Dependency injection is systematically applied across modules using ASP.NET Core’s container, enabling loose coupling and testable service composition
- Domain entities leverage Entity Framework Core with explicit conventions for concurrency and cascade behavior, ensuring data integrity through migration-driven schema evolution
- Custom JSON converters and interface-based abstractions promote extensible serialization and polymorphic behavior while decoupling transport from domain models
- Robust code analysis and naming conventions enforced via EditorConfig and Roslyn analyzers reflect a mature, team-oriented development culture
Tech Stack
- Built on .NET 10 with strict C# coding standards and a MSBuild-based build system that supports cross-platform compilation
- Utilizes ASP.NET Core’s middleware and dependency injection for HTTP services, with SQLite and PostgreSQL as primary data stores via Entity Framework Core
- Employs xUnit and Moq for comprehensive testing, with Docker-based multi-stage builds for consistent deployment across environments
- Features a lightweight, configuration-driven infrastructure with automated pipelines for testing and deployment
Code Quality
- Extensive test coverage spanning unit, integration, and end-to-end scenarios, with mocking of HTTP contexts and repositories for reliable validation
- Strong type safety enforced through nullable reference types, records, and data annotations, ensuring robust domain contracts
- Consistent naming, layered structure, and mirrored test namespaces promote maintainability and clarity across the codebase
- Comprehensive error handling via HTTP status codes and validation attributes, with automated linting enforcing async disposal and best practices
- Automated test coverage instrumentation with targeted exclusions ensures accurate quality metrics in CI/CD pipelines
What Makes It Unique
- Native plugin system for metadata providers enables dynamic, extensible sourcing of media information without core modifications
- Real-time transcoding pipeline with hardware acceleration and adaptive bitrate streaming optimized for low-power devices
- Decoupled architecture where media library, Live TV, and UI operate as independent services with clean API boundaries
- Built-in BlurHash generation and lazy image loading reduce bandwidth usage and improve perceived performance in low-resource environments
- Integrated Live TV EPG with SchedulesDirect support and customizable channel grouping, bringing broadcast TV functionality to a media server
- Zero-dependency image processing layer with pluggable encoders that gracefully degrade for headless or constrained deployments