Thumbnail generation fills app storage because the server creates many derivative images and stores them in a writable metadata or cache path.
A media library may keep multi-terabyte videos on an HDD pool while its container maps configuration, metadata, and cache to a much smaller SSD or boot volume. Chapter images, trickplay previews, posters, backdrops, and temporary extraction files then grow with library runtime and generation settings rather than source-file size alone. The safe fix begins by identifying the exact derivative type and path before deleting anything the database still expects.
Locate the Directory That Is Actually Growing
Measure the media application’s configuration, cache, metadata, transcode, and temporary directories separately. Sort subdirectories by allocated size and recent modification time while a thumbnail task runs.
Chapter-image extraction is explicitly described by Jellyfin’s interface strings as slow, resource intensive, and potentially requiring several gigabytes of space.
Confirm whether growth lands in the host bind mount, a named volume, or the container writable layer. If the container layer grows, correct persistence before cleanup; otherwise the space can disappear from the app view while still consuming Docker’s system storage.
Identify Which Image Feature Created the Files
Separate ordinary posters and backdrops from chapter images, trickplay previews, video-preview thumbnails, intro markers, and plugin-generated artwork. Each feature has a different trigger and retention rule.
Trickplay creates repeated visual samples across a video timeline so clients can show previews while seeking. The resulting image grids scale mainly with total runtime, sampling interval, resolution, quality, and tile layout rather than whether the source is 1080p or 4K.
Run one scheduled task manually while watching the target directory. Match new filenames and database entries to the feature that produced them. Do not disable all metadata providers when only one preview task is responsible.
Check Interval, Resolution, Quality, and Library Scope
Record the thumbnail width, sampling interval, JPEG or WebP quality, tile dimensions, thread count, and libraries included in generation. Shorter intervals and larger images create more stored pixels per hour of video.
Generation can also restart after a setting change or upgrade. A Jellyfin issue describes users who could not stop previously generated trickplay data from returning because disabling the feature did not clean existing output.
Change one setting on a small test library and compare bytes generated per hour of media. Use that measured ratio to estimate the complete library before launching another full extraction task.
| Setting change | Likely storage effect | Tradeoff |
|---|---|---|
| Longer sampling interval | Fewer images | Less precise seek previews |
| Lower thumbnail width | Smaller files | Softer TV preview images |
| Lower image quality | Smaller files | More compression artifacts |
| Narrower library scope | Less total storage | No previews for excluded libraries |
Select settings that fit the real client screens and seek behavior rather than generating the highest-quality derivative for every title.
Look for Stale or Orphaned Thumbnail Sets
Compare active media items with generated directories after files are replaced, renamed, moved, or removed. Old preview sets may remain when the new file receives a different item ID or output name.
A Jellyfin report shows outdated trickplay images stored beside media were not deleted when replacement previews were generated, leaving stale trickplay data beside the current set.
Use the application’s supported cleanup task first and verify a backup of the metadata database. If manual removal is necessary, test one orphaned item and refresh it before deleting large directory trees whose references are unknown.
Verify Whether Images Belong in App Storage or Beside Media
Some media servers can save artwork or trickplay data next to the library, while others keep database-linked derivatives inside app metadata. Moving the location changes backup, permissions, migration, and read-only media behavior.
Saving previews beside media can improve migration portability, but it can also multiply small files on a large HDD share and require write access to the library. One Jellyfin migration issue shows that locally stored trickplay files may not transfer cleanly between instances.
Keep database-bound and high-churn derivatives on a deliberately sized app volume unless the application fully supports portable local images. Keep the media share read-only when write access is not required for the chosen layout.
Move the App Volume Without Splitting Its Database State
If the settings are reasonable but the app volume is undersized, stop the media server and move the complete configuration, metadata, and cache units according to the container’s persistent mount design. Preserve ownership, ACLs, database files, and symbolic links.
The ZimaSpace article on SSD app volumes for metadata and thumbnails explains why these small-file workloads benefit from fast storage while large source media can remain on HDDs.
Do not move only the largest image folder while leaving database paths behind unless the application supports that split. Start the migrated instance in isolation and confirm old thumbnails resolve before generating new ones.
Clean Up Safely and Establish a Growth Baseline
Pause thumbnail tasks, back up the application database, and record the current file count and bytes by derivative type. Remove only confirmed stale output or use the application’s supported deletion and regeneration controls.
A filled SSD can affect more than thumbnails. A Jellyfin issue links an exhausted SSD with suspected database damage and an incomplete library view, showing why free-space exhaustion can threaten app state.
After cleanup, run generation on one library, measure daily growth, and set alerts before the app volume reaches its reserve threshold. The repair is complete when expected previews work, stale data no longer returns, and storage growth matches the chosen interval, resolution, quality, and library scope.
Support & Tips
More to Read

Can Plex Share a GPU With Another Docker Container?
Plex and another container can often access the same GPU, but you must test driver support, device mapping, video-engine load, memory, and recovery behavior.

How to Tell Whether a Plex Error Comes From the Client or Server
Reproduce the same item on another client, compare the session path, then collect server evidence only after scope tells you where the failure actually...

How to Configure Plex Cache and Transcode Temporary Storage
Protect persistent Plex state while placing transcode temp files on suitable local storage, then verify cleanup, free space, and restart behavior.

