Skip to content

Media Preview Generator vs Plex, Jellyfin and Emby built-in thumbnail generation

If your server's built-in preview generator keeps up with your library, keep using it. It needs no setup and costs nothing extra. Media Preview Generator is for when it doesn't keep up. It runs FFmpeg with GPU decoding in its own Docker container, and starts on each new file when Sonarr, Radarr or the media server reports it. If you run more than one of Plex, Emby and Jellyfin, it decodes each file once and writes each server's own format. The cost is setup: a container, GPU passthrough, and write access to where each server keeps its previews.

Facts checked 23 September 2026. Competitor facts link to their sources below. Forum posts are marked as user reports, not vendor statements.

Side by side

Media Preview Generator Plex built-in Jellyfin trickplay (10.9+) Emby built-in
GPU decoding Yes: NVIDIA, Intel, AMD on Linux; NVIDIA on Windows via WSL2. Any GPU passed to the container is used, and the CPU takes over if GPU decode fails. No GPU option documented. Plex calls it CPU-intensive. P1 Optional hardware decode and MJPEG encode. Both off by default. J1 No GPU option. E1
Where it runs Its own container, on the media server's host or another machine Inside Plex Media Server Inside Jellyfin. By default FFmpeg runs at below-normal priority with 1 thread. J1 Inside Emby Server
When it runs Per file on a webhook (Sonarr, Radarr, Plex, Emby, Jellyfin, Tdarr, custom). Also Recently Added polling, cron/interval schedules, or manual. During scheduled maintenance, and optionally when media is added P2 A scheduled task, and optionally during library scans J2 A scheduled task and library scans E2
Servers covered Plex, Emby and Jellyfin, any mix and number. One decode per file. Plex Jellyfin Emby
HDR / Dolby Vision Tone-maps HDR10, HLG, HDR10+. Dolby Vision 7/8 uses the HDR10 layer. Dolby Vision 5 needs a GPU with a hardware Vulkan driver; on NVIDIA that means the graphics capability. Plex staff: not tone-mapped on all systems. Users report washed-out HDR and green Dolby Vision. P3 Tone-mapped only if transcoding tone mapping is on. J3 Green Dolby Vision is still user-reported in 2026. J4 Tone mapping is now done in Emby's core (user reports). E3
Output location Each server's own location: Plex data folder; Emby BIF next to the video; Jellyfin tiles next to the video, or in Jellyfin's data folder with the plugin Plex data folder P4 Jellyfin's data folder, or next to the video when "save with media" is on Next to the video or in Emby's metadata folder E4
Setup Docker container, GPU passthrough, mounts, path mappings if paths differ, server sign-in One setting Per-library setting plus trickplay options Per-library setting
Price Free, MIT licence Free. No Plex Pass needed. P5 Free, open source Free. No Emby Premiere needed. E5

The mounts depend on the server: Plex's data folder read-write for Plex, and the media folder read-write for Emby and for Jellyfin's default layout. Jellyfin output needs Jellyfin 10.10 or newer. See Volume Mounts and Previews Readiness.

Note

"One decode per file" does not mean one shared file. Each server still gets its own output, in its own format and place. The saving is the expensive step: the video is decoded and scaled once, not once per server. See Per-vendor output formats.

What the built-ins do better

  • Zero setup. They are already in the server. There is no container to run, no GPU to pass through, and no path mapping to get right.
  • One system to maintain. Previews follow the server's own settings, upgrades and file handling.
  • No write access to hand out. This project needs write access to Plex's data folder, or to your media folders for Emby and Jellyfin. The built-ins already have it.
  • Jellyfin has hardware options of its own. On a Jellyfin-only server with a spare Intel or AMD GPU, its own settings may be enough. See Faster Jellyfin trickplay generation.

Which should you use?

  • One server, a small or slowly growing library, and waiting overnight is fine: use the built-in.
  • Jellyfin only: first try Jellyfin's hardware decoding, key-frame-only extraction and a higher thread count. Move to this project if a backlog still takes too long, or you want the work on another machine.
  • Plex with a large backlog, or new files that should have previews within minutes: use this project. See Plex preview thumbnails with a GPU.
  • Two or more servers holding the same files: use this project. Each file is decoded once, not once per server.
  • Emby with a large library: use this project if your storage is fast enough to keep a GPU busy. If disks are the bottleneck, neither option will be fast. See Emby BIF thumbnails.
  • HDR or Dolby Vision thumbnails look wrong: see HDR and Dolby Vision thumbnails.
  • Windows with an AMD or Intel GPU, or any Mac: Docker can't reach those GPUs, so this project runs on CPU there. The built-in is simpler unless you run the container on a Linux host.
  • No Docker, or you can't give a container write access to where previews are stored: use the built-in. For Jellyfin, off-media mode needs write access to Jellyfin's config folder instead of the media.
  • You need chapter thumbnails, or intro and credit markers: this project doesn't make them. Use your server's own features.
  • You need a single BIF for a Roku app or one file: a small tool such as bifgen is enough.

Note

Nobody has published a head-to-head speed benchmark between this project and the built-ins. Speed depends on the GPU, codec, storage and frame interval. This project defaults to one frame every 10 seconds, and Plex documents a default of one every 2 seconds P6, so compare at the same interval.

Other tools you may see suggested

  • Emby community plugins. The "MediaInfo for Emby" plugin family added HDR-to-SDR tone mapping for BIF thumbnails. It was later removed once Emby's core did this. E3 An older alpha Windows CLI, "Bif Generator", predates Emby's native BIF support. E6
  • Small BIF CLIs. entrez/bifgen, amankumarsingh77/bif-generator, shell scripts such as this gist, and Roku's biftool. Each makes one BIF from one file. None has a GPU decode path, and none knows where a media server expects the file.
  • Jellyscrub. The Jellyfin plugin that trickplay replaced. It is not maintained after Jellyfin 10.9.0. J5

Sources

All checked 23 September 2026. "User report" means a forum post or issue from a user, not a vendor statement.

This project's own behaviour is documented in Getting Started, the Multi-server guide and HDR & Dolby Vision.