Placeholdarr keeps titles visible in Plex, Jellyfin, or Emby without requiring everything to stay downloaded. It is AI-developed, maintained by TheIndieArmy, and inspired by Infinite Plex Library and Chronicle.
- Jellyfin support integration: Thanks to Priky-one for implementing Jellyfin support.
- GHCR Docker workflow support: Thanks to aves-omni for GitHub Container Registry workflow integration.
Placeholdarr allows you to maintain a comprehensive Plex, Jellyfin, or Emby library without the storage overhead of keeping everything downloaded at once. It automates placeholder creation, status tracking, and on-demand downloads.
- Keep your library visible without downloading everything.
Placeholders let users browse and request content first, then download on demand. - Reduce storage churn while keeping content discoverable.
Great for large import lists, rolling retention workflows, and "watch-when-needed" setups. - Support modern multi-instance stacks.
Works with Plex, Jellyfin, Emby, and multiple Radarr/Sonarr instances. - Automate status and release workflows.
Startup sync, calendar workflows, queue tracking, and playback-driven search are built in. - Stay practical for real-world ops.
Hardlink/copy placeholder strategies, cleanup automation, and onboarding-first configuration.
- Add content to Radarr/Sonarr without immediately searching/downloading.
- Placeholdarr creates lightweight placeholder files in your configured placeholder libraries.
- Users see those titles in Plex/Jellyfin/Emby like normal catalog items.
- Playback or automation events trigger search/download flows, and placeholders are replaced when real media arrives.
- Run the included docker-compose.yml.
- Open Placeholdarr and complete onboarding in the WebUI.
- Configure ARR/media-server webhooks using the URLs shown in onboarding.
Placeholdarr is onboarding-first: most behavior is configured in the WebUI.
- Library strategy (recommended):
- Keep placeholder libraries separate from real-media libraries when possible.
- Combined libraries are supported, but media-server trash behavior can be less predictable.
- Placeholder output paths should be different from ARR root paths.
- Environment variables: use
.envprimarily for infrastructure/runtime overrides (host/port/log level/database).
- Check logs in
/config/logs/for startup, webhook, and sync details. - Log files under
/config/logs/capture full detail (VERBOSE/DEBUG and above). Use the System Logs tab display filter to narrow what you read.